極樂淨土舞蹈
為了展現 ROSA 的特長,之前搭配 RWG 6x2 Spider 拍了兩個舞曲:妖怪手錶體操舞、月薪嬌妻舞,現在為 OTTO like 機器人 (以下簡稱 OTTO),當然不例外給它配個舞,林益成點歌 極樂淨土,這是一首時間長達 3:45 的快慢舞步皆有的舞曲,把它當作挑戰,證明 ROSA 比其它機器人程式系統更適合編輯控制動作。
這項挑戰讓 ROSA 破了多項記錄,
一、跳舞時間長 3:45,因此舞步變化無法在 256 步驟內完成,必須加入副程式處理,因此有 _GOSUB 及 _RETURN 等指令加入。
二、舞步節奏有快有慢,因此除了 _DANCE 指令外,還增加 _SLOW2、_SLOW4、_SLOW8、_FAST2、_FAST4 等指令,可以維持原來 _TEMPO 節奏並對動作調速。
三、OTTO 是雙足機器人,些許角度偏差會造成機器人不平衡,重心錯誤會跌倒的,不像 RWG 6x2 Spider 只要有三隻腳以上撐地就不會倒,不需要精準角度定位,但是 OTTO 不行,因此每一顆 SG90 伺服馬達必須特調角度,確保角度正確。
四、Arduino IDE 沒有程式暫停除錯功能,為了可以方便每一個動作除錯,加入指令行控制,可以一行一行確認 OTTO 的動作,在 OTTO_Motion.h 中列有細部動作,例如
_DANCE, LMD, LD3, RMD, RSD, idl, idl, //
_DANCE, LR3, LSD, RR3, RD3, idl, idl, // 右後踏
_DANCE, LMD, LSD, RMD, RSD, idl, idl, //
你可以將紅字整行指令 COPY-PASTE 到 Arduino IDE 序列埠監控視窗,把指令傳入給 OTTO,機器人就會動作到該角度停格,這樣很方便實際觀測機器人每一步動作,而且可以微調,我就沒有使用任何動作編輯器,因為你在電腦上以軟體模擬動作調整可能跟實際動作有落差,但是指令控制則動作完全一致。
六、ROSA 三大類指令共存,為了 IR 有 # 開頭指令,因程式碼編輯有 _ 開頭指令,第三類為一般控制指令。這裡簡單說明第二三類指令差異,舉例 _SERVO、SERVO,_SERVO 主要用於程式碼內,_SERVO 已經定義好後面參數的意義,上面紅色指令 LR3 控制左大腿,LSD 控制左小腿,每個參數已固定控制特定的馬達,但是 SERVO 不一樣,他需要再加一個指定 Arduino pin 腳的參數,這是 ROSA 準備提供泛用指令給一般應用使用。另外指令中的空格與註解,會自動省略。
七、為了極樂淨土這首歌編舞,想要抓準節拍,歌曲應該聽了上千遍,旋律不只洗腦還穿腦了,以四分鐘聽一遍來計算,一千遍就要 4000 分鐘,估算一下投入的心力早就超過 100 小時,但是這是自己喜歡的事,不會在乎把時間耗在這裡。
八、開發 ROSA 這麼久了,還沒玩壞過 SG90 伺服馬達,歷經上百小時操練,終於見識到馬達不輪轉的情形,它雖然會轉沒冒煙,但是可以明顯感覺抖動厲害,轉得很不順暢,馬達壞了就是換掉。
這篇文章就當作序言導讀,後面再另外幾個專篇討論各項技術問題。程式碼後續補上,對這ROSA 程式有興趣的朋友歡迎留言,謝謝。
沒有留言:
張貼留言