機器人學入門:基本感測器原理

一月 17, 2017
Facebook
Twitter
一臺可被稱作機器人的機器,必須要能感應環境並對其產生影響。這也是感測器做為機器人學關鍵的原因,而懂得使用感測器打造智慧機器人,對有心打進機器人學圈子的各位而言至關重要。我最近在Kickstarter發起了募資計畫,售出的每組套件都附有免費感測器,按加入!
在本期的Skill Builder中,我們要認識的是稱為「感知>判斷>動作」(sense > think > act)的機器人運作。這個運作在機器人學的應用相當廣泛,也是了解如何編寫機器人程式一個很好的切入點。讓我們開始吧!

選擇感測器

我們有多少物理特性可以測量,就有多少感測器可以使用,但我們先從HC-SR04超音波距離感測器開始,因為它便宜、單純,而且在機器人學中用途廣泛(它還有很方便的Arduino資料庫)。

定義機器人模型

這個感測器可以偵測距離,所以我們先做一個會閃避障礙物的簡單機器人吧。這種機器人可以前進、後退,並定點旋轉到任何方向。距離感測器就安裝在機器人的正面。有了這個機器人的概念之後,讓我們來看如何讓它運作。

什麼是感知、判斷、動作?

感知、判斷、動作是一種決策迴圈,可以用來為機器人解決很多問題,而且非常地簡單。在我們的例子中,機器人必須感測前方是否有障礙物,接著判斷是否可以前進、或是否應該轉彎或後退,之後便會依照決定來動作。這樣的邏輯可以套用在任何機器人上,適用任何感測器,幾乎可以進行任何動作。
為了把這種邏輯寫成用來控制機器人的程式碼,我們必須描述得更加精確,讓我們由以下的方法來創造簡單的機器人行為模式:
1.   機器人感應前方3cm內是否有任何障礙物。
2.   若無障礙物,則前進。
3.   若有障礙物,則後退。
這很容易轉換為程式碼,但我們可以預見這套邏輯會讓機器人在遇到牆壁時卡在前後來回的循環。它會先前進直到偵測到牆壁,接著後退到偵測不到牆壁,然後再前進,不斷重複。我們可以用以下的方式來改良它的行為模式。
1.   機器人感應前方3cm內是否有障礙物。
2.   若無障礙物,則前進。
3.   若有障礙物,則右轉,再返回第1步。
機器人會重複這個循環,直到找出3cm內沒有牆面的方向。
圖片

現在我們就有了一個可以確實讓機器人避開障礙物的感知、判斷、動作模型。這並不是很精密的模型,我們還可以增加很多細節來提升閃避障礙物的能力。
即使是簡單的機器人,只要運用複雜的感知、判斷、動作模型,還是可以設計出非常聰明的行為模式。這就是機器人學的精隨:聰明的都在軟體裡!
我們目前的行為模式效率有點低,因為機器人要右轉的時候需要先左轉三次。現在我們在前面的三步驟後面加上第四步來改良行為模式:
4. 若有障礙物,則左轉,再返回第1步。
  1. 機器人偵測前方3cm內是否有障礙物。
  2. 若無障礙物,則前進。
  3. 若有障礙物,則左轉並再次偵測。
  4. 若無障礙物,則前進並重設迴圈。
  5. 若有障礙物,則右轉並再次偵測。
  6. 若無障礙物,則前進並重設迴圈。
  7. 若有障礙物,則機器人繼續右轉,直到無障礙物。
這樣一來機器人就會檢查左右兩邊有沒有牆面,代表它的移動會更有效率。我們現在可以發現連這樣簡單的行為,在描述上也開始變得複雜,但如果把這套行為模式想成一系列的感知、判斷、動作迴圈,就更容易理解了。
就這樣,我們已經把一套簡單的感知、判斷、動作行為模式建構成可以實際應用的障礙閃避程式。接下來要把這套行為模式轉換成程式碼很容易,而我們也就可以開始做各種機器人學的嘗試了。再加裝更多距離感測器,甚至不同種類的感測器,便能讓機器人的行為模式更加精密。只要記得把動作分解成感知、判斷、動作的迴圈,就能做到很多事。別忘了,如果在找隨附各種免費感測器的機器人套件,來看看我們的Kickstarter
(譯:屠建明)
原文
Social media & sharing icons powered by UltimatelySocial