数量级提升!深度学习让机器人抓取更高效
作者 | Jeffrey Ichnowski等
译者 | 凌霄
出品 | AI科技大本营(ID:rgznai100)
摘要
电子商务仓库中的拣选机器人需要快速计算各种配置之间有效且平稳的机器人手臂运动。最近的研究中是将抓取力分析与手臂运动规划结合,以计算最佳的手臂平滑运动;然而,数十秒的计算时间支配着运动时间。深度学习的最新研究将神经网络应用于计算这些运动。但是,运算结果缺乏产生符合运动学和动力学运动所需的精度。虽然运算结果不可行,但神经网络计算的运动接近最佳结果。该研究中所提出的方法以近似运动为起点,开始优化,优化运动规划器将近似方法通过几次迭代,优化为切实可行运动。
在实验中,当将该研究结果应用抓取优化的运动规划中,结果表明可以将计算时间从 29s 减少到 80ms,达到减少两个数量级(300×),非常适合电子商务仓库的拣货。
介绍
2019 年冠状病毒病大流行极大地增加了对电子商务的需求,并降低了仓库工作人员近距离执行订单的能力,激发了人们对机器人执行任务的研究兴趣。然而,尽管最近在机器人抓取研究方面取得了一些进展,但是机器人运动规划和执行仍然是瓶颈。
在本文中,研究人员介绍了突变运动的限制,并发现生成的逐步二次规划算法(SQP)及其基础二次规划算法(QP)需要数十秒的数量级的计算,这对于加快整体拾取和移动速度不切实际。然后,研究人员介绍 DJ(Deep-learning Jerk-limited)- GOMP 算法,它使用深度神经网络来学习利用热启动计算获取的轨迹,从而将计算时间从 29s 减少到 80ms,使其可用于工业用途。
该研究介绍了DJGOMP 算法和训练过程。研究人员在 UR5 机械臂上进行了实验,验证了 GOMP 生成的轨迹可在物理机器人上执行并快速流畅的运动。本文贡献:
(1) J-GOMP 算法,可以为取放操作规划计算时间优化的加速度变化限制的运动;
(2) DJ-GOMP 算法,它使用时间优化运动规划的深度学习方法,从经验上将 J-GOMP 优化的计算时间提高了两个数量级;
(3) 在时间和运动时间上与其他运动规划器进行比较,表明 DJ-GOMP 算法可以快速的规划运动;
(4) 在模拟实验以及在实体 UR5 机器人上进行的实验表明,DJ-GOMP 可有效地将加速度变化降低到可接受的范围。
J-GOMP
研究人员提出了一个多步骤的过程来快速计算运动规划。基本的运动规划器是基于GOMP 算法中提出的 SQP 算法,这是 TrajOpt 算法的优化,其中包含用于避开障碍物的深度图,取放点的自由度,以及机器人的动态极限。在 GOMP 算法及其扩展工作中,轨迹根据固定的时间间隔被划分为 H + 1 个路径点序列。在这项工作中,研究人员对 GOMP 中 SQP 进行了扩展,使其包括了加速度变化限制,进而产生了 J-GOMP 算法。根据 J-GOMP 算法, 可以产生了加速度变化约束下的运动规划,但计算时间大大增加。
为了解决缓慢的计算,研究人员训练了一个深度神经网络来逼近 J-GOMP。因为网络近似于J-GOMP,所以研究人员使用 J-GOMP 生成训练数据集,该数据集由运行时可能遇到的随机拾取和放置点的轨迹组成(例如,从拾取箱中的位置到放置箱中的位置) 。利用基于GPU(图形处理单元)的加速,网络可以计算毫秒级的近似轨迹。但是,网络无法保证其生成的轨迹在运动学上或动态上是可行的,也不会避开障碍物。
为了修正网络产生的轨迹,研究人员建议使用网络的轨迹从 J-GOMP 热启动 SQP。热启动使SQP 可以从更接近最终解决方案的轨迹开始,从而使 SQP 迅速收敛至最佳解决方案。由于 SQP 会综合执行拾取,放置,运动,动态和障碍等约束,因此生成的轨迹是有效的。
DJ-GOMP
对于给定的工作环境,DJ-GOMP 算法通过三个阶段的过程来加快机器人的运动规划和重复任务。第一阶段从机器人可能遇到的任务分布中随机采样任务,并使用 SQP 生成时间和加速度最小的运动计划。第二阶段使用第一阶段的数据训练一个深度神经网络,以计算给定任务的时间优化运动(图 3)。第三阶段使用第二阶段的深度网络来生成运动计划,热启动第一阶段的SQP 算法。通过从深度网络的输出中热启动 SQP,DJ-GOMP 可确保运动规划满足机器人的约束(但是神经网络无法满足约束),并极大地提高了 SQP 的收敛速度。
本节介绍 DJ-GOMP 中的方法。底层 DJ-GOMP 是基于 SQP 的可优化的加速度变化和时间约束的运动规划器。由于解决此 SQP 的复杂性,计算时间可能远远超过轨迹的执行时间。DJ-GOMP 在随机的一组取放输入上使用此 SQP 来生成用于训练神经网络的训练数据。在拾取和放置操作期间,DJ-GOMP 使用神经网络为给定的拾取和放置框架计算近似轨迹, 然后将其用于热启动 SQP。
该神经网络由一个输入层组成,该输入层通过四个完全连接的模块连接到多个输出模块。输入层是级联的抓握帧。因为最佳轨迹长度可以变化,所以对于不同的轨迹长度,网络有多 个输出头。为了选择要使用的输出,研究人员使用了一个单独的分类网络,该网络具有两个 完全连接的层,并使用交叉熵损失对一个编码进行了独热编码。研究人员将层位分类和多输 出网络称为HYDRA 网络。为了训练该网络,使用零梯度保留不在训练样本中的轨迹输出层的激活值,以权衡在反向传播期间输入层对输入层的贡献。
在实验中,具有单个输出头的神经网络无法产生一致的结果来预测各种长度的水平。研究人员推测,不同视界长度的轨迹之间的不连续性使学习变得困难。相比之下,研究人员发现网络能够在单个视域长度内准确地学习功能,但是在计算和空间效率方面却是无效的,因为每个网络都应该能够在视域之间共享有关功能的信息。从而进行了相应的设计,使具有多个输出头的单个网络通过多个共享的输入层共享权重。
实验
研究人员将计算时间和运动时间性能与 PRM*和 TrajOpt 进行了比较。对于 PRM*,研究人员在机器人前面的工作区上预先计算了 10,000、100,000 和 1,000,000 个顶点的图形。由于 PRM*是一种渐近最优的运动规划器,因此具有更多顶点的图应该产生更短的路径,但要花费更长的图搜索时间。
对于 TrajOpt,研究人员将优化参数配置为与 DJ-GOMP 匹配,从而可以提高默认设置的成功率。1000 个拾取放置对的结果如下图所示,观察到 PRM*具有一致的快速计算时间,但产生的轨迹最慢。TrajOpt 的计算速度较慢,但产生的轨迹比 PRM* 要快。DJ-GOMP 直接针对时间最佳的路径进行优化,因此可以产生快速运动,而深度学习的水平预测和热启动使其能够在复杂的约束条件下快速进行计算,从而使计算和运动时间相结合,从而实现整体上最快的速度。
为了评估 DJ-GOMP 规划的运动路径是否适用于实体物理机器人,研究人员具有 UR5 跟随 DJ-GOMP 生成的轨迹,示例运动如下图所示。UR5 控制器不允许机器人超过关节极限,并在允许时发出自动紧急停止信号。DJ-GOMP 生成的轨迹都被约束在运动范围内,因此不会引起停止。但是,研究人员观察到,在没有加速度限制的情况下,高加速度变化的轨迹可能会导致 UR5 运动超限甚至反弹,借助 DJ-GOMP 的加速度限制轨迹,UR5 运动不会过冲。
实验表明,热启动 J-GOMP 优化运动计划器(近似于深度学习)可以将 J-GOMP 的运动计划速度提高两个数量级(超过 300 倍),可达到平均 80ms 的计算时间。时间优化有可能减少每小时的拣货量,这是仓库包装操作中的一项重要指标,而加速度变化的限制可以减少机器人的磨损,从而延长使用寿命并减少停机时间。
在未来的工作中,研究人员将探索将 DJ-GOMP 扩展到执行更多不同任务的其他机器人, 这些机器人将包括增加开始和目标配置的变化以及在更复杂的环境中。研究人员还将探索其他深度学习方法,以找到优化过程的更好近似值,从而使 DJ-GOMP 的最终优化步骤能够更快地热启动。对于无法访问 GPU 或其他神经网络加速器的系统,探索其他路线来计算热启动轨迹可能是富有成果的,例如,不同/较小的网络设计或来自训练数据集的最近轨迹。在机器人技术的其他领域,例如,任务规划和模型预测控制,使用基于深度学习的热启动可能会加快约束性优化的速度。
原文:Deep learning can accelerate grasp-optimized motion planning. Science Robotics 封面文章
点击这里 ???? 关注我们~~~
更多精彩推荐
☞RedHat 年度报告:只索取不贡献的开源消费“大户”不受待见☞腾讯:这可是一只“骨骼清奇”的狗☞用数据分析《你好,李焕英》“斐妈”爆红的真相☞从猫狗不分到实时识别准确率超过99%,计算机图像识别是如何做到的?
点分享点收藏点点赞点在看
相关文章:

