如何編寫Arduino程式讓四足機器人移動

十一月 25, 2016
Facebook
Twitter
有腳的機器人很棒吧?它們可以跨越崎嶇的地形,用像生物的方式移動,這一點是藉由輪子移動的機器人沒法比的。但足機器人的構造也比較複雜,讓許多 Maker望之興嘆。因此,我設計出了一臺容易製作的足機器人,現在已經放在 Kickstarter上面了,去看看吧
讓我們進入正題吧。在這篇文章中,我會為你介紹讓四足機器人「走路」的方法,也就是行走的步態(gaits),並教你如何為Arduino編寫程式。

關於四足機器人

自然界裡有許多用四隻腳走路的動物,這是因為四隻腳是一種很穩定的組合,不需要特別調整姿勢就能保持站姿穩定,又比六足構造單純一些。對機器人來說也一樣:和更多隻腳的機器人相比,四足機器人既便宜又簡單,卻可以保持穩定。

積極和消極穩定

椅子是屬於消極穩定(passively stable)的物件,也就是說,椅子不需要控制或調整就可以穩定地立著;人類站立時則屬於積極穩定(activily stable),需要不斷控制與微調身體的各部位才能保持站姿
四足機器人在四腳著地時是消極穩定的狀態,走路時則不一定。如果每次只動一隻腳,讓其他三隻腳仍穩穩地踩在地上,即是消極穩定狀態,然而四足機器人也可以放棄此狀態,進入積極穩定狀態,這樣可以動得比較快(即使比較不順)。這兩種步態分別被稱作爬行(Creep)與快步(Trot)。在這裡,我要介紹的是爬行。

爬行

爬行是最簡單使用的步態。你必須確保機器人在每次移動的時候都有三隻腳踩在地面上,而重心放在這三隻腳形成的三角形內即可,如果重心離開這個三角形太久,機器人就會跌倒。
聽起來很簡單,但問題是,你要如何讓機器人在行進中維持穩定呢?我們接下來介紹的方法,可以為你省去好幾小時測試和出錯的時間(相信我,我是過來人),這是一種很簡單的消極穩定爬行步態
這是它的分解動作:
  1. 這是起始位置,其中一側兩隻腳向外,另一側兩隻腳向內。
  2. 右上方的腳離地,向機器人前方踏出。
  3. 所有腳都往回收,讓身體向前移動。
  4. 左後方的腳沿著身體側邊往前踏步,現在這個狀態與起始位置互為鏡像。
  5. 左上方的腳離地,向機器人前方踏出。
  6. 重複動作,將所有腳都往回收,身體向前移動。
  7. 右後方的腳離地,沿著身體側邊往前踏部,這樣就回到起始位置了。
請注意,不管到哪一個步驟,重心都必須維持在不動的三隻腳形成的三角形內,這是爬行步態最重要的關鍵。
仔細分析這個步態,你會發現其實這是兩組互為鏡像的移動方式,踏步、踏步、移位,接著是另一側的踏步、踏步、移位……以下有一段影片,讓我們來看看 EngiMake QuadBot走路的樣子。

如何編寫程式

爬行步態並不複雜,但我們要如何將它寫成程式碼呢?首先,我們要訂出每一隻腳在各個位置的x、y座標。
這是一個四足機器人的座標示意圖,每一隻腳都有自己在x、y軸上的位置。因此,我們現在可以給每一隻腳一個座標值,代表與x軸和y軸的距離(單位為毫米)。舉例來說,左上方的腳位置是 (-50,50) (x,y)。現在,我們可以將這一套表示方法應用至每一個步驟中。然而,請記得其確切的位置會與機器人腳的長度有關,不管你的機器人長什麼模樣,請先測量腳長來再計算數值。
以下是QuadBot用的位置座標:
在每步之間,我們只需要處理粉紅色箭頭表示的數值變化即可。那麼,這樣怎麼用程式碼呈現呢?我們來看看其Arduino程式碼長什麼樣子。
是不是意外地很簡單?讓我們再次分解動作。
图片

起始位置

图片

第一步

图片

第一次移位

图片

第二步

图片

第三步

图片

第二次移位

图片

第四步(起始位置)

大功告成!透過這樣的方式,我們可以直接讓機器人走路了!大部分的四足機器人都是由伺服馬達驅動,如果你也是用伺服馬達的話,可能要先研究一下反向動力學(Inverse Kinematics),才能將伺服馬達的角度轉換成這裡提到的座標位置。關於這個部分,你可以前往Kickstarter 上的EngiMake QuadBot專題參考相關資訊!
(譯:劉允中)
原文
Social media & sharing icons powered by UltimatelySocial