2017年4月20日 星期四

mBot 入門教學:mBot 循跡車

簡介

mBot 機械人的巡線感應器左、右兩對紅外線感應器的距離約有 1.2 厘米。mBot 機械人的巡線感應器簡化了使用方法,將紅外線反射結果分成兩種:黑色與白色,其中反射能量強的為白色,反射能量弱的為黑色,因此根據回傳值,共有四種情況:

Sensor 1(左邊)Sensor 2(右邊)回傳值說明圖示
黑色黑色0完全處於黑線上
黑色白色1靠左是黑線
白色黑色2靠右是黑線
白色白色3完全處於白線上

直線前進

狀態 0(左黑右黑):表示仍在軌道內,應該繼續前進。


狀態 1(左黑右白):表示車身向右偏離軌道,應該左轉回軌道。


狀態 2(左白右黑):表示車身向左偏離軌道,應該右轉回軌道。


狀態 3(左白右白):表示車身完全偏離軌道,應該設法回到軌道。

小結


直角銳角

剛才學習的只針對直線軌道,並未針對軌道中出現的特殊情況,但 mBot 機械人每次只會運行一個程式,所以我們需要設計一個能夠應付所有情況的巡線機械人。接下來,我們先了解「直角銳角」的處理方法:

如果我們使用「直線前進」的程式,測試「直角銳角」的情況,會發現 mBot 機械人反覆前進後退的情形:

  1. 我們會在修正這個情況時,先讓 mBot 機械人左轉或右轉(視乎路線)
  2. 然後進入一個重複迴圈,離開迴圈的條件偵測到轉向正確(變數「轉向正確」= 1)
    1. 累積變數「轉動次數」
    2. 如果左轉碰到線,即表示轉向正確,設定變數「轉向正確」= 1 ,跳出迴圈,回到原本的巡線走法。
    3. 如果變數「轉動次數」累積達「轉動上限」 ,表示轉向錯誤,需要反向轉動,待找到黑線後,設定「轉向正確」= 1 ,跳出迴圈,回到原本的巡線走法。

「轉動上限」的數值從何而來?是要根據機器人馬達轉速,當時電量狀況,以及軌跡型態所嘗試錯誤得到的數值,需要自行測試。

巡線避障


當我們在巡線時遇到障礙物,我們可以用以下方法避開:
這個方法較為簡單,只需要利用超聲波感應器偵測到一定距離後,開始執行走半個正方形的路線,然後回到軌道上即可。但這個方法路程遠了,因而較為費時。
這個方法則較為複雜,需要利用超聲波感應器偵測到一定距離後,先向外轉向,再設定左右兩個馬達以不同速度前進,從而讓 mBot 機械人順暢地走弧形,然後回到軌道上即可。這個方法需花時間反復測試,方可成功,但走的路程短了,因而較為省時。

2 則留言:

  1. 其實下面第二種避障不會太難

    馬達1速度設為255
    馬達2速度設為90
    等待0.65秒 (可能因馬達速度或電磁強度額有誤差)
    馬達1速度設為90
    馬達2速度設為255
    等待0.65秒 (可能因馬達速度或電磁強度額有誤差)
    以上的兩遍就可以做出第二種避障路線

    回覆刪除
    回覆
    1. 你說的沒錯
      在發佈文章兩年後終於知道方法了
      但也需要測試,才可以肯定速度的設定正確

      刪除