2016/03/22

這隻機器人會偵測箱子的距離, 自動繞著箱子走動.

本篇的主角是萊恩大兵的兩個兒子 Willie 和 Kenny. 萊恩大兵為他們兩個安排了 LEGO NXT 機器人的家教.

2016/2/13, 第三十課, 會闖迷宮的機器人

聽到本週積木課主題是~ 會闖迷宮的機器人, 兩兄弟露出好奇的神色. 老師還故意賣關子說, 只要用右手, 就能破解迷宮. 兩兄弟露出不可置信的眼神. 


知道訣竅就是~ 用右手扶著牆壁一直走, 絕不能把手放下, 然後就一定能走到出口. (也可以用左手扶著牆壁走, 總之不能中途換手.) 找張迷宮圖來試試, 還真的吔. 兩兄弟的眼神轉成崇拜. 




第一段, 闖迷宮機器人怎麼做?

把闖迷宮這個大難題簡化成扶著牆壁走, 事情就簡單了. 闖迷宮機器人就等同是一個能沿著牆壁走的機器人. 

等等, 機器人課程剛開始時, 不就有做過一隻能繞著桌子走的機器人嗎? 


這隻繞桌子機器人是預先量好桌子長寛,
轉換成馬達轉動圈數,
再輪入程式去控制機器人繞桌子走.

這次的實作和先前有什麼不同呢? 先前的版本, 是預先量好桌面長寬, 轉化成馬達的轉動圈數, 再輸入程式去控制機器人繞桌子走. 

今天要實作的, 是用感測器來偵測桌子, 自己會知道轉彎的機器人. 實作目標包括:

(1) 一台裝有感測器的車子.
(2) 要能邊走邊偵測牆壁/桌子遠近, 並與牆壁/桌子保持在一定距離內.

一項一項來思考要怎麼做.

(1) 一台裝有感測器的車子.

要用什麼感測器來偵測牆壁呢? 光源感應器不適合, 牆壁不一定是同一種顏色, 色差會造成誤判. 觸踫感應器還 okay, 可是很難控制車子一直壓靠著牆壁. 挑來挑去, 還是超音波感測器最適合.

(2) 要能邊走邊偵測牆壁/桌子遠近, 並與牆壁/桌子保持在一定距離內.



偵測的結果, 可分成兩個狀況 (遠近在範圍内與範圍外).

  • 在範圍内 --> 直線往前走.
  • 在範圍外 --> 該轉彎了. (問題是.. 該左轉還是右轉呢? 這邊就規定, 車子只能逆時針方向繞桌子走, 所以程式都寫成左轉. )



第二段, 機構與程式

在機構部份, 有幾個地方要注意.




  • 超音波感測器要儘量延伸出去, 離車身遠一點. --> 才會比較有餘裕去 "面對" 偵測的結果.
  • 超音波感測器要安裝在車頭? 車身中間? 還是車尾呢? -->建議放在車尾較佳. 當偵測到與牆壁/桌子距離為範圍外時, 車子已經是完全開出牆壁/桌子了, 此時轉彎才不會車身卡到牆壁/桌子.


程式目標是要繞箱子跑完一圈, 用 Switch 程式格就足夠來編寫程式




  • 在範圍内 --> 直線往前走.
  • 在範圍外 --> 左轉90度. 


後來測試時發現, 上述的演算法會有一個問題: 在轉彎時, 超音波感測器仍在作用中, 結果會變成無限迴圈的轉彎. 所以, 在轉彎後還要讓車子自動往前走一小段距離, 讓車子走到牆壁/桌子的範圍内, 這樣才能避免無限迴圈的轉彎的現象.


  • 在範圍内 --> 直線往前走.
  • 在範圍外 --> 左轉90度後, 直線往前走一小段距離

Willie 的程式碼


Kenny 的程式碼


第三段, 測試, 修改與調整

這次的實作, 讓兩兄弟吃足苦頭. 怎麼說呢? 問題主要出在輪胎機構的穩定性. 輪胎的結構不穩, 車子在走的時候, 很難維持穩定的直線. 走短短的距離還看不出來, 距離一拉長, 車子就偏到天涯海角了.




Willie 車子的輪胎結構不穩固, 很明顯會有外八走不直的狀況, 完全無法穩定地與牆壁/桌子保持等距.






車輪胎的機構不穩, 使得車子的行徑路線嚴重偏差.

Kenny 車子有個別緻的設計來收捲連接線. 只是他把超音波感測器裝太低了, 偵測不到桌子, 只能改繞箱子跑. 他的車也有一點外八走不直的狀況, 不過問題不大, 還能順利繞完一圈.





Kenny 的車也有一點外八的現象,
車子的行徑路線也是有點偏差.

兩兄弟的作品合照






[萊恩大兵的其它文章]

LEGO NXT 機器人 學習記錄

學習記錄, LEGO NXT 機器人, (1) 聲控自走車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (2) 簡易程式控制車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (3) 第一隻程式與荷蘭風車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (4) 雙馬達驅動車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (5) 萬向輪與三輪車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (6) 模仿動作的學習機器人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (7) 拉小提琴的音樂機器人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (8) 和聲音啟動車玩一二三木頭人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (9) 用觸踫感應器做賽馬比賽 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (10) 用超音波感應器玩鬼抓人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (11) 用光源感應器讓車車折返跑 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (12) 用光源感應器做直線遊園車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (13) 用光源感應器做迴轉遊園車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (14) 踫踫車, 感應器與程式格進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (15) 絕地逢生車, 感應器與程式格進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (16) 自動車庫門, 迴圈程式格進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (17) 摩天輪, 減速齒輪組進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (18) 直線競速車, 加速齒輪組進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (19) 倒車入庫 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (20) 伸縮毛毛蟲 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (21) 學習手臂 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (22) 音樂盒 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (23) 爬樓梯機器人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (24) 樂團機器人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (25) 向日葵 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (26) 母雞帶小雞之排隊機器人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (27) 小雞找母雞之雷達機器人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (28) 高爾夫球機器人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (29) 警報器 (LEGO, NXT)

0 意見:

張貼留言