当前位置: 华文问答 > 数码

做机器人算法工程师是怎样一种体验?

2016-05-04数码

我应该也算是机器人算法工程师了,我所在实验室就叫学习算法与系统实验室(LASA, Learning Algorithm and System Lab,

Learning Algorithms and Systems Laboratory (LASA)

)。那些说没有这个职位的就不要闹了, robot software and algorithm engineer是一个很大的市场空缺。


简单的说, 最深的体验就是:You have to take someone's shit. (受虐,无处不在) 。你需要懂的东西很多,需要你一次次走出自己的舒适区域。

我只能以我的经历说一下:

2011年,我刚到实验室,实验室有个女博士后(postdoc)在做 抓取规划 (grasp planning),我老板让我一起做这个项目,我研究室也是做的这个,所以可以很快的上手。但是,为了用一个优化的算法(IPOPT),整个规划(planning)是用AMPL(

The AMPL Book

)写的,Bell实验室出品,速度也是很好的,但是那个语法完全虐死人。我保证你们都没有用过,用过之后就不想再见到这货了。经过半年的努力,我也算是走通了整个MTALAB到AMPL+IPOPT的流程,然后程序要在CMU的一个服务器(server)上跑一个星期,得到了很多花样的炫酷的grasp(比如一个简单圆柱体大概得到3000+个不同grasp)。

然后呢,当然要把这些grasp在仿真里面显示出来。当时实验室在使用一款叫RobotToolKit(

GitHub - epfl-lasa/robot-toolkit: The robot simulator and interface of LASA

)的自己开发的机器人仿真软件,没有说明文档,没有人有太多时间教你,关键是我当时连coding也是很渣的(当然现在也很烂。。。)。好不容易弄懂了整个逻辑,也会仿照着别人的东西写一些demo了。在simulation里面一跑,各种grasp不能实现,需要把物体摆在机器人工作空间某个非常合适的位置,恰好IK(逆运动学)可以找到合适的关节角。总之,3000个grasp,做了一下分类(简单clustering), 最终挑选出还能看的也就下图20个。为了这20个grasp,我几乎花了两三个月的时间。但最终也算知道这个仿真软件的一些基本东西了,也知道所有research中你看到的仅仅是冰山一角。 走到这一步,聪明的人就停留在仿真了,仿真的世界真的很美好

这不是结束!

我当然不满足于虚拟的世界,接下来才是整个作为一个机器人算法工程师的受虐之路的开始: 算法实现 。所有的机器人算法都是要用实践来检验的,直观的将就是你要做一个demo,最好是在实际的机器人上。终于要上机器人玩了,当时还有点小激动,用的还是iCub,就是下图这货,看起来十分萌。

(题外话,整个四年,因为压力,可乐喝了估计有1000+多瓶了)

手上还有当时的视频,就不放了,简单的说一下。iCub是线驱动(cable driven),整个手臂的定位精度可能在2cm左右。整个手指关节定位精度,我只能说5度左右吧,实际上更差,每个手指末端大概能提供1N的力。实际中,绝大多数(90%以上)的grasp在机器人上都没有办法实现出来。机械臂到不了,手指又不准,手指力又不够,现实中的物体的摩擦,重力,材料等等特性又没有考虑。下图中看到的,基本上是我和那个postdoc花了几个星期得到的稍微看得过去的grasp,其中又有无数的hacking。 基本上一个做grasp的走完这一步,已经要怀疑人生了


在这个hacking的世界里,我折腾了大半年,看看下图的手指末端的海绵,还有程序中各种小的技巧,总算也可以用KUKA LWR加上Barrett hand做点简单的grasp了(

https://www. youtube.com/watch? v=wSzfmrfDx60

)。



如果这就是结束,那生活也太美好了!整个PhD真正的大招是上图右下角的那个 触觉传感器 (tactile sensor) --Syntouch(

SynTouch, LLC

)。这一个传感器报价8000刀,一个手上要用三个,显然是一个暴利行业。当时作为世界上最早使用的整个传感器的实验室,他们只提供了一个很简单的API,可以读取数据。数据的意义不知道,反正传感器及其敏感,你说话都可以引起数据的变化,我要做的就是从中提取对grasp有用的信息并且用到grasp里面去。但是什么是对grasp有用的呢?怎么用呢?每个人都以为自己知道,但实际上又没有几个人知道。这才是最最受虐的,你根本不知道你的目标在哪里。

于是乎,我在老板的领导下,一步步走到坑里,自己写算法(GP,GMM,SVM, NN,K-Means。。。。)标定了接触点的位置(精度0.3mm),接触力的大小(精度法向0.1N,切向0.3N),估计物体的重量,估计摩擦系数,估计物体动力学参数。。。


还些东西就是我上面说的辅助性工作,但是是机器人算法中不可缺少的。这一年把我虐到胃溃疡加胃出血,这也是做机器人算法的很多时候的陷阱,你感觉每天都很忙,但好像又什么都没有做出来。这就是雷总说的战术上的勤奋,掩盖了战略上的懒惰。

这时,一个日本教授(Kenji)来到我们实验室(2013年4月15号),一切都是命中注定的感觉。在几次讨论后,突然间发现这个教授的 控制算法 可以和我做的触觉传感,通过机器学习算法结合起来。然后就在2013年4月到2014年3月,灌水了几篇可以毕业的东西 (

https://www. youtube.com/watch? v=AIt75lkogqE https://www. youtube.com/watch? v=UsPwmrYszbU

,

https://www. youtube.com/watch? v=Z-4YTHy1GaI

).

到目前为止基本走了: 规划(planning+simulation)--> 实现(implementation)--> 传感 (perception)-->控制 (control) 。当然这里面每一步都是从很多论文的合作者那里学到了不少的东西,这也是一个机器人算法工程师的必备能力:快速学习。

这样一遍虐下来,你会发现到处都是问题,好像什么问题都没有被解决。然后就到时候回头看看了,是时候找出每一个环节的最短板了。

强烈建议对此感兴趣的可以读一下,亚马逊抓取挑战赛的赛后经验。

http:// arxiv.org/abs/1601.0548 4 https://www. robotics.tu-berlin.de/f ileadmin/fg170/Publikationen_pdf/apc_rbo_rss2016_final.pdf

如果有人感兴趣,以后再写下后面的历程了(都是教训)。

如果你看到了这里,请接着看完下面的硬广告!

------------------------------------------------------------------------------------------------------------------------------

0. 硬广告一条

*** 本人已经决定全职回国创业,从事工业机器人的智能系统开发,一年内坐标武汉,未来坐标深圳与欧洲。目前资金(>2M $),人员配置都基本完整(海内外博士,硕士加上主要机器人厂商工程师),但是还是希望有志同道合的伙伴能够加入。如果你满足以下一条或者几条,欢迎勾搭:

(0)coding足够好,有实际经验最好;

(1)对机器人硬件,软件,算法等基础知识有足够了解;

(2)喜欢折腾各种硬件,包括传感器,机械结构设计等;

(3)熟悉机器学习及其算法实现;

(4)想做不一样的事情;

(5)其他你自己认为你可以的;