1. 功能說明
在機器人車體上安裝2個 灰度傳感器 ,實現機器人按照下圖所指定的路線進行導航運動,來模擬倉庫物流機器人按指定路線行進的工作過程。

2. 使用樣機
本實驗使用的樣機為R023e樣機。

3. 功能實現
3.1 電子硬件
在這個示例中,我們采用了以下硬件,請大家參考:
| 主控板 | Basra(兼容Arduino Uno) |
| 擴展板 | SH-01外圍電路擴展板(與Bigfish擴展板相似)? |
| 傳感器 | 灰度傳感器 |
| 電池 | 7.4V鋰電池 |
電路連接說明:
② 2個灰度傳感器分別接在擴展板的傳感器接口A0、A4上。


3.2 編寫程序
傳感器觸發情況、小車行駛狀態、對應行為策略表:
| 傳感器1 | 傳感器2 | 小車狀態 | 動作 |
| 0 | 1 | 小車左偏 | 向右調整 |
| 1 | 0 | 小車右偏 | 向左調整 |
| 1 | 1 | 到達終點 | 停止 |
| 0 | 0 | 正常 | 前進 |
① 根據實驗內容,利用多分支結構設計出程序流程圖。
機器人軌跡導航任務流程圖
② 根據設計好的程序流程圖進行編程,編寫并燒錄以下程序(blackline_4if.ino),該程序將實現演示視頻中的動作【完整例程源代碼下載詳見https://www.robotway.com/h-col-113.html】
編程環境:Arduino 1.8.19
/*------------------------------------------------------------------------------------ 版權說明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 機器譜 2023-02-09 https://www.robotway.com/ ------------------------------------------------------------------------------------*/ void turnleft_slow(); void forward(); void carstop(); void turnright_slow(); void setup() { pinMode( 18, INPUT); pinMode( 14, INPUT); pinMode( 10, OUTPUT); pinMode( 6, OUTPUT); pinMode( 5, OUTPUT); pinMode( 9, OUTPUT); } void loop() { if (( digitalRead(14) && digitalRead(18) )) { forward(); } if (( !( digitalRead(14) ) && digitalRead(18) )) { turnleft_slow(); } if (( digitalRead(14) && !( digitalRead(18) ) )) { turnright_slow(); } if (( !( digitalRead(14) ) && !( digitalRead(18) ) )) { carstop(); delay( 5000 ); } } void turnright_slow() { analogWrite(6 , 80); analogWrite(10 , 0); analogWrite(5 , 0); analogWrite(9 , 0); } void carstop() { analogWrite(6 , 0); analogWrite(10 , 0); analogWrite(5 , 0); analogWrite(9 , 0); } void turnleft_slow() { analogWrite(6 , 0); analogWrite(10 , 0); analogWrite(5 , 80); analogWrite(9 , 0); } void forward() { analogWrite(6 , 80); analogWrite(10 , 0); analogWrite(5 , 80); analogWrite(9 , 0); }
也可以使用if…else嵌套寫法(blackline_ifelse.ino)。
void stop();
void left();
void right();
void forwards();
void setup()
{
pinMode( 18, INPUT);
pinMode( 14, INPUT);
pinMode( 10, OUTPUT);
pinMode( 6, OUTPUT);
pinMode( 5, OUTPUT);
pinMode( 9, OUTPUT);
}
void loop()
{
if (( !( digitalRead(14) ) && digitalRead(18) ))
{
right();
}
else
{
if (( digitalRead(14) && !( digitalRead(18) ) ))
{
left();
}
else
{
if (( !( digitalRead(14) ) && !( digitalRead(18) ) ))
{
stop();
}
else
{
forwards();
}
}
}
}
void stop()
{
analogWrite(5 , 0);
analogWrite(9 , 0);
analogWrite(6 , 0);
analogWrite(10 , 0);
}
void right()
{
analogWrite(5 , 150);
analogWrite(9 , 0);
analogWrite(6 , 0);
analogWrite(10 , 150);
}
void forwards()
{
analogWrite(5 , 150);
analogWrite(9 , 0);
analogWrite(6 , 150);
analogWrite(10 , 0);
}
void left()
{
analogWrite(5 , 0);
analogWrite(9 , 150);
analogWrite(6 , 150);
analogWrite(10 , 0);
}
審核編輯黃宇
?
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
傳感器
+關注
關注
2576文章
55034瀏覽量
791262 -
機器人
+關注
關注
213文章
31075瀏覽量
222201
發布評論請先 登錄
相關推薦
熱點推薦
雙電機后輪驅動混合動力汽車電子差速控制的研究
[摘要]針對雙電機后輪驅動混合動力汽車電子差速的控制問題,考慮車輛轉向時軸荷轉移、向心力和輪胎側偏角的影響,以車輪的滑移率為控制目標,提出了基于門限值控制的電子差
發表于 06-18 16:39
怎樣用Labview的vision相關模塊實現圖像的灰度掃描以及灰度差分
怎樣用Labview的vision相關模塊實現圖像的灰度掃描以及灰度差分,可以詳細點:具體用到哪些模塊,求賜教。
發表于 06-26 20:08
循跡智能小車是由哪些部分組成的
循跡智能小車 循黑線文章目錄循跡智能小車 循黑線硬件菜單硬件使用硬件組裝程序設計前的理解程序代碼硬件菜單單片機型號:STC16F40K1284路紅外循跡模塊小車底盤套件(一個
發表于 07-14 06:56
差分底盤的設計資料分享
SLAM+語音機器人DIY系列:(四)差分底盤設計——1.stm32主控硬件設計摘要 運動底盤是移動機器人的重要組成部分,不像激光雷達、IMU、麥克風、音響、攝像頭這些通用部件可以直接買到,很難
發表于 02-14 06:29
使用以雙灰度傳感器實現的曲線循跡以及矩形循跡的資料說明
在這次課程中,我們小組選定的課題是循跡小車,在長達數周的辛苦付出中,我組小車已能實現的功能有1.紅遙控小車2.以灰度傳感器實現矩形
發表于 12-23 08:00
?12次下載
小型雙輪差速底盤視覺循跡功能的實現
1. 任務描述 ? ? ? 在機器人小車上搭載攝像頭,攝像頭采集圖像信息并通過WiFi將信息傳遞給PC端,然后PC端使用OpenCV對攝像頭讀取到的視頻進行灰度化、高斯濾波、腐蝕、膨脹等處理,使圖像
DGT-01M四輪差速移動機器人底盤
DGT-01M 機器人底盤是一款多功能行業應用的實用新型產品,是一種四輪運載平臺,采用四輪差速結構,原地轉向,體型小,靈活性強,并且采用模塊化設計,具有相對獨立性、互換性、通用性,模塊
發表于 12-23 09:37
?5次下載
如何讓小型雙輪差速底盤實現雙灰度循跡功能?
評論