前言
在「Jetbot 升級新技能 : 結合紅外線循跡功能」的文章中,我們說明了如何在原有 Jetbot 的架構上加上基礎的紅外線循跡感測器。基於物體對紅外線的反射特性,能夠幫助 Jetbot 準確辨識和跟隨特定的路徑。而超音波偵測技術則為Jetbot提供了一個”眼睛”,讓它能夠偵測前方的障礙物,並做出迅速的反應。
本文要深入探討這兩種技術如何與Jetbot融合,從理論基礎到實際操作,將會為讀者帶來全新的篇章。
撰寫/攝影 | 許鈺莨 (ChatGPT協作編輯) | ||
時間 | 2 小時 | 材料表 |
|
難度 | 2(滿分5) |
本文
超音波感測器運作原理
超音波感測器是由超音波的發射器(T)、接收器(R)和控制電路所組成,經由計算發射後到接收的時間差來換算出與障礙物的距離。因此超音波感測器也是一個很容易且方便使用的距離感測器,所以我們可藉由超音波偵測距離而達到避障的功能。
左邊為發射器(Transmitter)標示為T,會發出 40 kHz 的聲波,由於這個聲波的頻率超過人類可聽見的 20 kHz,因此被稱為超音波。右邊為接收器(Receiver)標示為R,可以接收超音波。它可以感測的距離為 2cm到 400cm,感應角度為 15 度。
透過Trig和 Echo腳位,可維持 10 微秒以上的高準位訊號,便能觸發模組中的超音波發射器送出 8 個連續的 40KHz 超音波脈衝,接收器收到反射波後便會輸出一個與量測距離成正比的高準位脈衝。
超音波在空氣中傳播的速度為Vs =331+ 0.6 t (t為當時的溫度),傳播速度會受到當時溫度的影響,而且溫度愈高,傳播速度就愈快。 假設當時的溫度是 23℃,超音波行走 1cm 反射回來的時間 T ,表示超音波行走 1cm只需58微秒。
由公式表示: T= ((1+1))/((331+0.6×23) )×100=58μs
HC-SR04 的 Echo訊號輸出的高位準脈衝,其時長即是超音波往返所花的時間,因此量出 Echo 的脈衝時間長,再除以 58,即可得到與反射超音波的障礙物之間的距離是幾公分了。
Jetbot超音波測距動作
本次實作是預設Jetbot距離障礙物15公分就會停止,但是使用者可以自由調整距離,最小為10公分,最大為50公分。
程式執行與說明
(1) 開啟程式
路徑位置在 /Jetbot 根目錄底下的 widget_linefollower_sonic_slider.ipynb
當您的 Jetbot SD 卡燒錄完成之後,Jetson Nano 開機之後會成為一個 Jupyter Lab伺服服器,請由網路端連入即可操作,請參考本篇教學。
(2) 程式執行
在工作列點選 Kernel → Restart Kernel and Run All Cells
顯示使用者操作介面 這個 cell 執行之後會出現操作介面,按下live即可啟動Jetbot
(3) 程式撰寫說明
1. 程式的第1格區塊
匯入Jetbot 和使用者互動介面 widget 小工具的相關函式庫。
2. 程式的第2格區塊
設定紅外線感測器及超音波感測器腳位,紅外線感測器L、C、R腳位分別接在Jetbot 的17、27、22腳位。超音波感測器的Trig和Echo腳位分別接在Jetbot的24和23腳位。
3. 程式的第3格區塊
接紅外線感測器L、C、R 的Jetbot 的腳位,設定為輸入訊號。
接超音波感測器的Trig腳位,設定為輸入訊號;Echo腳位,設定為輸出訊號。
4. 程式的第4格區塊
測量障礙物和 Jetbot (其實是超音波感測器) 的距離
5. 程式的第5格區塊
根據循跡感測器偵測到的訊號,去定義 Jetbot 的行為動作。
6. 程式的第6格區塊
使用按鈕、文字欄位和滑桿來建立使用者操作介面。
7. 程式的第7格區塊
定義 Jetbot 前進、停止、左轉、右轉。
8. 程式的第8格區塊
觸發 live 和 stop 按鈕的事件。
9. 程式的第9格區塊
顯示使用者操作畫面,說明如下:
- stop 按鈕停止Jetbot
- live 按鈕啟動 Jetbot
- 馬達前進動力滑桿,控制 Jetbot 走直線時的馬力,最小0,最大1,預設為0.8。
- 左轉幅度滑桿,控制 Jetbot 左轉時的馬力,最小0.2,最大1,預設為0.8。
- 右轉幅度滑桿,控制 Jetbot 右轉時的馬力,最小0.2,最大1,預設為0.8。
- 與障礙物距離滑桿,可以調整 Jetbot 與與障礙物距離,最小10公分,最大50公分,預設為15公分。
- 文字方塊,檢視目前超音波數值 (也就是距離 cm) ,和 Jetbot 當下正在執行的動作。
實機展示
實際操作時可以看到機器人應可根據循跡感測器來沿著白色軌跡線前進,請根據實際狀況來修改相關參數。機器人就是要不斷地調整才行呢!
影片請回到本文一開始或點選本連結播放。期待您也根據本文說明來為機器人加入更多豐富的功能。