機器人已經可以用2個或4個傳感器,又快又穩(wěn)定地進行 巡線運動了吧?不過,如果機器人行走的路線上除了直線、曲線還有各種路口又該怎么辦 呢?這次的實驗就來解決這個問題,先來看看圖9-5中這樣的丁字路口,機器人應該采 用什么樣的策略才能通過。
為了讓機器人成功通過各種路口, 一般我們還是需要給機器人并排安上4個傳感器。 但是和用上節(jié)課中對4個傳感器的使用不一樣,這里用內側兩個傳感器幫助機器人完成 巡線。而當外側的兩個傳感器檢測到黑線時,就知道了機器人遇到了路口。這時就可以 根據具體情況,讓機器人做出轉彎動作了。
實驗器材
· 已經組裝好的機器人;
· 計算機及軟件編程環(huán)境;
·USB 下載線;
· 主控制器;
· 杜邦連接線若干;
· 4個使用杜邦連接線的地面灰度檢測傳感器;
· 用黑色膠布粘貼的丁字路口。
實驗步驟
1.連接機器人
在機器人的底盤上并排安裝4個地面灰度傳感器,用杜邦連接線把它們按順序分別 連接到主控板的A0~A3 端口,其中Z左端的傳感器連接A0 口,Z右端的連接 A3 口。
2.調試灰度閾值
同樣,像以前一樣通過實驗確定機器人所采用的灰度閾值。因為4個傳感器的電路 和安裝上可能會出現微小的差別,所以這里比較穩(wěn)妥的處理方式是不要嫌麻煩,為它們每 個都測量一個灰度閾值。
3.編 寫 和調試程序
通過上面的分析可以知道,對于機器人來說,只要是Z左或Z右端的傳感器檢測到了 黑線,就代表機器人遇到了路口。這時就可以停止巡線而進入90°轉彎的過程。根據這 個思路,請同學們自己去編寫或是參考下面的示例程序,將機器人通過丁字路口的程序實 現。這個示例程序大部分結構和上節(jié)課的示例程序類似,所不同的只是對機器人Z外端 兩個傳感器檢測到黑線時的處理,我們用省略號把同上節(jié)課例程重復的大部分內容略過。
const int TurnTime=300;
void loop()(
leftValue=analogRead(LeftPort);
leftMiddleValue=analogRead (LeftMiddlePort);
rightMiddleValue=analogRead(RightMiddlePort);
rightValue=analogRead(RightPort);
if(leftValue
analogWrite(RightSpeedPort,ForwardSpeed);
}else if(leftValue>Threshold II rightValue>Threshold){ digitalWrite(LeftDirPort,LOW);
analogWrite(LeftSpeedPort,ForwardSpeed);
analogWrite(RightSpeedPort,ForwardSpeed);
delay(TurnTime);
digitalWrite(LeftDirPort,HIGH);
}else if(leftMiddleValue>Threshold){
analogWrite(LeftSpeedPort,TurnHighSpeed);
analogWrite(RightSpeedPort,TurnLowSpeed); }else{
analogWrite(LeftSpeedPort,TurnLowSpeed);
analogWrite(RightSpeedPort,TurnHighSpeed); }
delay(100);
//原地轉90°所需的時間
&&rightMiddleValue< //直行
//原地向左轉90°
//向右轉彎
//向左轉彎
//延時.100ms
請注意,如果大家直接套用上面給出的示例程序,機器人往往是不會乖乖地通過路口 的。這時,就需要請同學們仔細觀察機器人遇到路口的反應。然后,根據機器人運動時所 表現出的現象不同,對問題的所在進行判斷并解決。比如,機器人的傳感器端口接線的順 序有錯誤;機器人轉90°彎的速度或時間參數不合適,導致轉向過度或不足等。就是在這 個過程中大家解決問題的能力才會得到提高,因此請同學們千萬不要滿足于弄懂了原理, 一 定要動手動腦,對機器人進行實際的調試工作。
![]() |
| 機器人底盤 Disinfection Robot 消毒機器人 講解機器人 迎賓機器人 移動機器人底盤 商用機器人 智能垃圾站 智能服務機器人 大屏機器人 霧化消毒機器人 展廳機器人 服務機器人底盤 具身智能教育機器人 智能配送機器人 導覽機器人 |