2017年5月29日 星期一

Makeblock應用:解決 3D 迷宮

簡介

近日在 Youtube 看到一段關於 mBot 解決 3D 迷宮的片段,內容十分有趣,有別於一般想法(1 至 3 個超聲波感應器),它只用了 1 個巡線感應器和 1 個超聲波感應器。但由於是西班牙文,因此在這裡做了翻譯。

組裝方面:

超聲波感應器會安裝在 mBot 的右方(上圖),而巡線感應器則會垂直安裝在前方(下圖)。



邏輯方面:

程式中一共使用了 3 個變數,分別是「右輪速度」(行駛時的右輪速度)、「左輪速度」(行駛時的左輪速度)及「距離」(mBot 和右牆之間的距離)。如上一段所說,我們一共會用兩款感應器—巡線感應器(連接埠2)和超聲波感應器(連接埠3)。

一開始,mBot 會等候板載按鈕按下並鬆開才開始運作。運作開始後,程式會不停重覆以下事情:

不停重覆:
  右輪速度 = 90; 左輪速度 = 90; 設置M1及M2速度;
  直到(巡線感應器 > 0)前不斷重覆:
    距離 = 超聲波感應器讀數;
    如果(距離 < 5):
      /* 距離少於5cm,太接近右面牆 */
      右輪速度 = 150; 左輪速度 = 80;
    如果((5 < 距離)&&(距離 < 6)):
      /* 距離等於5-6cm,再貼近右面牆,別讓mBot離開太遠 */
      右輪速度 = 80; 左輪速度 = 150;
    如果((6 < 距離)&&(距離 < 8)):
      /* 距離等於6-8cm,離右面牆太遠了,別讓mBot離開太遠 */
      右輪速度 = 80; 左輪速度 = 175;
    如果(距離 > 8):
      /* 距離大於8cm,右面有出口,優先右轉 */
      右輪速度 = 50; 左輪速度 = 200;
    設置M1及M2速度;
  後退0.1秒,速度100;
  左轉0.8秒,速度110;


根據以上方法,mBlock 程式大致會像下圖一樣。當然,左、右輪的速度和左轉時間需因應實際情況有所調整。


再來看看,運行的情況(剪裁自原片):


沒有留言:

張貼留言