精华内容
下载资源
问答
  • 物体定位
    2020-12-06 05:56:30

    流水线上物体定位识别分类,并用机械臂抓取分类

    传感器:摄像头,3D激光扫描摄像头

    流水线物体:主要是各种形状不规则的塑料,纸张等,包括各种塑料袋,塑料绳,透明塑料薄膜,塑料膜具;报纸,白纸,杂志,纸箱等。一共约不超过50类有些需

    要根据颜色和透明度分类。

    要求

    1.通过传统和深度学习技术,根据传感器数据识别物体(包括层叠后露出部分的物体),在数据中检测出边缘,确定具体类别(和抓取位置),例如属于面包包装塑料袋。

    2.通过传统和深度学习技术,训练机械臂抓取流水线上的物体,并放到流水线旁各种物体分类对应的箱子里,每个机械臂可对应围绕它旁边6种不同种类的箱子。要求每次抓取运送时间小于2秒。机械臂可在电脑模拟环境进行训练,成功后转到真实场景。机械臂可进行离线和在线训练。机械臂可根据抓取结果自行修正进行自主训练(离线在线都可)。

    3.系统可根据流水线上物体多少和分类速度自行调整流水线速度(流水线本身速度可调)。 系统提供相应通讯及软件设置交互界面。系统具有工业实用性,运行稳定可靠。技术支持一年。

    4.要求有流水线物体识别和机械臂抓取及深度学习的相关经验,项目周期半年,地点不限,属于算法软件开发,(帮助机械臂选型,机械臂费用不包在内)。有意请联系QQ ,请回复以往案例,简单设计思路,报价和工期。非诚勿扰(谢绝转包)。

    更多相关内容
  • 由于毫米波的敏感性极强,物体的微小移动也可以被毫米波所感知,体现为频谱变化,借助此优势提出了一种基于毫米波感知的小型无源物体定位追踪方法,可以实现对目标物体的高精度定位与追踪。与传统的有源物体定位追踪...
  • #资源达人分享计划#
  • #资源达人分享计划#
  • 基于YOLO的目标检测, 对十种物体进行识别和定位
  • Meanshift均值漂移算法,图像中的物体进行跟踪定位
  • 提出了一种只对相机水平偏角进行现场校准的标定方法用于野外远距离、大视场、双目视觉物体定位监测系统的快速标定。该方法通过合理考虑视觉传感器的调平装置,结合现场使用过程中相机焦距值固定的特点,简化了测量模型...
  • 机器人抓取中物体定位算法概述

    千次阅读 多人点赞 2020-05-05 19:10:29
    这个过程可以分为三个层次,分别为物体定位但不识别、物体检测、物体实例分割。物体定位但不识别是指获得目标物体的2D/3D范围但是不知道物体的类别;目标检测是指得到目标物体的2D/3D包围盒,同时识别目标物体的类别...

    本文同步于微信公众号:3D视觉前沿,欢迎大家关注。

    1. 引言

    机器人抓取的首要任务,是确定要抓什么,也就是需要定位目标物体在输入数据中的位置。这个过程可以分为三个层次,分别为物体定位但不识别、物体检测、物体实例分割。物体定位但不识别是指获得目标物体的2D/3D范围但是不知道物体的类别;目标检测是指得到目标物体的2D/3D包围盒,同时识别目标物体的类别;目标实例分割提供目标物体所占有的像素或者点级别的区域信息,同时识别目标物体的类别。本文来自论文https://arxiv.org/abs/1905.06658,涉及的论文也都可以在论文中找到,也包含于https://github.com/GeorgeDu/vision-based-robotic-grasping,本文就不引用了。

    2. 定位但不识别

    当不知道目标物体的类别时,仍然可以采用一些方法获得目标物体的2D/3D区域,进而支撑机器人抓取。当我们知道物体的外轮廓形状时,可以采用拟合形状基元的方法。当我们什么信息都没有时,可以采用显著性物体检测方法,获得潜在可能的待抓取物体区域。

    2.1 基于2D RGB图像的方法

    在这里插入图片描述
    图1 基于2D图像的定位但不识别方法

    a.拟合形状基元: 目标物体的形状可以是一个椭圆、一个多边形或者一个四边形,这些2D形状可以看作是形状基元,通过拟合方法,可以定位到目标物体。该方法的一般步骤为先提取出图像的所有封闭轮廓,其次再用拟合方法得到潜在的可能目标物体,如果存在多个候选,可以使用模板匹配去除干扰。在OpenCV中已经集成了例如拟合椭圆、拟合多边形这样的函数。

    b.显著性区域检测: 和特定形状基元相比,显著性区域可以是任意形状。2D显著性区域检测的目的是定位和分割出给定图像中,最符合视觉显著性的区域,这更像一个分割任务。非深度学习的方法主要挖掘低层次的特征表示,或者依据一些经验例如颜色对比、形状先验来得到显著性区域。基于深度学习的方法主要包括基于多层感知机(MLP)的方法,基于全卷积网络(FCN)的方法和基于胶囊网络的方法。

    在目前的机器人抓取任务中,该方法仍处在初级阶段。在工业领域,如果待抓取物体形状固定且轮廓清晰,可以采用拟合形状基元的方法。在另外一些机器人抓取任务中,如果背景的颜色信息和目标物体的颜色信息差别较大,也可以去除背景得到目标物体。在Dex-Net2.0中,目标物体放置在绿色背景的桌面上,通过背景颜色分离,可以得到目标物体。

    2.2 基于3D点云的方法

    在这里插入图片描述
    图2 基于3D点云的定位但不识别方法

    a.拟合3D形状基元: 目标物体的形状可以是一个球体、圆柱体或者长方体,这些3D形状可以看作是3D形状基元。存在很多方法能够拟合,包括随机采样点一致(RANSAC)算法,基于霍夫投票(Hough Voting)的方法以及一些其他的聚类算法。针对机器人抓取任务,输入数据是单个视角下不完整的点云,目标是找到一部分点云,使得这些点云能够组合成某一个3D形状基元。一些方法针对输入的点云拟合平面并进行装配组合;一些方法使用长方体拟合室内场景数据;一些方法通过霍夫变换提取点云中的圆柱体,还有一些方法先把背景分割掉,然后对剩下的多个目标物体再拟合形状。

    b.3D显著性区域检测: 这类包括基元RGB-D数据的方法和基元3D点云的方法。RGB-D显著性检测方法通过人工设计的或者基于深度学习的方法提取特征并进行融合。基于3D点云的方法主要是提取一个完整物体点云的显著性图谱,而针对机器人抓取任务中是要从3D输入中得到目标物体的3D点区域。一些方法首先去除背景3D点,之后依赖3D特征如曲率等对显著性进行评分,得到显著性区域。

    在目前的抓取任务中,该方法被广泛使用,但仍处在初级阶段。通常都在结构化的场景中,利用先验去除背景包含点云(可以利用高度信息,也可以将当前输入和已有的背景3D模型配准去除背景),之后对于多个目标物体包含的点云进行聚类或者拟合,得到目标物体包含的3D点云。

    3. 目标检测

    当我们知道要抓取的目标物体的类别时,可以使用2D/3D目标检测以及实例分割算法,获得目标物体的2D/3D包围盒区域或者Mask区域。这里先介绍物体检测算法。目标物体检测是指不仅要定位出目标物体的位置,还要识别出物体的类别,位置通常用2D/3D最小包围盒表示。根据是否生成区域候选,目标检测的方法可以分为两阶段法(Two-stage Method)和单阶段法(One-stage Method)。

    3.1 2D目标检测

    在这里插入图片描述
    图3 基于2D图像的目标检测方法

    a.两阶段法: 这类方法也称为基于区域候选(Region proposal-based)的方法。大多数传统方法使用滑动窗口策略获得候选包围盒,然后使用包围盒内的特征描述进行识别。大量人工设计的2D描述符,例如SIFT, FAST, SURF, ORB等,常被使用来训练分类器,例如使用神经网络,SVM,Adaboost等。传统方法的缺陷在于需要根据特定物体设定滑动窗口的大小,而且人工设计的特征表征能力不强,不足够支撑一个很强的分类器。

    随着深度学习的发展,深度神经网络能够用于计算候选区域,而且能够提取表征能力更强的特征描述符,训练的分类器能力更强(R-CNN)。不仅如此,深度神经网络基于候选区域学习到的特征向量可以直接回归物体的类别,比训练分类器得到了更好的识别效果(Fast R-CNN)。Faster R-CNN进一步提出了候选区域生成网络,允许端到端训练整个目标检测网络。一般而言,两阶段法得到的精度相对较高,但是需要更多的计算资源和计算时间。

    b.单阶段法: 这类方法也称为基于回归(Regression-based)的方法。这类方法跳过了候选区域生成步骤,直接在一次估计中预测包围盒以及类别得分。YOLO是代表性单阶段方法,划分网格并同时预测多个包围盒和类别概率。不过由于每个网格只回归两个包围盒,算法不适合小物体。SSD能够为固定集合的锚点包围盒(anchor boxes)预测类别得分和包围盒偏移,比YOLO效果要好。YOLOv2也使用了锚点滑动窗口,效果比YOLO提升。RetinaNet提出了focal loss损失函数用于训练,达到了和两阶段算法相当的精度但速度更快。YOLOv3基于YOLOv2进行了一些优化,达到了更好的效果。此外,存在不使用锚点的单阶段方法,例如FCOS、CornerNet、ExtremetNet、CenterNet等,直接预测单个点处潜在物体的类别概率,以及距离完整包围盒的相对位置。

    3.2 3D目标检测

    2D目标检测预测的包围盒,能够将物体在2D空间占据的区域完全包含。而3D目标检测旨在寻找到目标物体在3D空间中的完整(amodel)3D包围盒,也即完整的3D物体的最小外接长方体。通常获取的数据是单个视角下的RGB-D数据,通用的3D检测算法都可以使用。但由于目前仅基于RGB进行3D检测与基于3D点云进行3D检测的效果差别较大,本文主要面向机器人抓取领域,因此这里只介绍基于点云的3D检测方法。
    在这里插入图片描述
    图4 基于3D点云的目标检测方法

    a.两阶段法: 这类方法也称为基于区域候选(Region proposal-based)的方法。传统的3D检测方法主要针对已知形状的物体,3D检测问题就转化为了物体的6D位姿估计问题。此时,可以寻找3D特征点之间的对应,将已有物体和观测数据进行配准,也可以进行基于RANSAC的对齐完成全局配准。然而这些方法要求观测的实例和已有物体模型几何结构一致,不适用于通用物体3D检测。通用的3D检测任务和2D检测任务类似,也广泛使用3D区域候选。传统方法使用人工设计的3D特征,例如Spin Images, 3D Shape Context, FPFH, CVFH, SHOT等,训练诸如SVM之类的分类器完成3D检测任务,代表方法为Sliding Shapes。

    随着深度学习的发展,3D区域候选可以被有效地生成,而且3D包围盒可以被直接回归得到,而不必训练分类器。生成3D区域候选的方法,大致可以分为三类:基于截锥体(frustum-based)的方法,基于全局回归(global regression-based)的方法和基于局部回归(local regression-based)的方法。基于截锥体的方法是指使用成熟的2D目标检测算法来获取物体的3D候选区域,方法最为直接。Frustum PointNets使用2D检测器获得物体的2D区域,对应3D空间是一个截锥体,对里面的点云基于PointeNet进行语义分割,再用MLP回归得到最终的3D包围盒信息;FrustumConvNet对由2D区域得到的3D截锥体进一步划分成多个3D候选区域。基于全局回归的方法根据基于单源或多源输入学习到的特征描述,直接回归得到3D区域候选。Deep Sliding Shapes提出了第一个3D候选区域生成网络,并且结合物体识别网络来回归3D包围盒;MV3D融合多源信息预测3D候选;MMF进行多特征多传感器融合,完成3D检测任务;PartA2使用encoder-decoder网络,对输入的点云预测物体部位的相对位置,预测3D候选包围盒。基于局部回归的方法是指产生逐点的3D区域候选。PointRCNN从输入点云中提取逐点的特征向量,对分割得到每一个前景点,生成3D候选。这些候选经过池化以及正则优化得到最终结果。STD设计了球形锚点生成基于点的候选,并进一步生成稠密的候选包围盒的特征描述,预测最终的包围盒。VoteNet提出深度霍夫投票策略,对采样的每个3D种子点,生成对应的3D投票点,并进一步聚类得到候选包围盒。IMVoteNet结合2D图像,进一步提升了VoteNet的精度。

    b.单阶段法: 这类方法也称为基于回归(Regression-based)的方法,通过单个网络直接预测3D包围盒及其类别概率,不需要生成候选3D包围盒以及后处理。VoxelNet将输入点云划分成3D voxels,并且将每个voxel内的点云学习一个统一的特征表示,再用卷积层和候选生成层得到最终的3D包围盒。SECOND相比于VoxelNet,使用稀疏卷积层来划分紧致的体素特征。PointPillars将点云转换成一个稀疏的伪图像,再结合2D卷积网络和检测头预测3D包围盒。以上主要是基于体素的单阶段3D检测器,3DSSD是基于点云的3D检测器,使用了一种融合采样策略,一个候选生成层和一个锚点无关的回归层,实现了精度和速度的平衡。

    3D检测能够提供目标物体的大致位置,主要应用在无人车领域,但不足够支撑复杂的抓取。目前的通用3D检测只预测一个平面上的3D包围盒的1个旋转角度,范围在0度-180度(原地旋转180度,包围盒位置朝向不变),假定物体结构复杂,例如带柄水杯,只给一个中心加旋转角度是不知道如何去抓的。但是3D包围盒能够提供大致的物体抓取位置,而且能够用于机械臂移动避障。

    4. 物体实例分割

    进行目标检测只能得到矩形框区域,而一些任务需要只属于目标物体的区域,这就需要进行实例分割。物体实例分割是指检测到特定类别物体的逐像素或者逐点的实例,这项任务与目标检测和语义分割极其相关。实例分割算法也分为两阶段法和单阶段法,两阶段法先生成区域候选,单阶段法直接回归。

    4.1 2D实例分割

    在这里插入图片描述
    图5 基于2D图像的实例分割方法

    a.两阶段法: 这类方法也称为基于区域候选(Region proposal-based)的方法。成熟的2D检测器常被用来生成包围盒或者区域候选,在他们内部可以进一步计算物体的mask区域。许多方法都基于CNN。SDS使用CNN来识别类别无关的区域候选;MNC通过三个网络进行实例分割;PANet提出路径增强网络提升实例分割效果 ;Mask R-CNN通过增加额外的分支预测物体的mask扩展了Faster R-CNN;HTC对目标检测结果和分割结果进行层叠式优化;PointRend通过迭代细分策略进一步增强了细节的分割效果。

    b.单阶段法: 这类方法也称为基于回归(Regression-based)的方法,同时预测分割的mask和存在物体的得分。DeepMask, SharpMask和InstanceFCN为位于中心的物体预测mask;FCIS进行实例级语义分割,能够预测位置敏感的得分进行物体分割和检测;TensorMask在空间域使用结构化的4D张量代表masks,能够预测稠密的masks;YOLACT将实例分割分成两个平行的子任务,即生成一些列原型masks并且预测每个实例mask的系数;YOLACT是第一个实时的单阶段实例分割算法,后续有改进版YOLACT++;PolarMask利用极坐标系,预测实例物体的中心和稠密距离,得到实例物体的轮廓;SOLO引入实例类别的概念,依据每个实例的位置和大小,赋予属于实例物体的每个像素一个类别,将实例分割问题转换成分类问题;CenterMask在目标检测算法FCOS的基础上增加了SAG-Mask分支;BlendMask也基于FCSO,使用了一个渲染模块来预测位置敏感的特征,并且学习每个实例物体的注意力图。

    2D实例分割在机器人抓取应用中被广泛使用,如果场景中同一个类别的物体只有一个实例,语义分割也可以。由于输入是RGB-D图像,有了RGB分割结果,可以快速得到对应Depth图像,得到目标物体的3D点云。例如,SegICP使用基于RGB的2D目标分割算法获得只属于目标物体的点,再使用配准方法得到目标物体的6D位姿。很多方法也结合Depth输入共同完成目标分割任务。

    4.2 3D实例分割

    在这里插入图片描述
    图6 基于3D点云的实例分割方法

    a.两阶段法: 这类方法也称为基于区域候选(Region proposal-based)的方法。一般的方法借助2D/3D检测结果,再对对应3D截锥体或者包围盒区域进行前后景分割得到目标物体的点云。GSPN提出通用形状候选网络生成3D物体的候选区域,进一步使用区域PointNet进行3D物体的实例分割;3D-SIS使用2D和3D融合特征进行3D物体包围盒检测以及语义实例分割。

    b.单阶段法: 这类方法也称为基于回归(Regression-based)的方法。很多方法学习如何归类逐点的特征来完成3D实例分割。SGPN提出了相似群候选网络来预测合并后的候选,并给每个候选一个对应的语义类别,也就完成了3D实例分割;MASC使用子空间稀疏卷积预测每个点的语义得分以及邻近点在不同尺度下的紧密关系得分,基于此可以合并得到实例分割结果;ASIS学习具有语义的逐点级别的实例嵌入,之后属于同一个实例的语义特征再进行融合;JSIS3D提出了一个多任务的逐点的网络结构,能够同时预测3D点属于的物体类别,并且将3D点嵌入为更高维的特征向量,进一步聚类得到物体实例;3D-BoNet能够回归所有实例的3D包围盒,同时预测每个实例的逐点的mask;LiDARSeg提出了一种稠密的特征编码框架以及有效的策略解决类别不平衡问题。

    3D实例分割在机器人抓取应用中非常重要,如果场景中同一个类别的物体只有一个实例,语义分割也可以。当前常用的做法仍然是利用成熟的2D分割算法,对应到深度图获取3D点云,但是在其分割效果不如直接在3D点云上进行实例分割。随着算法效果和性能的提升,3D实例分割会在未来广泛使用。

    5. 总结

    给定机器人抓取场景,目前总能找到合适的技术方案来定位目标物体的位置,进而执行后续的物体位姿估计以及机器人抓取位姿估计等任务,但仍存在一些问题。定位但不识别的算法,要求物体在结构化的场景中或者物体与背景具有显著性差异,这些都有益于算法提取出目标物体,这就限制了应用场景;实例级目标检测算法,需要实例级目标物体的大量训练集,而且训练好的检测算法只在训练集上检测精度高;如果需要对新物体进行检测,需要再采集大量的数据进行重新训练,这个过程非常耗时耗力;通用的目标检测算法,泛化能力强,但其精度达不到实例级目标检测算法。实例分割算法也面临同样的问题。对大量训练数据集的需求以及泛化性能差,也是深度学习算法的通用性问题。不过针对限定场景下特定的一些物体,当前算法已经能够得到非常好的满足落地需求的结果。

    展开全文
  • Zijlstra,F.,Bouwman,JG,Braškute,I.,Viergever,MA和Seevinck,PR(2017),基于快速傅立叶的稳态梯度回波MRI中非共振伪像的仿真,应用于金属物体定位。 真是的雷森Med,78:2035-2041。 doi:10.1002 / mrm...
  • python实现物体定位

    千次阅读 2020-12-09 07:04:24
    实验的内容是:使用卫星定位信息接收器,接收物体的位置信息(包括经度纬度等等),然后解析这些数据,然后根据经度纬度等信息通关百度地图API获取物体的具体位置信息,实现对物体定位!我使用的开发语言重要是...

    标签:

    前段时间利用实验室的器材写了一个小小的项目,简单的整理了一下(并不完善),现在分享一下。实验的内容是:使用卫星定位信息接收器,接收物体的位置信息(包括经度纬度等等),然后解析这些数据,然后根据经度纬度等信息通关百度地图API获取物体的具体位置信息,实现对物体的定位!

    我使用的开发语言重要是python,主要的有:serial串口通信,MySQLdb库,urllib2库,httplib库等等。下面就开始简单的说说实验中的问题。

    1.首先使用的串口通信接收卫星接收器传出来的信息,我使用串口助手看了一下接收到的信息的样式,大概如下:

    上图就是实验过程中的数据部分,我主要提取出来的是时间,海拔,经度,维度等信息。可以看出这些数据并不是单独成行的所以我需要将他们一个一个的提取出来(这并不是很难),然后利用经度纬度信息,使用百度地图API提供的地址解析服务获取物体的具体位置的描述,我使用的是一个HTTP服务,返回的是一个json的格式的位置信息,我事先测试库一下,返回的json格式的位置信息大概如下所示:

    然后我从中获取具体位置描述信息,然后将它保存到数据库中。另外在试验中我使用了两张表,一张记录从从串口提取出来的信息,一张保存解析后的位置信息,而这两张表有相同的一项,就是时间,表的内容后面我会以图片的形式放出来。下面就附上我的代码,然后给出实验的结果。

    # coding:utf8

    '''

    Created on 2016年6月14日

    @author: zou

    '''

    import serial

    import MySQLdb

    import urllib2

    import urllib

    import httplib

    import json

    import time

    ser = serial.Serial('COM4',9600)

    ######################################################

    def recv(serial):

    data=''

    while True:

    tmp = serial.read(1)

    if tmp == '\n':

    break

    else:

    data += tmp

    return data

    ######################################################

    def GetInfo(Str):

    info = []

    tmp = Str[7:]

    strs=''

    for ch in tmp:

    if ch == '\n':

    return

    else:

    if ch == ',':

    info.append(strs)

    strs = ''

    else:

    strs = strs+ch

    return info

    ######################################################

    def getYear(data):

    retdata = ''

    ret = ''

    tail = data

    #print tail

    tail = tail[::-1]

    #print tail

    count = 0

    for ch in tail:

    if count == 3: #616022

    if ch == ',':

    break

    else:

    ret += ch

    elif ch == ',':

    count=count+1

    #print ret

    retdata+=ret[1]

    retdata+=ret[0]

    retdata+=ret[3]

    retdata+=ret[2]

    retdata+=ret[5]

    retdata+=ret[4]

    #print retdata

    return retdata

    ######################################################

    def rightNum(strs,flag):

    ret=''

    if cmp(flag,'t')==0:

    #times 024335.00

    ret=strs[0:2]

    ret+=':'

    ret+=strs[2:4]

    ret+=':'

    ret+=strs[4:6]

    elif cmp(flag,'l')==0:#latitude 3422.99947N

    if int(strs[0:3]) < 180:

    ret=strs[0:3]

    ret+='.'

    ret+=strs[3:5]

    ret+=strs[6:10]

    else:

    ret=strs[0:2]

    ret+='.'

    ret+=strs[2:4]

    ret+=strs[5:9]

    elif cmp(flag,'L')==0:#longitude 10858.95306E

    if int(strs[0:3]) < 180:

    ret=strs[0:3]

    ret+='.'

    ret+=strs[3:5]

    ret+=strs[6:10]

    else:

    ret=strs[0:2]

    ret+='.'

    ret+=strs[2:4]

    ret+=strs[5:9]

    else:

    return None

    return ret

    #########################################################

    def Getlocation(db,ti,la,lo):

    #发送http请求获取具体位置信息

    #import urllib

    url = 'http://api.map.baidu.com/geocoder/v2/'

    ak = 'ak=1aZ2PQG7OXlk9E41QPvB9WjEgq5WO8Do'

    #back='&callback=renderReverse&location='

    back='&location='

    location='34.992654,108.589507'

    output = '&output=json&pois=0'

    url = url + '?' + ak + back + location + output

    temp = urllib2.urlopen(url)

    hjson = json.loads(temp.read())

    locate = hjson["result"]["formatted_address"] #省,市,县

    #print locate

    mapinfo = hjson["result"]["sematic_description"] #详细描述

    #print mapinfo

    #插入数据库

    cur = db.cursor()

    sql="set names utf8"

    cur.execute(sql)

    info=[]

    info.append(ti.encode('utf8'))

    info.append(locate.encode('utf8'))

    info.append(mapinfo.encode('utf8'))

    for val in info:

    print val

    sql = "insert into mapinfo values(%s,%s,%s)"

    try:

    cur.execute(sql,info)

    except:

    print 'Insert mapinfo failed'

    #########################################################

    #mysql , 经度,维度

    db = MySQLdb.connect('localhost','root','',"zou",3306,'utf8')

    cursor = db.cursor()

    cursor.execute("DROP TABLE IF EXISTS Location")

    cursor.execute("DROP TABLE IF EXISTS mapinfo")

    sql="""CREATE TABLE Location(

    Time CHAR(20),

    Latitude CHAR(15),

    Longitude CHAR(15),

    Altitude CHAR(10))"""

    cursor.execute(sql)

    sql = """CREATE TABLE mapinfo(

    time CHAR(20),

    local CHAR(100),

    info CHAR(100))"""

    cursor.execute(sql)

    '''

    #mysql , 位置描述信息

    #database = MySQLdb.connect('localhost','root','',"zou",3306)

    #curkey = database.cursor()

    #curkey.execute("DROP TABLE IF EXISTS mapinfo")

    msql = """CREATE TABLE mapinfo(

    time CHAR(20),

    local CHAR(100),

    info CHAR(100))"""

    curkey.execute(msql)

    '''

    ##################################################################

    Locat = [] ####

    #提取20项数据

    count=0

    while count<10:

    Info=[]

    year=''

    #如果输出为 $GPGGA 开头,则这一行表示的是位置信息

    for val in range(0,8):

    data = recv(ser)

    tmp = data[0:6] #截取前6个字符

    if cmp(tmp,'$GPRMC') == 0:

    #print data

    tmpyear = data[50:]

    year = getYear(tmpyear)

    #print year

    elif cmp(tmp,'$GPGGA') == 0: #条件满足的话就截取

    #print data

    Info = GetInfo(data)

    if Info == []:

    break

    value=[]

    ti = year

    ti += '-'

    t = rightNum(Info[0],'t')

    ti += t

    #print ti

    value.append(ti)

    la = rightNum(Info[1],'l')

    value.append(la)

    lo = rightNum(Info[3],'L')

    value.append(lo)

    al = Info[8]

    value.append(al)

    #print value

    sql = "insert into Location values (%s,%s,%s,%s)"

    try:

    cursor.execute(sql,value)

    Getlocation(db,ti,la,lo)

    db.commit()

    except:

    print 'insert error'

    count=count+1

    #print count

    db.close()

    ############################################################

    #关闭端口

    ser.close()实验的结果如下:

    相应的两张表的内容如下:

    到这里这个实验的内容说完了,大家若是有什么问题的话欢迎给我留言。

    标签:

    展开全文
  • 物体定位探测电路原理图.docx
  • 一种基于RFID标签的室内移动物体定位方法,吴健,,在室内定位领域,RFID技术是最被广泛利用的室内定位技术,它不仅读写范围广,穿透性强,使用寿命长,而且成本低廉。世界各地的研��
  • (基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计:综述) 1 引言 找到理想抓取配置的抓取假设的子集包括:机器人将执行的任务类型、目标物体的特征、关于物体的先验知识类型、机械爪类型...

    Real-Time Deep Learning Approach to Visual Servo Control and Grasp Detection for Autonomous Robotic Manipulation

    (基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计:综述)

    1 引言

    • 找到理想抓取配置抓取假设子集包括:机器人将执行的任务类型、目标物体的特征、关于物体的先验知识类型、机械爪类型,以及最后的抓取合成
    • 注:从本文中可以学习到视觉伺服的相关内容,用于对动态目标跟踪抓取自动调整观察姿态,因为观察的角度不同,预测的抓取框位置也不同,抓取物品离相机位置越近,抓取预测越准

    1.1 抓取综合方法

    • 抓取综合方法是机器人抓取问题的核心,因为它涉及到在物体中寻找最佳抓取点的任务。这些是夹持器必须与物体接触的点,以确保外力的作用不会导致物体不稳定,并满足一组抓取任务的相关标准。
    • 抓取综合方法通常可分为分析法基于数据的方法
    • 分析法是指使用具有特定动力学行为的灵巧且稳定的多指手构造力闭合
    • 基于数据的方法 建立在按某种标准的条件下,对抓取候选对象的搜索对象分类的基础上。(这一过程往往需要一些先验经验)

    1.2 基于视觉的机器人抓取系统

    • 基于视觉的机器人抓取系统一般由四个主要步骤组成,即目标物体定位、物体姿态估计、抓取检测(合成)和抓取规划
    • 一个基于卷积神经网络的系统,一般可以同时执行前三个步骤,该系统接收对象的图像作为输入,并预测抓取矩形作为输出
    • 抓取规划阶段,即机械手找到目标的最佳路径。它应该能够适应工作空间的变化,并考虑动态对象,使用视觉反馈。
    • 目前大多数机器人抓取任务的方法执行一次性抓取检测,无法响应环境的变化。因此,在抓取系统中插入视觉反馈是可取的,因为它使抓取系统对感知噪声、物体运动和运动学误差具有鲁棒性。

    2 抓取检测、视觉伺服和动态抓取

    • 抓取计划分两步执行。首先作为一个视觉伺服控制器,以反应性地适应对象姿势的变化。其次,作为机器人逆运动学的一个内部问题,除了与奇异性相关的限制外,机器人对物体的运动没有任何限制。

    2.1抓取检测

    • 早期的抓取检测方法一般为分析法,依赖于被抓取物体的几何结构,在执行时间和力估计方面存在许多问题。此外,它们在许多方面都不同于基于数据的方法
    • 基于数据的方法Jiang、Moseson和Saxena等人仅使用图像,从五个维度提出了机器人抓取器闭合前的位置和方向表示,如下图,该五维表示足以对抓取姿势的七维表示进行编码[16],因为假定图像平面的法线近似,因此三维方向仅由θ给出。
      在这里插入图片描述
    • 本文的工作重点是开发一种简单高效的CNN,用于预测抓取矩形。在训练和测试步骤中,所提出的网络足够轻,可以联合应用第二个CNN,解决视觉伺服控制任务。因此,整个系统可以在机器人应用中实时执行,而不会降低两项任务的精度。

    2.2 视觉伺服控制

    • 经典的视觉伺服(VS)策略要求提取视觉特征作为控制律的输入。必须正确选择这些特征,因为控制的鲁棒性与此选择直接相关。
    • 最新的VS技术探索了深度学习算法,以同时克服特征提取和跟踪、泛化、系统的先验知识以及在某些情况下处理时间等问题。
    • Zhang等人开发了第一项工作,证明了在没有任何配置先验知识的情况下,从原始像素图像生成控制器的可能性。作者使用Deep Q-Network ,通过深度视觉运动策略控制机器人的3个关节,执行到达目标的任务。训练是在模拟中进行的,没有遇到真实的图像。
    • 遵循强化学习方法的工作使用确定性策略梯度设计新的基于图像的VS或Fuzzy Q-Learning,依靠特征提取,控制多转子空中机器人。
    • 另一种方法中,一些研究视觉伺服深度学习的工作是通过卷积神经网络进行的。CNN的泛化能力优于RL,因为RL学习的参数是特定于环境和任务的。.
    • 本文设计了四种卷积神经网络模型作为端到端视觉伺服控制器的潜在候选。网络不使用参考图像和当前图像以外的任何类型的附加信息来回归控制信号。因此,所提出的网络作为实际上的控制器工作,预测速度信号,而不是相对姿态。

    2.3 动态抓取

    • 学习感知行为的视觉表征,遵循反应范式,直接从感觉输入生成控制信号,无需高级推理,有助于动态抓取。
    • 强化学习方法适用于特定类型的对象,并且仍然依赖于某种先验知识,因此,最近大量研究探索了将深度学习作为解决闭环抓取问题的方法。
    • Levine等人提出了一种基于两个组件抓取系统第一部分预测CNN,其接收图像和运动命令作为输入,并输出通过执行这样的命令,所产生的抓取将是令人满意的概率。第二个部分视觉伺服功能。这将使用预测CNN来选择将持续控制机器人成功抓取的命令。这称为是深度强化学习,需要很久的训练时间。
    • 2019年,Morrison, Corke 和 Leitner 开发了一种闭环抓取系统,在这种系统中,抓取检测和视觉伺服不是同时学习的。作者使用完全CNN获取抓取点,并应用基于位置的视觉伺服,使抓取器的姿势与预测的抓取姿势相匹配。

    3 本文实现的方法

    • VS目的是通过将相机连续获得的图像与参考图像进行比较,引导操纵器到达机器人能够完全看到物体的位置,从而满足抓取检测条件。因此,该方法的应用涵盖了所有情况,其中机器人操作器(相机安装在手眼模式下)必须跟踪和抓取对象。
    • 系统包括三个阶段设计阶段、测试阶段和运行阶段第一个基于CNN架构的设计和训练,以及数据集的收集和处理。在第二阶段,使用验证集获得离线结果,并根据其准确性、速度和应用领域进行评估第三阶段涉及在机器人上测试经过训练的网络,以评估其在实时和现实应用中的充分性。
    • 运行阶段,系统运行的要求是事先获得目标对象的图像,该图像将被VS用作设定点。只要控制信号的L1范数大于某个阈值,则执行控制回路。
      在这里插入图片描述
    • 单个参考图像作为视觉伺服CNN输入之一呈现给系统。相机当前获取的图像作为该网络的第二个输入,并作为抓取CNN输入。这两个网络都连续运行,因为抓取CNN实时预测矩形以进行监控,VS网络执行机器人姿势实时控制
    • VS CNN预测一个速度信号,该信号乘以比例增益λ,以应用于相机中。机器人的内部控制器寻找保证相机中预测速度关节速度。在每次循环执行时,根据机器人的当前位置更新当前图像,只要控制信号不收敛,该循环就会重复。
    • 当满足停止条件时,抓取网络的预测映射到世界坐标系。机器人通过逆运动学得到并到达预测点,然后关闭夹持器。

    3.1 网络体系结构

    在这里插入图片描述

    • 该卷积网络架构被用于抓取检测。网络接收224×224×3的RGB图像作为输入无深度信息
    • layer 132个3×3卷积组成,layer 2 包含164个卷积。在这两种情况下,卷积运算都是通过步长2和零填充(zero-padding)执行的,然后是批标准化(batch normalization)和2×2最大池化layer 3 包含96个卷积,其中卷积使用步长1和零填充执行,然后仅执行批标准化layer 4 ,也是最后一层,卷积层由128个卷积组成,以步长1执行,然后是2×2最大池化。
    • 最后一层卷积之后,生成的特征映射在包含4608个元素的一维向量中被展开。进一步传递到两个全连接(FC)层,每个层有256个神经元。在这些层次之间,训练期间考虑50%的dropout rate
    • 最后,输出层5个神经元组成,对应于编码抓取矩形的**(x,y,w,h,θ)值。在所有层中,使用的激活函数都是ReLU**,但在输出层中使用线性函数的情况除外。

    3.2 Cornell 抓取数据集

    • 为了对数据集真值进行编码,使用四个顶点的x和y坐标编译抓取矩形。
      在这里插入图片描述
    • Xc和Yc参数分别表示矩形中心点的X和Y坐标,可从以下公式获得:
      在这里插入图片描述
    • 计算夹持器开口w和高度h,同样更具四个顶点计算:
      在这里插入图片描述
    • 最后,表示夹持器相对于水平轴方向的θ由下式给出:
      在这里插入图片描述

    3.3 结果评估

    • 预测矩形(rp)和真值矩形(rc)之间的角度θ差必须在30度以内。
    • 雅卡尔指数(交并比)需大于0.25,不用达到一般的0.25 即可

    3.4 视觉伺服网络体系结构

    • 与抓取不同,设计用于执行机械手视觉伺服控制的网络接收两个图像作为输入,并且必须回归六个值,考虑到线性角度相机速度,这些值也可以分为两个输出。共有四个模型处理VS任务。
    • 模型1-直接回归(最终实验效果最佳)。它基本上与抓取网络相同除了第三卷积层中包含最大池化和不同的输入维度,这导致特征图上的比例差异相同。
      在这里插入图片描述
    • 模型2-任务特定回归。网络输入被串联,第三组特征图由两个独立的层序列处理(多任务网络)。因此,网络以两个3D矢量的形式预测6D速度矢量。具体来说,该结构由一个共享编码器和两个特定解码器组成 - 一个用于线速度,另一个用于角速度

    在这里插入图片描述

    • 模型3-串联特征的直接回归和模型4-相关特征的直接回归,两个模型的结构类似,通过关联运算符(∑)区分。模型3简单连接模型4使用相关层
    • 模型3简单地由第三个卷积层产生的特征映射连接,因此第四个层的输入深度是原来的两倍。而模型4有一个相关层,帮助网络找到每个图像的特征表示之间的对应关系。原始相关层是flow network FlowNet的结构单元。
      在这里插入图片描述

    3.5 VS数据集

    • 该数据集能够有效地捕获机器人操作环境的属性,具有足够的多样性,以确保泛化。
    • 机器人以参考姿态为中心高斯分布的不同姿态,具有不同标准偏差(SD)
    • 下表为参考姿势(分布的平均值)机器人假设的标准偏差集(SD)。
      在这里插入图片描述
    • SD选择考虑了机器人在VS期间必须执行的预期位移值。
    • 高SD获得的图像有助于网络了解机器人产生大位移图像空间中产生的变化
    • 当参考图像和当前图像非常接近时,从低SD获得的实例能够减少参考图像和当前图像之间的误差,从而在稳态下获得良好的精度。
    • 平均SD值有助于网络在大部分VS执行期间进行预测。
    • 获得数据后,数据集以**(I,[x,y,z,α,β,γ])的形式构造,其中图像I**,**[x,y,z,α,β,γ]**是拍摄该图像时对应的相机姿态。
    • α, β, γ为泰特-布莱恩角内旋(按照Z-Y-X变换)
    • 已处理数据集的每个实例都采用(Id, Ic,dHc)表示。Id是选择作为所需图像的随机实例;Ic选择另一个实例作为当前图像;dHc是二者的变换。
    • 通过齐次变换矩阵形式表示每个姿势(由平移和欧拉角表示)来实现(0Hc0Hc),然后获得dHc=0Hd-1 0Hc
    • 最后,对于实际上是控制器的网络,其目的是其预测相机的速度信号,即。E控制信号。 (Id, Ic,dHc) 被转化为(Id, Ic,Vc
    • Vc是比例相机速度。由于在确定标记比例速度时不考虑λ增益,因此使用了周期性项,并且在控制执行期间必须对λ增益进行后验调整
    • 速度Vc由dHc表示:
      在这里插入图片描述
    • 其中,R旋转矩阵;**rij**同一矩阵第i行和第j列的元素;c∗tc是与当前相机位置到期望相机位置的平移向量;λ是比例增益(初始设置为1)
    展开全文
  • 机器人基于QR code的物体定位和抓取.pdf
  • 一种基于RFID标签的室内移动物体定位方法.pdf
  • 利用卷积神经网络进行毫米波图像违禁物体定位.pdf
  • 电信设备-一种高精度室内移动物体定位标签.zip
  • 电信设备-基于无线技术的物体定位方法和移动终端.zip
  • 基于opencv的物体定位

    万次阅读 多人点赞 2016-08-17 20:44:32
    近日,我在研究一个图中物体定位系统。本程序用的是OpenCV2.4.9,附带OpenCV3.0。 程序中的原图为我随手拍的一张图片 图中有三个物体,都是蓝色的,我首先取原图的蓝色通道变为灰度图 灰度图经过中值滤波后可以...
  • #资源达人分享计划#
  • 行业分类-设备装置-基于光电传感器的物体定位和抓取平台
  • 电信设备-基于RGBD信息的物体定位方法、装置以及机器视觉系统.zip
  • 电信设备-基于三维地理信息技术的移动物体定位和跟踪技术.zip
  • 【目标检测】CNN物体定位和检测

    万次阅读 多人点赞 2018-08-14 14:15:48
    此篇是看CS231n的课后笔记,方便以后查阅,因为刚开始接触,如果有错误,欢迎指正~ 更多内容关注微信公众号:ML_Study ...定位一般是指一张图有一个类别,有单个物体需要去定位 常用数据库:ImageN...
  • 物体定位与检测

    万次阅读 2017-07-28 14:13:17
    一、任务描述 ...如果想要对物体定位和检测理解的更深的话,大家需要查阅更多的资料。 【1】 http://blog.csdn.net/zchang81/article/details/69383950 (深度学习物体检测——常用资源简述) 【2】 ...
  • 深度学习小白——物体定位和检测

    万次阅读 2017-05-17 17:52:36
    定位一般是指一张图有一个类别,有单个物体需要去定位 常用数据库:ImageNet localization数据库 对于分类任务: 目标:分出类别输入:图像输出:图像类别评价指标:准确度 对于定位任务: 目标
  • 以TI 公司的MSP430单片机为下位机,以LDC1000为传感器,用3个步进电机控制LDC1000进行平面扫描,通过蓝牙传递采集的数据,这些信息经过上位机处理后完成金属物体(如硬币、铁圈等)的探测及定位
  • 讲述了基于超声波物体定位c语言程序实现方法
  • 基于快速变换算法, 提出能自动识别与定位物体并检测其方向的新方法与技术,同时, 讨论利用这一方法和技术所产生的速度限制及克服方法, 最后给出对工件识别与定位的实验结果

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,920
精华内容 24,368
关键字:

物体定位

友情链接: TaskPlus.zip