2010年9月20日 星期一

我的第一個LEGO機器人

看完邱老師的書( NXT樂高機器人:創意樂趣,隨心所欲!),說明如何使用NXT-G開發LEGO機器人後,心中就開始構想自己的第一個機器人,由於自己想逐項瞭解各個感應器(Sensor)的使用方式,所以決定先挑選超音波感應器(這個最吸引我)來上手,腦中自然就浮出壹個景象:壹個可以在環境中行進,能感測障礙物並自動迴避,然後找出適當新方向前進的機器人。
 
 


把馬達加上兩顆輪子當然是最基本的,裝上超音波感應器後,就是控制程式部份上場,我的構想是:

1. 往前走
2. 超音波感應器感受到障礙物時,往後退
3. 然後原地旋轉,找出一條最適當的路
4. 繼續往前走

構想很單純,不過一旦要將想法付諸實際,總會有現實上的細節須定義的更清楚。

2. 如何決定超音波感應器感受到障礙物?
    2.1 測試後認為20cm是個還不錯數值。

3. 如何找出一條最適當的路?我還是從超音波感應器著手,既然超音波感應器可以感受到障礙物,就也可提供沒有障礙物的資訊。所以初步想法是
    3.1 讓機器人轉一圈
    3.2 持續偵測超音波感應器感受到離障礙物的距離
    3.3 根據離障礙物的距離,判斷是否為出路
    3.4 最大距離的那個,應該就是最適當的出路

3.1 不過怎麼讓機器人轉一圈呢?馬達轉一圈不代表機器人轉一圈。
    3.1.1 這部份我也是以測試的方式,測出馬達轉大約1900度時,機器人轉了一圈。

3.3 判斷為出路的方式
    3.3.1 經實驗後大概距離超過100cm是個可能的出口選擇。

3.4 當感應器找到最大距離時,由於機器人仍舊要轉滿一圈,所以必須將當時的角度記下來,等到機器人轉一圈後,再倒退回到記下的方位。
    3.4.1 記下最大距離時馬達旋轉度數
    3.4.2 轉一圈後,如果有找到最大距離,倒回到那個角度。

有了詳細構想,接下來開始用NXT-G來實作,並進一步加入尋找出路時,會持續發出聲納的聲響(這樣有發出超音波搜尋的fu),不過這個發聲,看似好做,但在NXT-G下還真的頗費工夫,這也進一步促使我使用NXC的想法出現。

這些都做好後,發現還有一些改進方式:
1. 讓機器人轉一圈再倒退的動作還蠻stupid的,應該找到適當的出口就往出口走,這樣機器人看起來比較smart。

2. 超音波感應器只能感應到最遠255cm的距離,可能會有許多方位距離都是255cm,最後壹個距離是255cm的出口,並不一定是最佳出口。

3. 感應到最遠距離不一定是出口,必須要連續某個角度內都保持這個距離才算是出口,比如說,要連續60度內都保持這個距離,才算是出口。

不過這些功能如用NXT-G來做,程式會變得更為複雜(原本的 NXT-G程式碼就已經夠複雜了,往往找錯誤找到眼睛脫窗),所以我改用NXC來實現這些功能,也發現在NXT-G下須絞盡腦汁完成的某些功能,在NXC下變得容易許多,所以第二個專案,應該會用NXC來實作了。

說了這麼多,還是來看看影片吧



8 則留言:

  1. 我們家也有一個對Lego超熱愛的,不過,肯定沒這麼厲害到可以組裝成機器人。好益智的遊戲喔~~

    回覆刪除
  2. Re: Shirley <187821326391064500>
    樂高真的很好玩,而且其實沒那麼困難(當然如果要組出瓦力就很困難),設計也很容易上手,趁著在美國,可以上雅馬遜找喔(因為它只寄送美國)。

    另外祝中秋節快樂(有沒有覺得月到中秋分外明啊^^)

    回覆刪除
  3. 今晚大概是第一次到美國後,抬頭仔細看看月亮的模樣,小小的圓圓的亮亮的,然後就有一點思鄉了,哎哎...找點事來轉移一下注意力~~

    回覆刪除
  4. Re: Shirley <192806487004820933>
    還好現在有網路,無遠弗屆,可以千里共嬋娟了

    回覆刪除
  5. 哈...好屌
    這片子不能被我家那二隻看到
    否則荷包不保....Orz

    回覆刪除
  6. 看到最後想知道一件事.......
    這台機器人有沒有脫困....(遠目)

    回覆刪除
  7. Re: 稻草人的天空 <4486795091260760683>
    我看是被你看到,你的荷包才會不保吧XD
    怎麼樣?要不要上啊?

    回覆刪除
  8. Re: 稻草人的天空 <4910577345584710071>
    我這台設計不是在脫困,而是在碰到障礙物時可以找個出路走,所以有時會來來回回,但是總會找到其他的路,如果不理它,它會一直走到沒電吧。

    回覆刪除