86Duino Motion Editor

86Duino Motion Editor (86ME) 支援 86Duino 開發板來編輯機器人動作,讓編輯機器人動作的流程更加快速,並且能夠自動產生 86Duino 程式讓機器人操作編輯好動作。86ME 概念影片:

安裝教學

目前 86ME 支援 Windows XP/Vista/7/8,環境內必須安裝 MicroSoft .NET framework 3.5。下載86ME並解壓縮後會得到資料夾 86ME ,裡頭的檔案如下圖所示,包含 86ME 執行檔與所需的函式庫和相關說明,在支援的環境下直接執行 86ME.exe 即可開始操作 86ME 。
86ME_content

事前準備

  1. 建立 86Duino 與 86ME 的橋梁:86ME 會透過 Firmata 函式庫與 86Duino 做指令的傳輸,因此在使用 86ME 之前要將 86Duino Coding 210 的範例草稿(檔案->範例->Servo86->MotionEditor)燒錄到 86Duino 中,建立好雙方溝通的橋梁之後便可以正式開始操作 86ME。
  2. 連線方式與說明:目前 86ME 支援電腦以 COM port 與 86Duino 連接並發送動作訊號,86ME 一開始會讓使用者選擇 86Duino 與電腦的接口,並且分為自動、離線、選定三種模式來初始化連線。在執行 86ME.exe 之前,必須先了解這些模式。圖中的 –auto– 選項會去開啟最後加入的 COM port, COM4 則是 86ME 偵測到目前電腦上存在的 COM port,而 –offline– 選項則表示離線模式,將不會與 86Duino 做溝通。
    86MEstart
    因此,離線模式只支援檔案的編輯與 86Duino 程式產生,不支援即時的馬達控制。若要直接的控制馬達來編輯動作,在使用程式之前得先將 86Duino 上的 USB device 與電腦的 USB 連接並選擇 86Duino 所連上的 COM port(可以使用自動或是選擇已知的COM port)。如果想確認 86Duino 連上哪一個 port,可以嘗試在裝置管理員中找到 86Duino 與其所連接的 COM port,如下圖範例,可以得知 86Duino 與電腦的 COM4 連接。若在沒有連接 86Duino 的情況下選擇自動模式,程式將會在執行過程中切回離線模式。
    P_20150508_172230
    一般來說,離線模式較適合對機器人動作已經非常熟悉的使用者,讓這些使用者方便的去編輯現有的檔案做調整。而自動模式可以讓使用者方便的開始使用 86ME ,但若是電腦接上許多 86Duino 或許多不同的 COM port,為了避免混淆則建議使用選定模式。接著,設定好 COM port 接口後即可按下 Start 按鈕來進入 86ME 主視窗或是按 Exit 按鈕可以離開 86ME。86ME12_start86ME12_Main

功能說明

