Tag Archives: robocon

[Robocon雜誌專欄]輕鬆使用Android 裝置控制樂高機器人:讓機器人前進指定距離

文/曾吉弘(CAVE教育團隊

 

在7 月號的專欄中, 我們介紹了如何使用Slider 滑桿元件來控制樂高機器人馬達的轉速與方向。本期我們將介紹如何使用樂高馬達中的編碼器(encoder)來讓機器人前進指定的距離,並且深入介紹App Inventor 中對於樂高機器人的SetOutputState 低階控制指令。

樂高NXT 伺服馬達

樂高NXT 的馬達是所有樂高馬達中輸出扭矩最大也是最有份量的一款,另一方面,它也是唯一有配置角度感應器的馬達,經過計算之後可求出機器人行走的距離或轉動的方位角,非常方便。

本期專題將使用App Inventor 中,NxtDrive 元件的MoveForward 指令與NxtDirectCommand 的setOutputState 指令來控制樂高NXT 馬達。圖1 中是NxtDrive 的屬性設定欄位,由於本範例要控制機器人上的兩個馬達,所以需要兩個NxtDrive 元件, 將其DriveMotors 欄位分別設為B 與C ,代表控制樂高NXT 機器人的B 與C馬達。WheelDiameter 代表目前所使用的輪胎直徑,單位為公分。以本範例所使用的輪胎直徑為5.6 公分,因此請填入5.6。樂高的輪胎胎皮上都會標示輪胎的尺寸(圖2),請依照您所選用的輪胎填入正確的數字,否則機器人行走的距離就不正確啦。

Continue reading

[CAVE專欄] 輕鬆使用Android裝置控制樂高機器人:用滑桿控制馬達速度

http://pansci.tw/archives/45497

2013年七月號的 ROBOCON 專欄題目是[輕鬆使用Android裝置控制樂高機器人:用滑桿控制馬達速度],使用Slider 元件來控制馬達的方向與速度。

更多資訊請到App Inventor中文學習網 ~

========================================================================

本期專欄將與大家介紹如何使用Slider 滑桿元件來分別控制樂高機器人馬達的轉速與方向。滑桿元件好比是電玩遊戲機的類比搖桿,提供了比按鈕更細緻的操控效果。

樂高NXT 伺服機
樂高公司所生產的馬達種類約有十數種,其中NXT 馬達是輸出扭矩最大也是最有份量的一款馬達,相對地耗電量也是相當驚人。另一方面,NXT馬達是所有樂高馬達中唯一有配置角度感應器的馬達,透過角度感應器我們可以精確指定馬達轉軸之旋轉角度(最低為1 度),甚至經過計算之後可轉換為機器人行走的距離,非常方便。在App Inventor 中是透過NxtDrive元件來控制樂高NXT 馬達,雖然控制功能不如其他程式語言例如C 語言或是LabVIEW 來得豐富,但是基本操作也是相當足夠了。圖1a 是NxtDrive的屬性設定欄位,由於本範例要使用三個Slider 元件分別來控制三個馬達,所以需要三個NxtDrive 元件, 將其DriveMotors 欄位分別設為A、B 與C,代表控制樂高NXT 機器人的A、B 與C 馬達。至於WheelDiameter 代表目前所使用的輪胎直徑, 單位為公分。
在此不必理會此欄位,因為它不會影響到本範例的操作效果,我們會在日後的專欄來介紹如何使用它。


圖1a NxtDrive 的屬性設定欄位。


圖1b NxtDrive 的轉動指令。

開始玩機器人

請把NXT機器人組裝好,並將左側馬達接在NXT的輸出端B,右側則是輸出端C(註1)。請確認NXT主機的藍牙是啟動的,接著將NXT主機與 Android手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了。啟動藍牙之後您可以從NXT主機的螢幕左上角看到藍牙的符號。

接下來依序介紹程式的各個功能:

STEP1 登入畫面:
首次進入程式的畫面如圖2a , 只有「NXT 裝置清單/ 連線」按鈕可以按,其它所有按鈕都無法操作。點選「NXT 裝置清單/ 連線」按鈕後進入藍牙裝置清單(圖2b),請找到剛剛配對完成的NXT 主機名稱(本範例為abc),點選之後就會由Android 裝置對NXT 主機發起藍牙連線。順利連線成功的話,就可拉動Slider 滑桿元件來控制馬達轉速(圖2c)。

圖2a 程式首次執行的畫面。
圖2b 點選連線按鈕後進入藍牙裝置清單。
圖2c 連線成功後才可進行相關操作。

 

STEP2 程式初始化:
在點選連線清單之前(ListPickerConnect 的BeforePicking事件), 需先將清單內容指定為Android 裝置上的藍牙配對清單(圖3a)。點選之後則先測試連線是否成功,成功則將「選擇感測器」與「開始唸/ 停止」設為可點選(圖3b)。


圖3a 指定藍牙配對裝置清單。


圖3b 連線成功後啟動相關元件。

 

STEP3 使用滑桿控制馬達電力:
在設計的想法上,我們希望滑桿拉到最左邊時,馬達電力為-100(全速反轉),拉到最右邊時馬達電力為100(全速正轉),置於中間時電力則為0 ,同時也讓馬達停下來。
由於滑桿元件最小值只能為0 ,因此我們將滑桿的最大值改為200 ,後續運算再減100 就可對應到馬達電力-100~100 的範圍了。至於滑桿的初始位置則設為100 ,即滑桿正中央處。
拉動滑桿時, 會呼叫Slider 的PositionChanged 事件並帶入thumbPosition 參數, 我們就是要用這個參數來控制馬達的電力。在圖4中,我們將滑桿位置thumbPosition_A 減去100 之後四捨五入, 指定為power 變數的內容, 這就是馬達的電力。接著將相關數值顯示於畫面上, 最後呼叫NxtDrive 的MoveForwardIndefinitely 指令並塞入power 變數值就好了。這樣當滑桿位於最右側時,thumbPosition_A 的值為200 ,power 變數值為200-100為100 ,代表馬達正向全速轉動。


圖4 Slider 元件控制馬達轉速。

 

STEP4 定義副程式:
您應發現了三個Slider 元件做的事情好像大同小異,這時候就可以將這些類似的指令包成一個副程式,不但程式的可讀性變高,日後要修改程式時也更加方便。本範例中宣告一個名為move 的副程式,並可傳入一個參數。當我們拉動SliderA 時,就會傳入一個文字A 給move 副程式。因此的程式可以簡化變成以下的樣子(圖5a):


圖5a 使用副程式架構來改寫Slider 事件。

我們將文字A 傳入move 副程式之後, 就都交給它來處理了。那麼,move 副程式裡面到底發生了什麼事呢? 在move 裡面, 我們會判斷接收到的參數motor 內容是否等於「A」,如果是的話就執行圖5b 的內容, 圖5b 的內容是不是和圖4 是一樣的呢?
那麼另外兩個Slider 事件您應該已經知道怎麼做了,就是分別送出文字「B」與「C」,並在move 副程式中進行對應的判斷與動作(圖5c)。這樣一來我們就能集中管理程式碼了。


圖5b 將原本的Slider_A 事件中指令整合到副程式中。


圖5c 不同的Slider 事件差別在於送出的參數。

 

STEP5 停止所有馬達並將滑桿歸零:
為了方便起見, 請新增一個按鈕,按下之後會三個Slider 元件的滑桿回復到正中央位置,同時也會將power 變數值歸零,馬達也就停止轉動(圖6)。


圖6 停止所有馬達。

 

STEP6 斷線:
按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使按鈕恢復到未連線時的狀態(圖7)。


圖7 按下「斷線」按鈕時中斷藍牙連線。

 

操作
實際執行的時候,請先確認NXT 已經開機且藍牙也啟動了,並將NXT 接上三個馬達( 圖8a、8b、8c)。接著在Android 裝置上點選程式畫面中的「連線」按鈕,會進到藍牙清單畫面,點選您要的NXT 主機名稱並連線成功後,就能拉動滑桿來控制,或按下「停止所有馬達」按鈕來停止馬達。

圖8a A 馬達電力82% 正轉。
圖8b B 馬達電力34% 正轉。
圖8c C 馬達電力46% 反轉。

 

本範例介紹了Slider 滑桿元件,它提供了更細微的控制, 善加利用它,您的機器人會有更多有趣的功能。程式模組化是非常重要的程式開發觀念,希望您可以藉此建立起良好的基礎。
期待您從本期專欄的內容來激盪出更多有趣的火花。請繼續關注CAVE 的機器人專欄唷!

 

歡迎大家由以下連結或掃描以下的QRCode 來下載本程式:

請到Google Play 搜尋「CAVE 教育團隊」就找得到我們的樂高機器人系列app 了。在App Inventor 中文教學網上直接下載本範例的App Inventor 原始檔與apk 安裝檔。

註1: 想學如何開發App Inventor 程式嗎? 請到AppInventor 中文學習網與我們一同學習。
註2:將Android 手機設定為可安裝非Google Play 下載的程式以及讓手機與樂高NXT 主機連線等說明請參考這裡
註3:與NXT 連線後如果出現[Error 402] 之錯誤訊息請不必理會,程式依然能正確執行。

文章原文刊載於《ROBOCON》國際中文版2013/7月號

[Google Play] Robocon雜誌 CAVE專欄[念出NXT機器人感測器數值] 上架Google Play了!

每期Robocon雜誌中,都有 CAVE 的「輕鬆使用Android裝置控制樂高機器人」專欄,一轉眼也來到了第九篇了呢!

本篇的主題是「念出NXT機器人感測器數值」。使用了App Inventor中的TextToSpeech元件(本文後簡稱TTS元件),讓手機「說出」機器人感測器的狀態。程式執行的過程中,我們還可以即時更改感測器的類型,是很實用的功能呢!

App Inventor的TextToSpeech元件可以讓Android手機以語音方式輸出指定的文字或數值內容,本範例就是讓手機每秒播報一次感測器數值。除此之外還可指定語系與國家,預設值是eng(英語)與USA(美國),代表美式英語。您可以參考App Inventor中文學習網來改為其他歐陸語系,例如德語、法語或義大利語,會有更有趣的效果。

!!請注意目前App Inventor不支援中文等亞洲語系的語音輸出。   

本程式是用 App Inventor 開發並順利在 Google Play 上架,請到 App Inventor 中文學習網的檔案庫下載原始檔

Google Play 連結請按我  <- 請給我們支持與鼓勵~

[CAVE專欄] 輕鬆使用Android裝置控制樂高機器人:跑步機器人

http://pansci.tw/archives/36994

CAVE在2013年三月號的ROBOCON 專欄題目是[輕鬆使用Android裝置控制樂高機器人:跑步機器人],搖晃手機就能讓機器人前進一小步,搖動手機來看看誰的機器人跑得快!

更多資訊請到App Inventor中文學習網 ~

———————————————————————————————

Android 手機上的感測器種類相當繁多,但一般來說都會有以下三種:加速度感測器、姿態感測器與定位感測器。2013 年1 月號我們介紹了如何藉由手機的傾斜程度來控制機器人的動作,就是使用姿態感測器的X、Y軸資訊來共同決定樂高機器人的左右馬達電力。

本 次專欄要改使用加速度感測器(Acceleration sensor) 來完成一個機器人跑步機,是的,您甩手機,機器人跑步。大家一起來甩甩甩,看誰的機器人跑最快喲!加速度感測器會告訴您手機三個軸向上的加速度值, 單位是m/s2。當您將手機如圖1 平放在桌面上時,地球施予手機的重力會在Z 軸上呈現約-9.8 m/s2。


圖1 手機的XYZ 軸向示意圖。

將 三軸加速度值顯示在畫面上在開始玩機器人之前, 我們先把加速度值顯示出來吧( 圖2a)。App Inventor對於加速度感測器提供了加速度改變事件(AccelerationChanged), 只要加速度值有改變,就會自動執行件內容。圖2b 就是將XYZ 三個軸向的加速度值分別更新在三個TextBox 中。

由 於加速度的單位是m/s2 , 所以會有兩個因素影響到加速度值的大小。第一是「甩動的幅度」,和移動距離有關,第二是「甩動的速度」,後者由於時間平方倍的關係,所以快速的小幅甩動也 能得到很高的加速度值。您一定發現到了,即便將手機靜置在桌上, 加速度值仍不斷微幅跳動。

這是正常的狀況唷!感測器由於擷取實體環境的變化,因此一定會有雜訊(noise)存在,如何得到很平滑的感測器值需要一點數學運算。您可以使用各種平均法,例如移動平均或是加權平均法來避免突然的極大值或極小值讓您的機器人亂了方寸。


圖2a依序將XYZ 軸的加速度值顯示在畫面上。


圖2b 加速度感測器的加速度改變事件。

 

開始玩機器人

請 把NXT 機器人準備好,並將左側馬達接在NXT 的輸出端B , 右側則是輸出端C( 註1)。請確認NXT 主機的藍牙是啟動的,接著將NXT 主機與Android 手機進行藍牙配對(註2),完成之後就可以把機器人放到一了,啟動藍牙之後您可以從NXT 主機的螢幕左上角看到藍牙的符號。

接下來依序介紹程式的各個功能:

STEP1: 登入畫面

首 次進入程式的畫面如圖3a , 只有「連線」按鈕可以按,其它所有按鈕都無法操作。另一方面,因為加速度測器目前是關閉的,這時不論您如何甩動手機,CAVE 小圖案都是不會動的,我們會在連線成功之後才將其啟動。點選「連線」按鈕後進入藍牙裝置清單(圖3b),請找到剛剛配對完成的NXT 主機名稱( 本範例為abc), 點選之後就會由Android 裝置對NXT 主機發起藍牙連線。順利連線成功的話,就會出現一個灰色Label 不斷更新顯示X 軸向的加速度值,搖晃手機還能看到CAVE 小圖案在畫布上下移動(圖3c)。


圖3a 程式首次執行的畫面。

圖3b 點選連線按鈕後進入藍牙裝置清單。
圖3c 連線成功後出現相關資訊,CAVE 小圖案會上下跳動。

 

STEP2 :程式初始化

接 著是點選連線清單之前(ListPicker_CONNECT 事件), 先指定清單內容為藍牙配對裝置清單(圖4a)。在連線之前,CAVE 小圖案是無法移動,因為我們先將加速度感測器關起來了,要等到連線成功之後才會啟動(圖4b),這時原本不會動的CAVE 小圖案以及無法按下的「斷線」按鈕這時也都可以操作了。


圖4a 指定藍牙配對裝置清單並關閉斷線按鈕隱藏觸控板。


圖4b 連線成功後啟動相關元件。

 

STEP3 :加速度感測器大於邊界值啟動馬達

我們在Acceleration1.AccelerationChanged事件中,只要X 軸向的加速度值大於10 ,就會啟動樂高機器人它前進一段距離,但不會一直走。以下依序說明(圖5):

1. 上下移動C A V E 小圖案: 使用ImageSprite.MoveTo指令,將XY欄位指定為140以及(xAccel * 50)+130,這樣當您搖晃手機時,可愛的CAVE小圖案就會根據您甩動的方向與速度上下移動,相當有趣。

2. 顯示變數於標籤上:將X軸向的加速度乘以50之後,以逗號分開,再與CAVE小圖案的Y座標一併顯示在標籤上,如此就能方便調整參數。為避免單一字串過長, 我們使用make text指令將多個字串組合在一起,這在各程式語言中都是常見的技巧。

3. 轉動馬達:最當X軸向加速度值大於10的時候,就會使用NxtDrive.MoveForward指令讓馬達轉動指定的距離。第一個參數75代表馬達電力為75(最大值100),第二個參數1代表在指定輪胎尺寸的情況下,可以讓機器人移動1單位長,而非持續運轉。


圖5 根據加速度感測器的X 軸向變化資訊來控制機器人。

 

STEP4: 斷線

按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使按鈕恢復到未連線時的狀態(圖6),CAVE 小圖案又再次回到畫面中央且不再移動了。這時候您可以再次發起連線。


圖6 按下[ 斷線] 按鈕時中斷藍牙連線。

操作:
實 際執行的時候, 請先確認NXT已經開機且藍牙也啟動了。接著在您的Android 裝置上點選程式畫面中的「連線」按鈕,會進到藍牙清單畫面,點選NXT 主機名稱連線成功後,就可以把手機拿起來甩啦!握持方向就是們平常講電話時的拿法,這也是最順手的拿法。如果您要換方向的話,就需要取其他軸向的加速度 值。用力甩一下機器人就會往前跑一點(圖7a、圖7b),操作方式相當直覺,您一定會喜歡的,但小心別把手機掉到地上啦。


圖7a 手機向上甩動時的畫面。
圖7b 手機向下甩動時的畫面。

2013 的1 月號介紹了姿態感測器,這一期我們延伸介紹了加速度感測器,這是體感遊戲設計的基礎。由於加速度感測器相當靈敏,您也許需要針對本範例中一些參數進行調整來達到更好的效果。

 

歡迎大家由此下載本程式來玩玩看。或掃描以下的QRCode也可以直接將檔案下載到手機,或到App Invento中文教學網上直接下載App Inventor原始檔與apk安裝檔。更多有趣的機器人app請到Google Play搜「CAVE教育團隊」就找得到了。

註1:機器人運動方向有可能因為車頭指向而和程式設定相反,只要將左右馬達電線互換即可。
註2:想學如何開發App Inventor程式嗎?請到App Inventor中文學習網(http://www.appinventor.tw)與我們一同學習。
註3:將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考這裡
註4:與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。

文章原文刊載於《ROBOCON》國際中文版2013/3月號


TEst

[CAVE專欄] 輕鬆使用Android裝置控制樂高機器人:翻轉控制

CAVE 的 Robocon雜誌專欄:輕鬆使用Android裝置控制樂高機器人,2013年1月號來囉!http://pansci.tw/archives/32950

2012年可是紮紮實實寫了六篇呢!一起回顧一下吧。

11月號:【二維條碼 】   

9月號:【多點觸控】

7月號:【單點觸控】

6月號:【(偽)輻射偵測器】

5月號:【感測器面板】

3月號:【按鈕控制】

1月號:Google Map路徑追蹤機器人

以下節錄本期精彩內容, 請各位好朋友點選文章最上端連結來看全文唷.

===========================================

本期的App Inventor機器人專欄要藉由手機的傾斜程度來控制機器人的動作。本範例使用了姿態感測器(Orientation Sensor)的X、Y軸向資訊來共同決定樂高機器人的左右馬達電力,並同時控制畫面上的CAVE小圖案移動。本範例與2012年7月號的〈單點觸控〉的 概念很相似,只是訊號來源由觸控點座標改為姿態感測器變化量而已。在數學運算上用到了sin與cos等基礎三角函數,對於學生來說是個相當不錯的練習機 會。

姿態感測器主要感應手機方位的變化,回傳了三個軸向的傾斜角度,分別是X軸:俯仰(Pitch)、Y軸:翻滾(Roll)與Z軸:旋轉(Yaw)。

所有的計算都是在OrientationSensor1.OrientationChanged事件中完成,只要姿態感測器任一軸向的資訊有改變就會自動呼叫本事件並執行其中內容。以下依序說明:

1.移動CAVE小圖案:使用ImageSprite.MoveTo指令,將XY欄位指定為ImageSprite.X – roll以及ImageSprite.Y – pitch,這樣當您搖晃手機時,可愛的CAVE小圖案也會在畫面上漂來漂去,相當有趣。請注意當CAVE小圖案沿著Y軸正向移動時,這時候增加的是pitch而不是roll,不要搞錯囉!

2.更新變數:

  • angle = OrientationSensor.Angle – 45:取得手機傾斜角並進行偏量補償,方便馬達電力計算。
  • power = OrientationSensor.Magnitude * 200:OrientationSensor.Magnitude是一個介於0到1之間的小數,代表手機的傾斜程度,您可以調整200這個常數來放大或縮小傾斜程度對於機器人電力的影響。雖然馬達電力範圍為-100到100,但超過也沒關係,馬達電力不會因此而受影響。
  • LMotor = cosangle * power:左馬達電力
  • RMotor = sinangle * power:左馬達電力

*註:您可以堅持老派風格,也就是使用pitchroll變數值,搭配三角函數計算之後一樣能有相同的機器人控制效果。但本範例使用姿態感測器的angleMagnitude這兩項變數,也是另一種作法。

3.顯示變數於標籤上:將 pitch與roll的資訊更新在Label_Orientation標籤上,並將左右馬達電力LMotor與RMotor更新在Label_Motor 標籤上。為避免單一字串過長,我們使用make text指令將多個字串組合在一起,這在各程式語言中都是常見的技巧。

4.轉動馬達:最後把LMotor與RMotor變數值分別指定給NxtDrive_B與NxtDrive_C的MoveforwardIndefinitely指令就可以讓兩個馬達根據手機傾斜狀況來運動了。

圖8a  手機向前傾斜,機器人前進,馬達電力為(52,49)。
圖8b  手機向右傾斜,機器人原地右轉,馬達電力為(55,-57)。
圖8c  兩個向左後方傾斜,機器人向左後方轉彎,馬達電力為(-37,-7)。

歡迎大家由這個下載本程式來玩玩看!或掃描以下的QRCode也可以唷!更多有趣的機器人app請在Google Play搜尋「CAVE 教育團隊」就找得到了。

[CAVE專欄] 輕鬆使用Android裝置控制樂高機器人:二維條碼

http://pansci.tw/archives/29798

CAVE 的 Robocon雜誌專欄:輕鬆使用Android裝置控制樂高機器人,今年寫了六篇!一起回顧一下吧。

11月號:【二維條碼 】

9月號:【多點觸控】

7月號:【單點觸控】

6月號:【(偽)輻射偵測器】

5月號:【感測器面板】

3月號:【按鈕控制】

1月號:Google Map路徑追蹤機器人

來看看11月號的QRCode控制樂高機器人吧,詳細內容與程式碼還是請您到以上連結來看:

本期的App Inventor 機器人專欄將結合Android 應用程式中常見的QRCode 掃描功能,讓機器人可以讀取QRCode 中的資訊後執行對應的動作。您也會學到如何使用ZXing 的QRCode 產生網站來產生各種不同內容的二維條碼。
我們針對機器人來發展了一種特殊的二維條碼指令:「B,50,10,C,50,10」,依序代表了「左側馬達,左側馬達電力,左側馬達轉動距離,右側馬達,右側馬達電力,右側馬達轉動距離」。

QR 碼是一種條碼, 比我們去便利商店買東西時,店員所掃描的傳統條碼相比,可以儲存更多資料。另一方面,QRCode 還可以說明現在這筆資料的型態,例如是電話號碼、超連結、純文字或是地理座標等等,智慧型手機就可以根據這些資料型態來開啟對應的程式(如果是電話號碼就 會詢問是否要撥號或是發送簡訊), 非常方便。現在您在街頭巷尾都可以看到各種QRCode ,掃瞄之後就可以造訪網站或是作為折價劵,QRCode 在日本已經是一項非常普遍的技術。

請到ZXing 的QRCode 網站(http://zxing.appspot.com/generator),先選擇資料類型為URL 超連結( 圖1a), 輸入您想要的網址後點選「Generate」就可以看到QRCode了。接著您就能使用手機上任何一種QRCode 掃描軟體來掃瞄了, 還沒有的話請上Google Play下載。

[CAVE專欄] 輕鬆使用Android裝置控制樂高機器人:多點觸控

http://pansci.tw/archives/25381  <- 完整內容請點我

http://www.robocon.com.tw/columns/   <-  CAVE所有ROBOCON專欄

本期CAVE的App Inventor機器人專欄延續了七月號的[單點觸控],但這次要請您使用左右手的姆指來控制樂高機器人,左手拇指控制機器人左側馬達正反轉動,右手就是右側馬達囉。

特別加入了姿態感測器, 當我們轉動手機時, CAVE小圖樣就會跟著姿態感測器的Z軸資訊旋轉, 很有趣唷!!



這是一個Canvas拖拉事件的內容

1.將Lpower設為(150-CurrentY) / 150,CurrentY就是觸控點的Y座標,Canvas的高度為300像素,這樣一來當手指頭在畫布中央時,Lpower為0,向上移動為正,向下則為負。接著將Lpower數值顯示在標籤LabelB上。

2.使用ImageSprite.MoveTo指令,將XY欄位指定為20與CurrentY-30,這樣就能用手指拉著可愛的CAVE小圖案走。CurrentY-30的原因是因為CAVE小圖案的尺寸為60 x 60,需要30像素的修正量。

注意:由於本範例只使用觸控點的Y軸向變化,因此將X欄位固定為20,即便您左右移動姆指,CAVE小圖案也不會移動。

3.最後將B馬達電力指定為Lpower變數值就可以了,這樣當我們在黃色觸控板上移動左手拇指時,B馬達就會轉動,向上移動為正轉,向下則為反轉,手指頭離螢幕中心愈遠轉愈快。


請要下載本程式來玩玩看的朋友,請由以下連結下載:


http://dl.dropbox.com/u/11288673/AI_NXTMultiTouch.apk

快來Google Play下載好玩的樂高NXT機器人控制app !!

現在CAVE在Google Play上有4隻樂高機器人控制程式啦~  之後會隨著Robocon專欄同步更新,

App Inventor寫的程式也可以上傳Google Play了唷, 想要上架第一隻App嗎? 快點來學App Inventor吧!

1. 按鈕控制(Android)

2. 姿態控制(Android)

3. 按鈕控制(App Inventor)

4. 單點控制(App Inventor)

歡迎來信(http://www.appinventor.tw)索取原始碼。

[CAVE專欄] 輕鬆使用Android裝置控制樂高機器人:(偽)輻射偵測器

http://pansci.tw/archives/16968

CAVE的Robocon 6月號特刊主題是:(偽)輻射偵測器.

使用簡易的線性方程式來將光感測器值轉換為NXT主機發音的頻率,並根據頻率的高低來轉換Android手機上的畫面。如果數值過高(數值大於600),螢幕會顯示紅色來警告;如果更高的話(代表輻射量超標了,快逃!)會在畫面上顯示一個骷髏頭。

請要下載本程式來玩玩看的朋友,請由以下連結下載:

http://dl.dropbox.com/u/11288673/NXT_Radiation.apk

或掃描以下的QRCode也可以唷!

[CAVE專欄] 輕鬆使用Android裝置控制樂高機器人:感測器面板

http://pansci.tw/archives/15625 

CAVE在最新一期的ROBOCON連載的題目是[輕鬆使用Android裝置控制樂高機器人:感測器面板]. 使用App Inventor就能輕鬆將樂高機器人的感測器值顯示在手機畫面上.

更多資訊請到App Inventor中文學習網 ~

—————————————————————————————————

延續上期用手機遙控機器人,本期要將您的Android做成一臺手持式資訊面板,可以持續更新NXT機器人的四種感測器資訊。

首先把NXT機器人準備好,並依序將觸碰感測器,聲音感測器,光感測器與超音波感測器接在NXT的1至4號輸入端,您之後可以自行修改感應器的連接埠。

請先確認NXT主機的藍牙是啟動的,接著請將NXT主機與Android手機進行藍牙配對,完成之後就可以把機器人放到一邊了,啟動藍牙之後您可以從NXT主機的螢幕左上角看到藍牙的符號(圖1)。

圖1  NXT主機藍牙已開啟(左上角)

接下來依序介紹App Inventor程式的各個功能:

STEP1:

首次進入程式的畫面如圖2,您可以看到只有 [連線]按鈕可以按,[斷線]按鈕則無法按下(Enabled屬性設為false),這時候只能點選[連線]按鈕。

圖2 程式首次執行的畫面

STEP2:

接著是將ListPickerConnect清單指定為已配對的藍牙裝置清單(圖3),點選[連線]按鈕之後,會進入Android裝置的藍牙連線 清單(圖4),請找到剛剛配對完成的NXT主機名稱(本範例為abc),點選之後就會由Android裝置對NXT主機發起藍牙連線,跳回主畫面之後您可 以看到感測器的資訊已經更新在Android裝置畫

請注意我們在NXTList.AfterPicking事件中加入一個if,來判斷是否成功建立藍牙連線 (BluetoothClient.Connect),如圖5。這可以處理在非預期情況下的斷線情形,例如機器人沒電而關機或是手機來電等狀況,此檢測步 驟可避免程式發生錯誤。圖5中下方的NxtSensorLight1.GenerateLight指令使光感測器前端發出紅光,您可以將True改為 Flase來關閉光感測器前端光源。

圖3  將ListPickerConnect清單內容指定為已配對的藍牙裝置清單。

圖4  Android裝置的藍牙連線清單

圖5  再次檢查藍牙連線是否成功

STEP3:

本程式的關鍵就在這一步:使用Clock元件來定時更新感測器值。在App Inventor中所有與時間有關的功能,包括時鐘、計時器與碼錶等等都由Clock元件負責。請將Clock元件的屬性如圖6來設定,代表每200毫秒 觸發一次計時器,這就是我們所希望感測器更新數值的頻率。

圖6  Clock元件屬性設定

我們依照連接埠的順序來介紹各種感測器的運作方法。首先,App Inventor透過NxtTouchSensor1.IsPressed來偵測觸碰感測器是否被壓下,如果壓下就為True,本程式在此以一個if…else結構來更換按鈕的底色來達到燈號的效果。

接著,請注意App Inventor抓回的聲音感測器與光感測器值為原始(raw)值,介於0到1023之間,音量愈大。您可以從圖8中看到我們將聲音感測器的原始值除以10.23來換算成百分比值。

最後是超音波感測器,由於它是一種I2C數位感測器,會直接將超音波發射後撞到物體後回傳的時間換算為距離之後顯示在螢幕上,單位為公分。

圖7  感測器的值更新在畫面上了

圖8 使用Clock元件來定時更新感測器值

STEP4:

按下[斷線]按鈕之後,會斷開藍牙連線(BluetoothClient.Disconnect),並使按鈕恢復到未連線時的狀態。這時候您可以再次發起連線。

圖9  按下[斷線]按鈕時中斷藍牙連線

STEP5:

本範例一樣加入了超連結功能,上一期的範例是跳轉到CAVE官方網站(http:www.cavedu.com),這次是跳到App Inventor中文學習網,有許多豐富的App Inventor教學範例與課程說明。請點選畫面下方的可愛圖樣,點選之後就能跳到App Inventor中文學習網。這是藉由App Inventor的ActivityStarter來呼叫Android裝置上的WebKit瀏覽器,網址是從DataUri來指定為 http://www.appinventor.tw。

圖10  點選CAVE圖案會跳到App Inventor中文學習網

實際執行的時候,請先確認NXT已經開機且藍牙也啟動了。接著在您的Android裝置上點選程式畫面中的「連線」按鈕,點選NXT主機名稱就會自動連線,連線完成就能看到感測器值不停更新啦。

請注意由於程式一開始尚未進行藍牙連線時,程式就會試著去抓感測器的值,當然什麼也抓不到。這也就是為什麼圖2中的感測器值會為-1的原因,-1是代表無設備或無連線,並非感測器值真的為-1。

另一方面,藍牙發送與接收訊號皆會有一定的延遲時間(30~40毫秒),加上我們設定計時器的觸發頻率為200毫秒,加加起來就快0.3秒啦!因此實際執行時感測器值更新會有點lag,這是正常的。

為什麼感測器的反應會頓頓的呢?有使用過樂高機器人的朋友, 一定有在螢幕上檢視感應器數值的經驗,應該是相當順暢才對。那為什麼在Android 手機上看就變得頓頓的, 好像慢半拍的感覺呢?原因就在於藍牙傳輸來回需要時間。由於我們是從Android 手機端對NXT 機器人發出要求,請它傳回指定感應器的數值,機器人接收到之後就會回傳。這樣一來一往各會用掉30 ∼ 40 毫秒,相加的話最大會用掉0.08 秒!這已經是我們感覺得到的延遲時間了。當然會有比直接在NXT 機器人端直接觀看數值來得慢的感覺囉!

(比較:一般卡通片是一秒24 張圖,也就是每0.042 秒換一張圖。)

在上一篇的按鈕控制也是同樣的道理,雖然在該範例中沒有從NXT 機器人擷取回任何感測器數值,但每次我們點選按鈕來控制機器人動作時,機器人還是會回傳一個確認碼/位元告訴Android 手機:「我已經正確接收指令並執行完畢。」這是在一般網路傳輸中必要的通訊機制喔!

請要下載本程式來玩玩看的朋友,請由以下連結下載:

http://dl.dropbox.com/u/11288673/NXT_ButtonControl.apk

或掃描以下的QRCode也可以唷!

註1:App Inventor伺服器目前正由Google移轉至麻省理工學院行動研究中心,預計在近日推出新的服務。使用介面將無重大改變,在過渡期間想要申請測試帳號的讀者請至以下連結申請:http://appinventoredu.mit.edu/

註2:CAVE教育團隊所提供的App Inventor指令中文化手冊請至http://www.appinventor.tw下載。

註3:如何將您的手機設定為可自行安裝非Market下載的程式請參考:http://www.appinventor.tw/phone

註4:讓Android手機與樂高NXT主機連線的詳細步驟請參考:http://www.appinventor.tw/connecttonxt

文章原文刊載於《ROBOCON》國際中文版2012/5月號

[ROBOCON專欄] 輕鬆使用Android裝置控制樂高機器人:按鈕控制

http://pansci.tw/archives/12611

[輕鬆使用Android裝置控制樂高機器人:按鈕控制]

另一篇專文:
Google Map 路徑追蹤機器人

精彩內容請點選以上連結到泛科學探索實驗空間閱讀, 當然也歡迎支持ROBOCON雜誌!

CAVE團隊於《ROBOCON》國際中文版3月號的Android機器人專欄, 歡迎有Android裝置的朋友裝起來玩玩看唷, 更歡迎分享轉貼~

文中程式碼請由此下載: http://dl.dropbox.com/u/11288673/NXT_ButtonControl.apk


還等什麼?  快點掃描下面的QRCODE來下載吧!

[Robocon國際中文版] CAVE的Robocon國際中文版專欄

泛科學探索實驗空間,歡迎點選後閱讀全文~

Robocon雜誌是機器人玩家的指標性刊物,原本受限於日文,只能猜猜猜。現在由原本MAKE雜誌的代理出版社馥林文化爭取到Robocon雜誌的國際中文版,對於國內的機器人同好來說是件非常好的事。MAKE雜誌是季刊,Robocon是雙月刊,真的愈來愈精彩了。

CAVE很榮幸能在Robocon 中能有小小的專頁與大家分享作品,請大家多多支持好雜誌與CAVE唷!

另一方面,如果您有興趣投稿MAKE或Robocon,請不要客氣,將稿子寄到service@cavedu.com,我們評估後會與您聯絡~   一起來共襄盛舉吧!

Robocon國際中文版Facebook

MAKE國際中文版的追蹤報導