86me V1.8

less than 1 minute read

86ME v1.8 算是改動蠻大的一個版本,加入了支援 Inertial Measurement Unit(IMU) 的兩個功能,一為加速度事件觸發,另一為 Gyro 補償。Action List 部分也新增了 Comput、If、Release 三個新指令。另外也有新增一些讓編輯動作更方便的 UI 唷!

Compute & If

這個功能是用來在 Action List 中實做出一些邏輯運算,供使用者自由運用的變數有 50 (v0~v49)個,而系統變數包含亂數(R0)目前時間(T0)加速度計之數值(AccX, AccY, AccZ)陀螺儀的 pitch 與 roll。而 Compute 就是可以利用這些變數做運算,來計算自己所需的數值,唯要注意的點是不同的動作最好使用不同的變數(v 系列),若兩個動作中使用了相同的變數,又被同時被觸發時,可能會產生同步問題。而 If 指令可以說是 Compute 的好兄弟,他可以判斷兩變數之間的關係(大於、等於之類的),若成立則會跳轉到指定的 Flag 去,藉此可讓 86ME 編輯出更複雜的功能。

以下就是以這個新功能打造的 DEMO,在一些電動遊戲中,角色閒置一段時間後會自己做一些動作來活動筋骨,此 DEMO 就是讓機器人待機時也有這樣的功能。

Gyro Compensation

陀螺儀的補償可以說是這版本最煞費苦心的了,從要設計新的 UI 進來就覺得蠻苦手的,後來把 IMU 的設定也加到 Robot Configuration 裡面,是好是壞就等時間告訴我答案了。實際功能、程式自動生成的部分更是經過不少努力,簡言之,目前的陀螺儀補償功能是去偵測機器人上 IMU 目前的狀態(以四元數表示) 與初始狀態之四元數(使用者可自行設定或連線後自動偵測)兩者間的關係(可以再得出一四元數),最後得出的四元數可以換算為目前機器人的傾角,也就是相對於初始狀態的 Roll 與 Pitch,有了這兩個角度,以即使用者可自行設定的 Gain 值,我們就能得出需要補償的 PWM 值(Gain × Pitch/Roll),這樣的補償方式也就等價於比例控制器,對於目前的 86ME,可以說是一個簡單又有效果的功能,也許未來會有完整的 PID 支援,不過這誰也說不定 XD

New On-Off Button

這個功能能讓使用者在編輯動作時釋放單一顆馬達,讓不必要出力的馬達可以好好休息,以免工作太久累壞了 O___Q

Usage

最後補上小弟夥同安卓林弄得簡易教學影片。

Updated:

Leave a comment