phpcms_v9修改文章会提示 [hash]数据验证失败
收藏备用:phpcms\modules\content\templates\content_edit.tpl.phpaction"?mcontent&ccontent&aedit改成action"?mcontent&ccontent&aedit&pc_hash<?php echo $_SESSION[pc_hash];?>"转载于:https://blog.51cto.com/w…

横向ListView(一) ——开篇,基础逻辑实现
2019独角兽企业重金招聘Python工程师标准>>> 第一次写博文,写得不好的地方还望各位看客见谅 为了学习自定义软件开发,且定制出满足自己需求的控件(不需要将就地使用第三方源码),本人花了一周的时间开发了个…

HTTP Response中的Chunked编码
进行Chunked编码传输的HTTP Response会在消息头部设置: Transfer-Encoding: chunked 表示Content Body将用Chunked编码传输内容。 Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。每个Chunk分为头部和正文两部分,头部…

ORACLE RAC 更改instance name完整步骤
下面是更改的部分步骤,但是启动问题还是存在,求达人完整。单实例的数据库修改SID比较简单,只需要修改pfile相关参数,就可以挂载数据库。 RAC环境其实一样,只不过除了修改pfile,还需要修改 OCR信息。首先来看…

炸裂!微软重磅推出混合现实平台 Mesh、基于 Excel 的低代码语言 Power Fx,Ignite 2021 太精彩!...
作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)“一开始,这就是混合现实的梦想。” 在微软 Ignite 2021 大会上,微软 HoloLens 之父 Alex Kipman 头戴 HoloLens 2,出现在科技感十足的海底世界虚拟舞台上࿰…

