目录
| 工作 | 内容 | 效果 |
|---|---|---|
| 提升复杂环境中目标检测的效果 | 采用通道注意力机制对 YOLO-V3 进行改进,增强网络对图像特征提取的能力 | 平均识别率较改进前增加 0.32% |
| 针对目前姿态估计角度存在离散性的问题 | 提出一种基于 VGG-16 主干网络嵌入最小面积外接矩形(MABR)算法,进行抓取位姿估计和角度优化 | 改进后的抓取角度与目标实际角度平均误差小于 2.47° |
| 搭建了一套视觉抓取系统 | 利用 UR5 机械臂、气动两指机械手、Realsense D435 相机及 ATI-Mini45 六维力传感器等设备 | 对不同物体进行抓取分类操作、对硬件的要求较低、并且将有害扭矩降低约 75% |
| 学者 | 工作 |
|---|---|
| Mallick 等 | 通过深层卷积网络语义分割法实现物体的检测和定位,利用机械臂完成物体的分拣工作。 |
| 白成超 | 通过改进的 YOLO(You Only Look Once)算法实现目标检测,实现机械臂的抓取动作。 |
| 黄怡蒙 | 对 Tiny-YOLOV3 目标检测的结果进行三角函数转换,并控制机械臂完成物体抓取。 |
缺点:没有获取物体有效抓取点的位姿,抓取具有一定的局限性
| 学者 | 工作 |
|---|---|
| Jiang | 通过两步走模型框架,使用支持向量机排序算法预测物体的抓取点和角度 |
| Chu | 通过 ResNet-50 主干网络结合抓取建议框图实现物体抓取位姿预测。 |
| 夏浩宇 | 基于 Keypoit RCNN 改进模型的抓取检测算法,实现对管纱的有效抓取 |
| 提高了抓取成功率,但是存在预测抓取角度离散的问题,导致机械手容易与物体产生偏角,在抓取过程中容易改变物体当前状态甚至造成物体损坏,具有一定的干扰性 |
缺点:提高了抓取成功率,但是存在预测抓取角度离散的问题,导致机械手容易与物体产生偏角,在抓取过程中容易改变物体当前状态甚至造成物体损坏,具有一定的干扰性

自 2014 年 Girshick 等提出基于区域的卷积神经网络(Region proposals Convolutional Neural Networks, R-CNN)以来,该方向的目标检测算法不断地被改进,出现了以Fast R-CNN和Faster R-CNN为代表的先通过区域推荐再进行目标分类的两步走目标检测算法、以及以YOLO为代表的采用一个网络直接进行预测输出的目标检测算法等。
YOLO 模型:
YOLO-V3 模型:

通过对 YOLO-V3 检测模型加入通道注意力机制模块来增强网络提取特征
的效果,改善相机拍摄目标多尺度和图像场景复杂情况下的目标检测识别度和准确率,通道注意力机制模块如图。

利用权重矩阵对原网络结构中提取的目标特征进行重构,对有利特征信息进行加分无关特征进行减分处理,从而提升目标检测的效果。
| 种类 | 特点 |
|---|---|
| 3DOF | 目标抓取点的平面坐标 ( x , y ) (x, y) (x,y)和偏转角度 θ θ θ |
| 6DOF | 目标抓取点的空间坐标 ( x , y , z ) (x, y, z) (x,y,z)和旋转向量 ( r x , r y , r z ) (rx, ry, rz) (rx,ry,rz)组成 |
| 区别 | 多以工作台上的物体抓取为主,与空间位姿相比,平面的位姿估计方法更加高效、实用 |
目前基于深度学习的抓取位姿估计算法,本质是对 RGB 或 RGD 图像进行回归预测和分类预测。

网络总损失函数
L
g
c
r
L_{gcr}
Lgcr由抓取角度分类预测损失和四维边框预测损失组成
L
g
c
r
(
{
(
p
l
,
β
l
)
}
c
=
0
C
)
=
∑
c
L
g
c
r
−
c
l
s
(
p
t
)
+
λ
∑
c
l
c
≠
0
L
g
c
r
−
r
e
g
(
β
c
,
β
c
∗
)
L_{gcr}(\{ (p_{l},\beta_{l}) \}^{C}_{c=0})=\sum\limits_{c}L_{gcr-cls(p_{t})}+\lambda\sum\limits_{c}l_{c \neq 0}L_{gcr-reg(\beta_{c},\beta_{c}^{\ast})}
Lgcr({(pl,βl)}c=0C)=c∑Lgcr−cls(pt)+λc∑lc=0Lgcr−reg(βc,βc∗)
| 参数 | 意义 |
|---|---|
| C C C | R R R+1,取值19 |
| p l p_{l} pl | 经过 Softmax 归一化指数函数层输出第 l l l 个角度的分类概率 |
| β l / β c , β ∗ β_{l}/β_{c},β_{\ast} βl/βc,β∗ | 预测的抓取框和真实的抓取框 |
| L_{gcr-cls} | 抓取角度分类的交叉熵损失 |
| L_{gcr-reg} | 边界框预测的回归损失 |
机械手与物体存在较大角度偏差
对工作台上容易移动的物体抓取影响较小,因为物体滑动会消除角度误差;
对工作台上通过夹具固定而不易移动物体的抓取影响较大,角度偏差会导致机械手在抓取物体过程中产生一个有害扭矩,导致抓取失败,也容易改变物体当前状态造成再装配困难;
位姿估计中还引入 MABR 算法。
系统采用 linux 下基于 Visual Studio Code 编译软件进行开发,确保系统和编译环境的统一性,便于图像处理与机械臂运动控制间的数据传输。
由于主干特征提取网络具有特征通用性,因此也采用冻结训练方法二次加快模型训练的速度。
| 解冻前 | 解冻后 | |
|---|---|---|
| 学习率 l r lr lr | 0.001 | 0.0001 |
| 批量大小 b a r t c h _ s i z e bartch\_size bartch_size | 8 | 4 |
| 初始迭代 I n i t _ e p o c h Init\_epoch Init_epoch | 0 | 50 |
| 冻结/解冻迭代 F r e e z e / U n f r e e z e e p o c h Freeze/Unfreeze_epoch Freeze/Unfreezeepoch | 50 | 100 |
抓取位姿估计采用 cornell 数据集制作模型训练所需的数据样本
从对比结果能够得出,对于单个物体的抓取位姿估计,双层结构和更深层 ResNet-50 网络在估计准确率上并没有突出的表现,反而单层结构 VGG-16 的方法在运行时间上有明显的优势。
相比于改进前,改进后位姿估计的抓取角度连续化,更加趋于物体的偏转角度。
通过实验测量,计算出改进后的预测抓取角度与目标的实际偏转角度平均误差小于2.47°。
抓取对象通过胶水固定在亚克力板上,硅胶起传导作用力和避免较大扭矩损坏设备的作用。
抓取系统的坐标转换流程如下。


我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我有一个具有一些属性的模型:attr1、attr2和attr3。我需要在不执行回调和验证的情况下更新此属性。我找到了update_column方法,但我想同时更新三个属性。我需要这样的东西:update_columns({attr1:val1,attr2:val2,attr3:val3})代替update_column(attr1,val1)update_column(attr2,val2)update_column(attr3,val3) 最佳答案 您可以使用update_columns(attr1:val1,attr2:val2
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)