2017年9月11日 星期一

ROSA 系統開發 38 ─ 極樂淨土舞 (Robot like OTTO)

http://4rdp.blogspot.com/2017/09/rosa-38-robot-like-otto.html


今年中與 maker 高手林益成相遇,有討論到 OTTO 機器人,他正在進行外觀修改,並送我一隻,因此我計劃今年下半年繼續進行 ROSA side project,就以它當作主角。

為了展現 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,機器人就會動作到該角度停格,這樣很方便實際觀測機器人每一步動作,而且可以微調,我就沒有使用任何動作編輯器,因為你在電腦上以軟體模擬動作調整可能跟實際動作有落差,但是指令控制則動作完全一致。

五、多重管道指令輸入,目前有紅外線遙控 (IR)、USB、Bluetooth,IR 受限於按鍵操作,只能單鍵搖控,或是數字碼搖控,例如 #18## 代表 18 號動作,先按 # 鍵起頭,再按數字鍵,再以兩次 ## 鍵結尾執行,同樣的 #18## 的指令字串也可以經由 USB 或 Bluetooth 傳送到 OTTO。

六、ROSA 三大類指令共存,為了 IR 有 # 開頭指令,因程式碼編輯有 _ 開頭指令,第三類為一般控制指令。這裡簡單說明第二三類指令差異,舉例 _SERVO、SERVO,_SERVO 主要用於程式碼內,_SERVO 已經定義好後面參數的意義,上面紅色指令 LR3 控制左大腿,LSD 控制左小腿,每個參數已固定控制特定的馬達,但是 SERVO 不一樣,他需要再加一個指定 Arduino pin 腳的參數,這是 ROSA 準備提供泛用指令給一般應用使用。另外指令中的空格與註解,會自動省略。

七、為了極樂淨土這首歌編舞,想要抓準節拍,歌曲應該聽了上千遍,旋律不只洗腦還穿腦了,以四分鐘聽一遍來計算,一千遍就要 4000 分鐘,估算一下投入的心力早就超過 100 小時,但是這是自己喜歡的事,不會在乎把時間耗在這裡。

八、開發 ROSA 這麼久了,還沒玩壞過 SG90 伺服馬達,歷經上百小時操練,終於見識到馬達不輪轉的情形,它雖然會轉沒冒煙,但是可以明顯感覺抖動厲害,轉得很不順暢,馬達壞了就是換掉。


這篇文章就當作序言導讀,後面再另外幾個專篇討論各項技術問題。程式碼後續補上,對這ROSA 程式有興趣的朋友歡迎留言,謝謝。

沒有留言:

張貼留言