當前位置: 華文問答 > 數位

做機器人演算法工程師是怎樣一種體驗?

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)其他你自己認為你可以的;