2014-04-09

Danny EV3 Lab: 可程式化哨兵機器人(SENTIN3L)

機器哨兵(SENTIN3L)Danny EV3 Lab書中的另一個專案。

外觀上雖然看似三足,事實上這是一個四足步行機器人;另外在頭部有一個IR Sensor,身體有一對可以前後擺動的雷射槍手臂,分別裝有Touch Sensor以及Color Sensor
(SENTIN3L_Robots)
SENTIN3L
後面接一個萬向輪,它的四足步行機構是利用兩個並列的L-Motor以凸輪(Cam)方式各自驅動一對腳,將馬達輸出的連續旋轉運動轉換成為往復擺動的步行動作,所以SENTIN3L可以使用EV3Move SteeringMove Tank Block來控制機器人的前進/後退與轉彎,只不過一開始需要先調整四隻腳的初始位置能夠完全著地(*1),這樣開始步行之後才不致於產生搖晃以及兩對腳不協調的情形。
(SENTIN3L_Foots)
至於雷射槍手臂的擺動動作也是相同的原理,以M-Motor驅動一對球型接頭連結的凸輪,再加上音效和Color Sensor LED的顏色變換(*2),聲光效果十足。
(SENTIN3L_HeadAndArms)

SENTIN3L機器哨兵在外觀結構雖然沒有T-R3X機器暴龍來得威猛、生動,不過Danny賦予了它一個特別的功能:可以即時輸入指令並且加以儲存,之後再依序讀取每個指令執行所對應的動作;像這樣就如同讓SENTIN3L具備了可程式化的能力,可以隨時依據任務的需要,透過指令來變更它的行為動作,而不需要修改原來的程式。

對於可程式化功能首先就是如何輸入指令,方法是利用Color Sensor的顏色辨識功能,以顏色作為指令代碼,一旦判讀為合法的顏色指令就將它儲存起來。
下圖的顏色方塊就是作為指令輸入的工具,它共有白、黑、紅三種顏色,這也是合法的顏色指令。
(SENTIN3L_ColorCub)
其次為如何將Color Sensor辨識過的合法指令儲存起來Danny提供了兩種方式: Numeric Array BlockFile Access Block,差別在於使用後者可以將指令以檔案形式永久保存,即使關閉在開啟EV3電源也不需要重新輸入指令。

最後依序讀取所儲存的指令並解析、執行對應的動作,三種顏色指令所定義的執行動作分別是:
*
白色:機器人向前邁步,直到偵測到障礙物為止。
*
黑色:機器人隨機選擇方向轉彎,直到避開障礙物為止。

*紅色:發射雷射砲。
這三種動作的程式碼都分別封裝成為My Block,方便管理與再利用。

另外Danny還有幾個應用在這個專案中的實用技巧與觀念,也是值得一提:
(*1).
在前面提到為了要讓四足步行機構能夠平穩與協調,一開始需要將四隻腳的初始位置設成完全著地,作法上當然可以使用手動方式調整,不過Danny運用了偵測馬達 Power值的方式由SENTIN3L自行調整四隻腳的位置能夠自動著地的方法,以下就是他進行的步驟:
分別對於兩個L-MotorUnregulated Motor Block低速(Power: 10)轉動,當雙腳的位置開始著地時,馬達的轉速會因為碰到阻力而變小,所以使用Wait BlockMotor Rotation – Compare – Current Power去判斷小於3的門檻值為真時,就可以認定已經到達目標位置;而這種方式同樣也可以應用在判斷機構的行程範圍極限。

還有對於衡量馬達輸出值的Power Value,使用的單位雖然是百分比,據Danny說明,這個值確實的意義是代表馬達每0.1秒轉動的角度,如:Power Value: 10代表馬達每秒轉動100度,而Power Value: 100則表示每秒轉動1000度;
Danny所做的實驗,L-Motor最快的轉速為每秒850度,所以Power Value若設定超過85以上即沒有太大的差異,不過對於M-Motor確實是可以達到每秒1000度的最大值。

(*2). EV3 Color sensor
RGB LED會隨著測量模式的不同而改變顏色,也用在SENTIN3L雷射炮的聲光效果(參考圖示: SENTIN3L_Laser),以下是對應顏色的設定方式:
紅光Reflected Light Intensity Mode
藍光Ambient Light Intensity Mode
粉紫Color Mode
(SENTIN3L_Laser)

沒有留言:

張貼留言