在此,我們會先將程式介面分為幾個區塊來做說明。
86ME12_area

  1. 這個部分有三個下拉式選單 File、Options、Help,其展開後的選項如下
    86ME12_filetool

    • File 選單的功能包含新增專案、讀取專案、儲存專案和結束程式,眼尖的讀者可能會發現許多的按鈕一開始呈現灰色不可點擊的狀態,若要編輯動作、測試動作就需要先以 File->New Project 來建立專案或是以 File->Open Project 來讀取之前儲存的專案。而 File->Save Project 可以儲存目前所編輯的專案,File->Exit 則可以結束程式。
      那麼如何新增專案呢?點選 File->New Project 會彈出一個 Robot Configuration 視窗,在這個視窗中可以設定三項機器人相關的設定。
      (1) 86Duino Board:用來選擇機器人所使用的 86Duino 型號,目前有 86Duino One/Zero/EduCake 供使用者選擇,選用不同型號的 86Duino 會開起數量不同的 SetServo 讓使用者設定,例如 86Duino One 有45根可以控制馬達的接腳,則 SetServo 0~44 都會出現,而 86Duino Zero 則只會出現 SetServo 0~13 和 42~44。
      86ME12_boardver
      (2) SetServo :用來設定連接在 86Duino 上的馬達,在這邊提供了馬達型號、偏移量(offset)、起始位置(homeframe)、馬達所支援的最大(Max)、最小值(min)來讓使用者設定。其中所支援的馬達型號如下,
      86ME12_servos
      若有選擇馬達,就可以藉由下圖中的捲軸操控選項來調整偏移量、起始位置,並且勾選 Sync 控制項後可以將偏移量、起始位置的角度同步在馬達上,可以即時調整。而馬達的可接受數值範圍在選擇馬達之後會自動變更,若要手動修改必須先勾選右上角的 min Max 控制項。
      86ME12_robotconfig
      (3) Load Robot Picture:為了方便對應馬達的位置到機器人的各個部位,使用者可以選擇一張圖片做為機器人的代表圖,詳細的使用方式會在後面的部分解說。
    • Options 選單包含了 Robot Configuration 選項,用來編輯目前的機器人相關設定,所包含的內容如同 File->New Project。
    • Help 選單包含了 Tutorials 和 About 選項,點擊 Tutorials 會跳轉到 86Duino 網站上關於 86ME 的說明文件,而 About 則會顯示出 86ME 相關的訊息,如作者資訊、86Duino 官方粉絲頁等等。
  2. Edit Settings 區塊有以下功能
    86ME12_editsettings
    (1) Sync 功能可以讓使用者決定是否同步目前所選到的 Frame 即時反應在機器人身上。
    (2) 這邊的拉霸可以決定 sync 時馬達轉動的速度,共區分成五級,右邊為最快,左邊最慢。
    (3) 釋放馬達,讓馬達不再出力。
    (4) Capture,用來讀取目前馬達的角度,目前所支援的馬達為 Kondo、Hitec、Futaba 這三個系列,使用時請特別小心,因為 Capture 功能會先將所有馬達釋放掉,如果沒有支撐好機器人可能會讓機器人跌倒。
  3. Action 區塊,可以用在
    86ME12_action
    (1) 顯示目前所選動作的類別。
    (2) 設定移動到此動作的時間,單位為毫秒。
  4. Hint 區塊,在這個區塊會提供使用者一些操作提示,如要怎麼新增動作列表、執行動作時有哪些注意事項等等,若已經對 86ME 非常熟悉,可以按自己的想法去操作程式,小提示基本上是針對剛開始使用 86ME 的使用者來提供下一步。
  5. Motion區塊,用來編輯和測試機器人的動作。每個動作會以 “Motion Name” 區隔,例如使用者可以新增如走、揮拳、蹲下等等的動作,在 “Motion Name” 欄位中輸入名字之後即可按下 “Add Motion” 按鈕新增。而當要新增別的動作時再輸入不同的名字並按下 “Add Motion” 即可,若要編輯已經存在的其他動作則可以利用 “Motion Name” 欄位的捲軸選取。
    86ME_addmotion
    之後就可以編輯已建立動作的動作列表(Action List),例如某個的動作如果需要四個 Frame 來呈現,就可以在 “Action List” 中按滑鼠右鍵新增動作。
    86ME12_addaction
    而關於 Action List 的操作主要有
    (1) 新增 Action,總共有五個類型的 Action
    (2) 刪除所選的 Action
    (3) 所選的 Action 上移一格
    (4) 所選的 Action 下移一格
    (5) 可以複製 Frame 或 HomeFrame 在下一格
    其中上移下移亦可以利用下方的兩個按鈕來完成。
    86ME_arrow
    而動作參數的調整會在區塊5說明。將動作列編輯好之後,若是在與 86Duino 連線的狀況,按下播放按鈕就可以測試 Action List 中從第一個動作到最後一個動作了!
    86ME_motiontest.png
    至於最下面的兩個按鈕,則是將目前所選到的動作列輸出成可以燒進 86Duino 的 ino 程式檔,Generate 86Duino Sketch (with Frame Files) 會產生一個 ino 檔和若干個動作設定檔,而 Generate 86Duino Sketch (All in One) 則會將所有設定都寫進一份 ino 程式。
    86ME12_program.png
    所產生出的程式檔案用法也就稍有區別,Generate 86Duino Sketch (with Frame Files) 所生出的檔案除了要將 ino 程式燒錄進 86Duino 外,還需要將產生出來的設定檔資料夾放入 86Duino SD 卡中(製作 86Duino SD 卡)的根目錄底下才可正確執行。而 Generate 86Duino Sketch (All in One) 只會產生出一個 ino 程式,只要將產生出來的程式燒進 86Duino 即可。
  6. 這個區塊是用來修改 Action List 裡頭每個不同動作的詳細內容,例如每個 Frame 中馬達的角度。而要詳細的演示如何操作,在下面會以一個較完整的使用範例來說明。

使用範例

此使用範例希望能讓使用者了解 86ME 的操作流程,會以 86ME 操作一個三顆伺服馬達所組成的六足機器人來當範例。此六足以一片 86Duino Zero 和三顆 DMP_RS0263 為主體,分別將左、中、右三隻腳對應到 86Duino 的第 11、43、44腳位。
86ME_hexapod.png

步驟一:
86ME12_step1.png

  1. 在 86ME 資料夾中對 86ME.exe 雙擊左鍵執行。
  2. 選擇 –auto– 來自動連接 COM port 並按下 Start 按鈕。

步驟二:
86ME12_step2.png

  1. 點擊 New Project 來新增一個專案,接著會彈出 Robot Configuration 視窗。
  2. 設定 86Duino Board 為 86Duino Zero,這為此範例的 86Duino 型號。
  3. 設定 11、43、44 接腳為馬達 DMP_RS0263 伺服馬達,此處的 offset、homeframe、Max&min 可以依照使用者的需求去設定,此次的範例為不設定。
  4. 按下 OK 按鈕完成設定。

