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