0
本文作者: qqfly | 2017-01-06 17:04 |
雷鋒網(wǎng)按:本文作者qqfly,上海交通大學(xué)機(jī)器人所博士生,本科畢業(yè)于清華大學(xué)機(jī)械工程系,主要研究方向機(jī)器視覺(jué)與運(yùn)動(dòng)規(guī)劃,會(huì)寫一些好玩的內(nèi)容在微信公眾號(hào):Nao(ID:qRobotics)。
「協(xié)作機(jī)器人」應(yīng)該算是2016年機(jī)器人領(lǐng)域的一個(gè)重要關(guān)鍵詞,我們一起來(lái)聊一聊,最后還有一個(gè)好玩的視頻,大家可以看看。
當(dāng)然,這里我不想去過(guò)多的討論什么是協(xié)作機(jī)器人,我只關(guān)心怎么做。如果對(duì)其定義不清楚的,可以查看一篇不錯(cuò)的文章《What Does Collaborative Robot Mean ?》
協(xié)作機(jī)器人的研究點(diǎn)
協(xié)作機(jī)器人的主要目的是要讓人能與機(jī)器人協(xié)同工作。
傳統(tǒng)的機(jī)器人由于無(wú)法感知到人的存在,如果與人發(fā)生碰撞還是很危險(xiǎn)的。
所以,協(xié)作機(jī)器人的一大研究點(diǎn)就是機(jī)械臂與人的碰撞檢測(cè)。
說(shuō)到這點(diǎn),就不禁讓我想到當(dāng)年看 Sami Haddadin 在德國(guó)宇航中心DLR時(shí)發(fā)布的視頻。(當(dāng)然,他現(xiàn)在跑去做了個(gè)Franka,也很厲害。)
然后下面這個(gè)是高(zuo)階(si)玩法:
視頻在這里:
當(dāng)然,現(xiàn)在已經(jīng)入坑運(yùn)動(dòng)規(guī)劃了,不可能再去做這個(gè)。但是,我還是好奇這么好玩的功能是怎么做出來(lái)的。
雖然各種論文里也都或多或少會(huì)提及他們的算法,但一直只看論文總感覺(jué)差點(diǎn)意思。
這時(shí)候應(yīng)該列出一大堆論文
但是我就不。
協(xié)作機(jī)器人的實(shí)際操作過(guò)程
紙上得來(lái)終覺(jué)淺,絕知此事要躬行。所以,我決定嘗試做一個(gè)。哦,不,1/7個(gè)(單關(guān)節(jié))。
首先,在實(shí)驗(yàn)室小伙伴們的幫助下,搭了一個(gè)實(shí)驗(yàn)平臺(tái):
大概就是一個(gè)交流電機(jī)帶著一個(gè)灰鑄鐵做的連桿??刂破鞑捎玫氖菍?shí)時(shí)操作系統(tǒng)RTX,然后用EtherCAT進(jìn)行通信。
經(jīng)過(guò)調(diào)研,要做這種能檢測(cè)碰撞的協(xié)作機(jī)器人,基本的思路就是建立機(jī)器人動(dòng)力學(xué)模型,之后對(duì)比真實(shí)力矩與動(dòng)力學(xué)計(jì)算力矩,從而判斷是否碰撞。
測(cè)量力矩的話,我們就直接通過(guò)驅(qū)動(dòng)器反饋的電流估計(jì)好了。傳說(shuō)中的 Sensor-less Collision Detection,瞬間有種很厲害的感覺(jué)。
這個(gè)動(dòng)力學(xué)就不細(xì)說(shuō)了。我們可以得到上面這個(gè)動(dòng)力學(xué)公式,大概就是一個(gè)質(zhì)量項(xiàng),一個(gè)重力項(xiàng)。(直驅(qū)就先不考慮摩擦力了)。參數(shù)的話,直接從SolidWorks中讀取就好了。
于是,我畫(huà)出了測(cè)量力矩與計(jì)算力矩的曲線:
嗯,誤差50%
看來(lái),這里需要做一下參數(shù)辨識(shí)。
于是,我打開(kāi)了本科畢設(shè)論文。
幸好本科做了點(diǎn)微小的工作,現(xiàn)在直接就在這1/7個(gè)機(jī)器人上用了起來(lái)。
動(dòng)力學(xué)參數(shù)辨識(shí)后的效果果然不錯(cuò),誤差立馬降到了8%內(nèi)。
有了精確的動(dòng)力學(xué)模型,就可以開(kāi)始實(shí)(zuo)驗(yàn)(si)了。
首先,要測(cè)試碰撞的效果,就是用各種物品去碰運(yùn)行的機(jī)器:
危險(xiǎn)動(dòng)作,請(qǐng)勿模仿。后果可能變得跟下面這個(gè)木棒一樣:
畫(huà)出真實(shí)力矩、計(jì)算力矩與它們的差值如下:
看來(lái),碰撞對(duì)力矩的影響還是很明顯的。那么,我們很容易就能檢測(cè)到機(jī)械臂是否發(fā)生碰撞。
第二步,我們就是要讓機(jī)械臂在碰撞之后停止運(yùn)動(dòng):
效果不錯(cuò),一張紙就能讓機(jī)械臂停止運(yùn)動(dòng)。
但是,我們看前面 Haddadin 的視頻,機(jī)械臂在檢測(cè)到碰撞后并不是立馬停止運(yùn)行的,而是進(jìn)行重力補(bǔ)償模型(zero-G mode)。
如上圖,Haddadin 的論文中說(shuō),檢測(cè)到碰撞后讓機(jī)械臂進(jìn)入重力補(bǔ)償模式的方法(圖中Strategy 2)的接觸力最小,對(duì)人的影響也最小。
好吧,既然大神這么說(shuō)了,我也就這樣做做看。
但是,我的動(dòng)力學(xué)模型并不是非常準(zhǔn)確,沒(méi)法做到完全的 zero-G,我這里的做法是用在碰撞后采用“重力補(bǔ)償+小增益PD控制”的方法,這樣應(yīng)該可以達(dá)到類似效果。
嗯,效果也不錯(cuò)。
不過(guò),既然我可以將機(jī)械臂的剛度降到這么低,那豈不是可以做拖動(dòng)示教(Hand Guiding)了?
所有視頻在這里:
當(dāng)然,真的要在多軸機(jī)器人上實(shí)現(xiàn)這些功能還是比較復(fù)雜的。其中,最復(fù)雜的一個(gè)就是摩擦力了,我們并不知道摩擦力的具體模型,這樣就沒(méi)法進(jìn)行辨識(shí)補(bǔ)償了。
我這里給大家看個(gè)極端的例子:100kg負(fù)載,86減速比(行星齒輪)。
然后,我用同樣的方法做動(dòng)力學(xué)參數(shù)辨識(shí)。如果不考慮摩擦力的話,辨識(shí)結(jié)果如下圖:
機(jī)構(gòu)的動(dòng)力學(xué)模型完全沒(méi)法擬合出力矩曲線。說(shuō)明在這種情況下,摩擦力是沒(méi)辦法忽略的。
但是,即使我想把摩擦力辨識(shí)出來(lái),嘗試過(guò)幾種摩擦力經(jīng)驗(yàn)公式,也沒(méi)辦法完全消除誤差。
這就是為什么現(xiàn)在絕大多數(shù)協(xié)作機(jī)器人都必須加關(guān)節(jié)力矩傳感器,這樣就能跳過(guò)傳動(dòng)系統(tǒng),減小摩擦力的影響。
最后,奉勸大家一句:摩擦力的話,入坑需謹(jǐn)慎。
最最后,把 Sami Haddadin 的完整視頻放在這里:
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。