Apache Spark 2.2.0 中文文档 翻译活动
为什么80%的码农都做不了架构师?>>> Spark 2.2.0 已然发布(2017-07-11 发布) 5 天了,更新了一些新套路吧! 此版本从 Structured Streaming(结构化流)中删除 experimental࿰…

Unity3D常用代码总结
1 GUI汇总 function OnGUI() { GUI.Label(Rect(1,1,100,20),"Im a Label"); //1 GUI.Box(Rect(1,21,100,20),"Im a Box"); //2 GUI.Button(Rect(1,41,100,20),"Im a Button"); //3 GUI.RepeatButton(Rect(1,61,120,20),"Im a RepeatButton&…

Python 搭建车道智能检测系统
作者 | 李秋键责编 | 寇雪芹出品 | AI科技大本营(ID:rgznai100)引言:本文将利用opencv实现对复杂场景下车道线的实时检测;所使用的图像处理方法主要是在读取图片的基础上,进行多种边缘检测,然后对不同的检测…

ASP.NET弹出窗口技术之增加网站流量方法
作为Microsoft的最新建立动态Web网站的工具,ASP.NET相对于ASP和JSP在改变原始的Web编程方式方面有了长足的长进。它的代码与页面分离技术(CodeBehind)以及完善的Web服务器控件为程序员提供了一个更加符合传统编程的Web服务器端开发方式。但Web编程还是有着与传统编程不相同的特…

检查是否支持 SO_REUSEPORT
为什么80%的码农都做不了架构师?>>> int reuse_port(int sockfd) {#ifndef SO_REUSEPORT#define SO_REUSEPORT (15)#endifconst int on 1;return setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)); } 转载于:https://my.oschina.n…

nginx的tmp文件过大导致磁盘空间不足一例
个人微博:http://weibo.com/h2fly欢迎技术交流现象:8月23之后,时不时收到服务器的/usrused > 90%的报警排查:1、du发现磁盘/usr使用不大,而报警使用的df》明显是有文件删除了空间没释放。注:du和df的实现机制不同&a…
10年Java老兵宝藏资料,吐血奉献!
2021都说工作不好找,也对开发人员的要求变高。前段时间自己有整理了一些Java后端开发面试常问的高频考点问题做成一份PDF文档(1000道高频题),同时也整理一些图文解析及笔记,今天在这免费分享给大家,希望大家…

IOCP , kqueue , epoll ... 有多重要?
原文地址:http://blog.codingnow.com/2006/04/iocp_kqueue_epoll.html设计 mmo 服务器,我听过许多老生常谈,说起处理大量连接时, select 是多么低效。我们应该换用 iocp (windows), kqueue(freebsd), 或是 epoll(linux) 。的确&am…

[故障解决]图文:python启动报错:api-ms-win-crt-runtime-l1-1-0.dll丢失解决
python启动报错:api-ms-win-crt-runtime-l1-1-0.dll丢失解决 环境 Windows 7 SP1 x64python3.6.1报错 解决办法 1.下载VC redist(安装时读条卡在:正在处理:Windows7_MSU_x64)2.到C:\ProgramData\Package Cache\里面搜索࿰…

ASP.NET设计应用程序的七大绝招
随着微软.NET的流行,ASP.NET越来越为广大开发人员所接受。作为ASP.NET的开发人员,我们不仅需要掌握其基本的原理,更要多多实践,从实践中获取真正的开发本领。在我们的实际开发中,往往基本的原理满足不了开发需求&#…

Chromium之各国语言切换
在\src\build\Debug\locales\目录下存放着各国语言所需要的资源文件xx.pak,我这边共有53中语言支持。 命令行进入src\build\Debug目录,敲:chrome.exe --langzh-CN就能用中文简体,zh-CN可以根据需要换成各种语言版本。 Chrome的整个solution中,每种语言都会有个相应的…

程序员每天工作摸鱼俩小时,月薪35K?
职场上有很多奇奇怪怪的事。比如说有人爆肝996,工资却还养不活自己。有人每天工作摸鱼,但是却月薪数万。前端时间,小编在某职场社交平台上看到这么一则帖子#程序员摸鱼2小时月入35k#仔细看下,该员工每天的工作日常就是摸鱼的间隙工…

JAVA的get post 区别
1. get 是从服务器上获取数据,post 是向服务器传送数据。 get 请求返回 request - URI 所指出的任意信息。Post 请求用来发送电子邮件、新闻或发送能由交互用户填写的表格。这是唯一需要在请求中发送body的请求。使用Post请求时需要在报文首部 Content - Length 字段…

多些时间能少写些代码(转自酷壳 – CoolShell.cn)
我在我的微博上说过这样一段话,我想在这里把我的这个观点阐述地更完整一些。左耳朵耗子:聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙碌着编码,调试和测试。聪明的老板…

HTTP协议之Chunked解析
在网上找了好一会,始终没发现有解析Chunked编码的文章,那就自己写一个吧,呵呵。网上使用Chunked编码的网站似乎并不是很多,除了那些使用GZip压缩的网站,例:google.com,还有就是大部分打开GZip压…
关于深度学习编译器,这些知识你需要知道
作者 | 小O妹出品 | AI科技大本营(ID:rgznai100)神经网络编译器概览近年来,以机器学习、深度学习为核心的AI技术得到迅猛发展,深度神经网络在各行各业得到广泛应用: 1. CV(计算机视觉)…

checkbox点击切换选中状态
2019独角兽企业重金招聘Python工程师标准>>> function cboxChecked(ele) {$(ele).click(function () {var isChecked $(ele).attr(checked);if (!isChecked) {$(ele).attr(checked, true)} else {$(ele).attr(checked, false)}})} 转载于:https://my.oschina.net/u…

提升Hadoop计算能力的并行框架
集算器是新型并行计算框架,它支持读写HDFS中的文件,可以通过并行框架将计算任务分担到多个节点中。它专注于加强Hadoop的计算能力,从而实现计算性能和开发效率更高的大数据应用。更强的计算能力。Hadoop所使用的计算语言为JAVA,JA…

在ASP.NET 2.0中建立站点导航层次
站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局。默认的站点导航提供程序是基于XML的,但是你也可以通过编写自定义的提供程序,…

加速数据中心变革,Xilinx推出软件定义、硬件加速型 Alveo SmartNIC
近日,为满足现代数据中心发展需求,赛灵思公司宣布推出一系列全新数据中心产品及解决方案,包括全新 Alveo SmartNIC 系列、smart world (智能世界) AI 视频分析应用、一款能够实现亚微秒级交易的加速算法交易参考设计&a…

跟阿里云技术专家阙寒一起深度了解视频直播CDN技术
网络直播平台现下已经十分火热,很多常见的直播平台都采用了阿里云直播CDN来搭建自身业务。今天,我们请来了阿里云CDN团队技术专家阙寒,来介绍下视频的一些基础知识和视频直播的架构。在进入正题之前,我们先来了解视频直播相关的名…

一个ASP.NET中使用的MessageBox类
/// <summary>/// 自定义信息对话框/// </summary>public class MessageBox{/// <summary>/// 定义一个web页面,用来显示用户自定错误提示信息/// </summary>System.Web.UI.Page p;/// <summary>/// 实例时,参数为:this 如…

Ubuntu 13.10 安装Terminalx 后更改默认终端设置
1、安装 terminalx, sudo apt-get install terminator 2、Ctrl Alt t 试一下打开什么终端,我的默认启动的是Terminator;如果想换换默认的终端,还需以下一步 3、接下来,安装dconf-tools,这个是设置默认终端的必须 打开…

360数科张家兴:如何突破三大瓶颈,破解金融科技发展难题?
3月6日,上海香港联会、普陀香港联会联合普陀新区联会,IFTA亚洲金融科技师学会共同举办了“沪港合作共创未来”——沪港两地金融科技线上论坛。本次活动通过沪港两地直播连线,探讨两地金融科技领域的发展机遇。麻省理工学院香港创坊执行董事冼…

通过改进算法来优化程序性能的真实案例(Ransac)
对于运行不了几次,一次运行不了多久的方法,我们不需要考虑性能优化,对于那些需要经常运行几百次几千次的方法,我们头脑里还是要有性能这根弦。C#太优雅方便了,以至于很多人写程序时根本就把性能抛到脑后了,…