翻滾吧「小怪獸」!
文/鮑惟聖
讓小怪獸來個伏地挺身
基本上到目前「小怪獸」的硬體算是完成了。原來規劃還有LED與紅外線感測器部分,我們等到「小怪獸」可以行走了之後再來加裝。現在請開啟 InnoBASIC Workshop 2環境,到「動作編輯器」的主畫面(圖A)。機器人最基本的行走原理就類似早期的卡通影片,將許多的靜態畫面連續播放,就形成了動態的畫面。這時候如何正 確而精準地將一個動作拆成幾個分解動作,就是機器人運動能力優劣的關鍵了。現在就先讓「小怪獸」學會暖身來個「伏地挺身」吧。我把「伏地挺身」分成二個分解動作。第一就是標準站姿,第二就是腹部貼近地面。目前畫面上所顯示的初始值都是1500,也正好就是我們所要的標準站姿,注意要先將所有的核取盒打勾, 這樣才有啟動控制功能。接著我們就直接按下「儲存」鍵,將此動作儲存到SC8控制板裡。
圖A
微調的重要性
通 常這時候就會發現明明每個伺服機都按照要求設成1500的位置,但站姿好像不是很正,左看右看每個伺服機都想給它調整一下,這時候我們就需要做「微調」了 (圖B)。造成這各現象的原因有二:第一,伺服機輸出軸與「搖臂」結合處的齒數是有限的,所以不論如何鎖,一定會有機械性的角度誤差;第二,整體性的機構 偏差,例如支架歪斜,使得我們必須靠「微調」來補償機構上的偏差。動作編輯器主畫面的右上角有「設定微調值」的按鍵,按下後即可進入「設定微調值」的主畫 面。其中可以進行微調的通道,即為剛才所核取的通道。基本操作方式與動作設定相同,只是數值範圍較小從-128到+127。邊微調邊觀察伺服機是否轉動到 要求的位置了。當各通道微調值設定好了之後,記得要按下「儲存到模組」按鍵,目前的設定值才會正式被儲存到SC8控制板,否則下次使用SC8控制板會發現 微調值還是舊的。現在大家了解「微調」的用處之後,我們繼續剛才的動作設定。
圖B
完成伏地挺身的動作設定
接 著我們要調整出第二個動作,讓身體貼近地面。其實只要轉動外側的四個伺服機就可以了。現在請慢慢拉動CH1、CH3、CH5、CH7的捲軸或填入數值。這 時候就可以觀察是否有符合您的動作要求。這裡我使用的位置是1200與1800,從中心位置前後大約擺動各30度。因為伺服機安裝的方向不同,左前腳與右 後腳會是同一個數值,右前腳與左後腳會是另一個數值。動作若是一致的,就是要降低身體高度。如果覺得姿態沒問題就先將畫面左上方的動作編號改成1(圖 C),然後按下「儲存」鍵,將此動作儲存到SC8控制板裡。
每次儲存新的動作時一定要記得改變動作編號,否則之前所設計的動作就會被覆蓋掉 了。因為你所設計的動作都儲存在SC8控制板裡,如果想檢視某一個編號的動作,只要改按「讀取」鍵,並輸入動作編號,例如編號0。這時候「小怪獸」就會呈 現原先設定的站立姿態了。好了,動作設定完成,現在開始寫程式吧。
圖C
開始寫程式
首 先從「檔案」/「開新檔案」選單之下開啟一個新檔案,然後輸入下列程式。單引號「’」之後的文字稱之為「註解」,方便自己或他人閱讀程式之用,對程式執行 沒有任何影響。練習的時候如果想省事,「註解」的部份是可以省略。但是正式寫程式的時候可千萬別偷懶,否則現在引以為傲的「武功祕笈」下次在閱讀時,套句 俏皮話,就變成諸葛亮的「出師表」,「臨表涕泣,不知所云」了。
‘==================================================
‘ 小怪獸伏地挺身五次
‘==================================================
Peripheral mySer As ServoRunner8A @ 0
‘ 預設內建模組ID為0
Sub Main ()
Dim I As Byte ‘ 宣告變數
For I=1 to 5 ‘ FOR NEXT 迴圈開端,迴圈執行5次
mySer.LoadFrame(0) ‘ 載入編號0動作的資料
mySer.RunAllServo() ‘ 執行編號0之動作
Pause 1000 ‘ 程式等待一秒,等待伺服機完成動作
mySer.LoadFrame(1) ‘ 載入編號1動作的資料
mySer.RunAllServo() ‘ 執行編號1之動作
Pause 1000 ‘ 程式等待一秒,等待伺服機完成動作
Next I ‘ FOR NEXT 迴圈末端
End Sub
程 式輸入完畢之後(圖D),請在「建立」選單中選取「建立」功能然後開始進行程式編譯與通過USB線下載編譯後的程式碼至SC8控制板。此時「小怪獸」就會 每秒一次「上」或「下」進行「伏地挺身」,而且因為For…Next指令的指定,「小怪獸」將會執行5次「伏地挺身」。
圖D
好啦!伏地挺身還算是簡單,我們現在開始設計步行的動作。原則上愈多分解動作可以達成較好的平衡性與流暢度。但是既然是「入門 級」的機器人,步態設計還是以簡單易懂為原則。這裡就整理出八個分解動作,經由不同的分解動作組合,可以做出前進、後退、轉彎等動作。下面就是這八個動作 的示意圖。首先大家會注意到每隻腳都有對應到三個圓圈,說明足部是在「前」、「中」、「後」哪個位置,這些位置是由內側伺服機控制。虛線的圓圈只是方便辨 識相對位置,實際落腳會以一個「實心圓」與「空心圓」分別表示不同高度,這些高度是由外側的伺服機控制,圖的上方為頭部的方向(圖E)。
圖E
高度可以有「上」、「中」、「下」三個位置,但是目前為止動作規劃還沒有使用到「上」的位置。所以大家有進一步的動作規劃時,可 以再加入「上」的位置。為了方便動作設定,這裡就一併把設定這些動作所需要的伺服機位置數值,建成一張表給各位參考。各位就依照前面伏地挺身的動作設計方 法(圖F),把剩下的動作2到動作7儲存到SC8控制板裡面。
相關網站連結:
動作編輯器(Motion Editor)使用介紹:http://www.innovati.com.tw/website/down/html/?43.html
BASIC Commander & InnoBASIC Workshop 使用手冊: http://www.innovati.com.tw/website/down/html/?33.html
InnoBASIC Workshop 2 安裝程式: http://www.innovati.com.tw/website/down/html/?113.html
*鮑惟聖
擁有中原大學電機工程學士學位,利基應用科技(www.innovati.com.tw)的創辦人。多年來一直從事微處理器應用與系統工具的開發,並致力於推廣智慧型機器人科普教育。
更多:
仿生機器人──小怪獸(製作篇)
仿生機器人──小怪獸(升級篇)
本文原發表於《Make》國際中文版vol.03