2016/03/08


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

2016/1/23, 第二十八課, 高爾夫球機器人

前兩堂課的主題 (排隊機器人: 跟隨, 雷達機器人: 找尋) 都是和距離控制有關. 本週課題則是距離控制系列的魔王關~ 高爾夫球機器人, 要做一隻會自己找球來打的機器人. 




高爾夫球是很專業的運動, 除了得揮桿姿勢流暢力貫於球, 還要考慮風向與草紋. 要讓小白球飛得又遠又準是很不容易的事. 要做會打高爾夫球的機器人, 更難.



哈哈.. 當然不是上圖那隻. 兩兄弟要處理的情境與問題會比真實世界簡化很多:

  • 球和機器人會在一直線上.
  • 一次僅處理一顆球.
  • 球的大小固定, 且一定都擺在架子上.
  • 會有紅球與藍球. 需判斷出紅球做揮擊.
  • 有打到球就好, 不要求擊打大力或飛多遠.


第一段, 找到那顆紅色球

依老師訂出的要求.. 可拆分出幾個子題:

(1) 機器人向前走並探測與球的距離, 要在安全距離內停下來.
(2) 機器人要能判別球的顏色. 紅球可揮桿, 藍球不可揮桿.
(3) 機器人要能揮桿把球擊飛.

逐項思考該如何達成?

(1) 機器人向前走並探測與球的距離, 要在安全距離內停下來.

探測距離~ 用光源或超音波感應器來實作很直覺, 其實用觸踫感應器也能達成目標 (但球與球架要有足夠質量來頂住球). 光源感應器受環境的影響較大, 兩兄弟決定選用超音波感應器來實作.

(2) 機器人要能判別球的顏色. 紅球可揮桿, 藍球不可揮桿.

這無爭論, 就是用光源感應器啦.  

(3) 機器人要能揮桿把球擊飛.

依光源感應器的偵測結果來控制馬達揮捍. 


第二段, 機構與程式

機構部份

球架最簡單, 老師隨手用兩三個積木組了個小架子來托住球.



機器人的部份, 基本就是一台車, 上面配置有超音波, 光源感應器以及一隻敲球桿. 超音波感應器須安裝在車頭前方, 與球/球架同高, 才好偵測與球/球架的距離. 光源感應器也是要安裝在車頭前方, 要能照到球來接收反射的光值. 製作敲球桿時得注意揮桿行程以及球桿與球的撞擊面等等.




程式部份還算直覺, 分成兩段. 第一段~ 讓車向前跑, 同時超音波感測器要偵測與球之間的距離. 走到安全距離內時, 就讓車急停. 第二段~ 光源感應器開始偵測球的顏色, 若是紅色就揮桿, 若是藍色就不動作.



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

老師不做示範, 讓兩兄弟直接動手做. 先說結果, 兩兄弟只做完車體, 敲球桿與超音波距離感測. 用光源感應器判斷球的顏色的部份則是在下課後才慢慢補上.


Willie 作品的 NXT 主機盒是側置(不對稱)的設計, 蠻特別的. 只是他花了大半時間打磨車體的機構, 在編寫程式與測試的進度明顯落後.







成功的擊球
軟弱失敗的擊球
打紅不打藍

Kenny 作品的超音波感應器放太低, 而安裝光源感應器的延伸臂又太短, 使得機器人得停在離球/球架很近的位置. 就是因為安全距離短, 所以超音波感測的反應時間與車行速度更要搭配好, 要不然車子就會撞上球/球架. 而敲球桿的揮桿行程也得做短些. 要考慮的細節太多, Kenny 有點做不下去, 最後是老師出手幫忙做調整.








雖然 Kenny 的作品完成度較高, 但它也不是每一次都能擊球成功, 也是有失手的時候.


揮桿落空

兩兄弟的程式碼看起來大同小異. 因為在機構的部份卡關太久, 連光源感應器都來不及加上去, 也就沒有這部份的程式格. 


Willie 的程式碼
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)

0 意見:

張貼留言