步驟三:
86ME12_step3.png

  1. 建立好專案後可以發現 Motion Name 欄位亮起來,我們將要新增的動作名稱輸入,此處的舉例為 right (右轉)
  2. 按下 Add Motion 建立

步驟四:
86ME12_step4.png
在 Action List 下方的空白處點滑鼠右鍵 -> add action at the first field 來選擇一種 Action 新增動作到動作列中。
共有五種 Action,其功能說明如下,
Frame
86ME12_addframe.png

    選擇 Frame 之後可以調整當初所設定過的三個馬達,並且有幾個功能會開啟讓使用者調整。

  1. 勾選 Sync 會讓機器人立即反應目前所設定的值,在勾選著 Sync 的狀態下去移動下面的捲軸或改變數字,都可以讓機器人即時的反應。而 Sync 旁的拉霸可以調整 Sync 時馬達轉動的速度。
  2. Free Motors 按鈕可以將所有出力狀態的馬達釋放掉,不再出力。
  3. Capture,用來讀取目前馬達的角度,目前所支援的馬達為 Kondo、Hitec、Futaba 這三個系列,使用時請特別小心,因為 Capture 功能會先將所有馬達釋放掉,如果沒有支撐好機器人可能會讓機器人跌倒。
  4. Play Time 為移動到目前所設定的馬達角度要花上多少毫秒,直接輸入數字即可設定,如果設定為 0 的話動作是會被跳過的,所以請記得設定 Play Time。
  5. 設定要傳給馬達的 PWM 訊號數值,可以拉捲軸或是輸入數值來設定。

Delay
86ME12_adddelay.png
可以讓使用者設定 Delay,而這邊的延遲是單純的停滯,不會讓機器人有任何動作的產生。

Flag & Goto

  • Goto 和 Flag 是讓使用者可以以迴圈的方式測試動作,而不用寫一大串的 Frame 出來。Flag 只需要設定好名字,即可查看 Action List 裡頭的 Flag 是否加上剛剛所設定的名字了,若是有則設定成功。

86ME12_addflag.png

  • 而 Goto 除了設定名稱之外,還必須設定迴圈次數與是否觸發與 Goto 次數或可以選擇無窮跳轉。Goto 詳細的行為是在播放狀態下,執行到 Goto 時會去檢查是否要執行此 Goto,若要執行,則去尋找 Goto 所設定的目標 Flag 名稱,找到後再一次從 Flag 那邊開始執行動作。

86ME12_addgoto.png

  1. 寫好目標 Flag 的名稱,此處寫上跟剛剛所建立之 Flag 相同的 test。
  2. 設定是否執行。
  3. 設定是否無窮執行 Goto。
  4. 設定執行次數。

HomeFrame
選擇 HomeFrame 的話會加入一個值為初始位置且不可更改的 Frame,要更改 HomeFrame 的值只能在 Options -> Robot Configuration 中修改。這一選擇是方便使用者歸 Home ,並且能辨認出哪裡會執行歸 Home 的動作。
86ME12_addhomeframe.png

步驟五:
編輯好自己所希望的動作後,就可以利用播放、暫停、停止按鈕進行測試,一般的執行順序如左下圖 ,若是在執行 Goto 的狀況則如右下圖。
86ME_mtest.png

接著,使用者們可以選擇繼續編輯不同專案 (回到步驟二),或是不同的動作 (回到步驟三)。或是選擇存檔 ( File->Save Project ),會產生一個 .rbm 檔案,下一次若用 ( File->Load Project )則可以繼續使用上次儲存的專案。

加入圖片:
這個功能的目的是為了讓使用者方便對應馬達,不用每次讀取專案都還要回想馬達的對應到機器人的哪個位置。在新增專案( File-> New Project ) 或是修改專案組態 ( Options->Robot Configuration ) 時都可以加入機器人圖片,利用 Load Robot Picture 按鈕可以讀取 PNG、JPG、GIF 檔案來當作機器人圖片。一旦讀取之後便不可再移除,而設定好之後, Action List 中的 Frame 型別動作就可以讓馬達自由移動,來達到馬達與機器人部位對應的效果。
86ME12_picmode.png
若是讀取圖片後存檔,所儲存的 .rbm 檔案會記住圖片在電腦中的路徑,因此若是圖片位置有變更或移除,下一次讀取專案時可能會找不到,還請使用者們多多注意!

原始碼

86ME 為開源的動作編輯器,原始碼發布在GitHub上,歡迎有興趣的朋友下載或分享。此專案建置的環境為 Windows 7 + Visual Studio 2013 社群版。


對於文件的更正與建議,請發表至論壇