基于ROS Ranger Mini構(gòu)建一個(gè)自主移動(dòng)機(jī)器人
掃描二維碼
隨時(shí)隨地手機(jī)看文章
自主移動(dòng)機(jī)器人(amr)在工業(yè)、農(nóng)業(yè)和教育領(lǐng)域提供了變革潛力,在這些領(lǐng)域,低成本、可擴(kuò)展的自動(dòng)化至關(guān)重要。這項(xiàng)研究提出了ROS Ranger Mini,這是一種緊湊型ROS AMR,集成了深度攝像頭、超聲波傳感器和雷達(dá),具有強(qiáng)大的環(huán)境感知和避障能力。該系統(tǒng)結(jié)合了用于高級(jí)處理的樹(shù)莓派和Particle Photon 2開(kāi)發(fā)板,可通過(guò)Wi-Fi實(shí)現(xiàn)遠(yuǎn)程控制和自主導(dǎo)航的雙重操作模式。傳感器和狀態(tài)數(shù)據(jù)通過(guò)Particle Cloud實(shí)時(shí)傳輸和存儲(chǔ),實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和系統(tǒng)分析。該設(shè)計(jì)強(qiáng)調(diào)了可訪問(wèn)的技術(shù),經(jīng)過(guò)深思熟慮的整合,可以為各種現(xiàn)場(chǎng)應(yīng)用創(chuàng)建適應(yīng)性強(qiáng)且高效的機(jī)器人平臺(tái)。
粒子云介紹
粒子云是一個(gè)物聯(lián)網(wǎng)平臺(tái),可以實(shí)現(xiàn)安全的設(shè)備連接、實(shí)時(shí)數(shù)據(jù)存儲(chǔ)和互聯(lián)網(wǎng)遠(yuǎn)程控制。該項(xiàng)目促進(jìn)了AMR和遠(yuǎn)程用戶界面之間的無(wú)縫通信。
我們使用粒子光子2,一個(gè)強(qiáng)大的支持wi - fi的微控制器,很容易與粒子云集成。主要規(guī)格包括:
?處理器:200 MHz ARM Cortex-M33 (Realtek RTL8721DM)
?Wi-Fi: 802.11 b/g/n, 2.4 GHz
?內(nèi)存:2mb
?Flash: 4mb
?Gpio: 20+可配置引腳
安全啟動(dòng)和OTA更新支持
該板處理實(shí)時(shí)數(shù)據(jù)傳輸,支持自主和遠(yuǎn)程控制功能。
硬件部分
在本節(jié)中,建立了電機(jī)驅(qū)動(dòng)器,執(zhí)行器,相機(jī),超聲波傳感器,Particle Photon 2和樹(shù)莓派之間的所有連接,以實(shí)現(xiàn)通信和反饋交換。我還在電路中加入了一個(gè)5A降壓助推器,因?yàn)槲覀兺ǔJ褂?S LiPo電池或2S 18650電池,產(chǎn)生7.4伏。由于Photon 2只能接受高達(dá)5.5伏特,如數(shù)據(jù)表中所述,降壓升壓器是必要的,以安全地調(diào)節(jié)電壓。
這是我用Fusion EDA為這個(gè)機(jī)器人設(shè)計(jì)的電路圖。
該電路有三個(gè)主要部分:粒子光子2,樹(shù)莓派HAT和5-15V到5V降壓電壓轉(zhuǎn)換器。攝像頭通過(guò)USB端口或15針CSI連接器連接到樹(shù)莓派。該圖還包括兩個(gè)超聲波傳感器,它們復(fù)制了激光雷達(dá)傳感器的功能,有助于降低機(jī)器人的總體成本。Photon 2的D1和D2引腳連接到樹(shù)莓派進(jìn)行通信,發(fā)送確認(rèn)和接收反饋。
集成光子2
首先,您需要在Particle網(wǎng)站上注冊(cè)。之后,您可以檢查設(shè)備是否已連接。我的設(shè)備出現(xiàn)在他們的平臺(tái)上。
為了集成Photon,你首先需要下載VS Code并安裝Particle CLI命令行。然后,你可以使用VS Code中的終端直接發(fā)送命令。
在使用粒子光子2編程時(shí),請(qǐng)記住它有多種模式。了解RGB LED指示燈的含義很重要。
粒子光子上的標(biāo)準(zhǔn)RGB LED模式
然后,我們有兩個(gè)選擇:在VS code中編寫(xiě)代碼或使用Particle Web IDE。最初,我使用VS Code,但遇到了一些問(wèn)題,所以我決定切換到粒子Web IDE。它有一個(gè)非常容易理解的用戶界面。我只是編寫(xiě)了代碼,由于Web IDE已經(jīng)連接到Particle Cloud,因此不需要編寫(xiě)任何額外的代碼來(lái)連接Wi-Fi或云。
整合MIT App Inventor
MIT App Inventor是麻省理工學(xué)院開(kāi)發(fā)的一個(gè)免費(fèi)的、初學(xué)者友好的平臺(tái),用于使用可視化的、基于塊的編程界面創(chuàng)建移動(dòng)應(yīng)用程序。
用于:
?開(kāi)發(fā)無(wú)需編碼的Android應(yīng)用程序
?物聯(lián)網(wǎng)接口原型
?教育項(xiàng)目和快速應(yīng)用程序開(kāi)發(fā)
下面是使用MIT app Inventor發(fā)明一個(gè)簡(jiǎn)單應(yīng)用程序的簡(jiǎn)短分步指南:
?訪問(wèn)appinventor.mit.edu,用谷歌賬戶登錄。
?點(diǎn)擊“創(chuàng)建應(yīng)用程序”→開(kāi)始一個(gè)新項(xiàng)目。
?通過(guò)將組件(按鈕、標(biāo)簽等)拖到手機(jī)屏幕來(lái)設(shè)計(jì)UI。
?轉(zhuǎn)到塊部分→通過(guò)連接代碼塊創(chuàng)建邏輯。
?使用MIT AI2 Companion應(yīng)用程序通過(guò)USB或Wi-Fi連接手機(jī)。
?在手機(jī)上測(cè)試你的應(yīng)用。
?導(dǎo)出或構(gòu)建APK來(lái)安裝或共享應(yīng)用程序。
完成設(shè)計(jì)后,您可以進(jìn)入Blocks部分。所有后端邏輯都是通過(guò)基于塊的系統(tǒng)處理的,該系統(tǒng)充當(dāng)應(yīng)用程序和硬件之間的中介。
圖片中的粉色塊是MIT App Inventor中的文本塊,其中包含web請(qǐng)求的URL和POST數(shù)據(jù)。
URL包含您的設(shè)備ID (0a10aced20219…)。
POST文本包含訪問(wèn)令牌(b648206178aff3a71dcdd8e3f3…)以及一些命令參數(shù)(arg=right, arg=left等)。
這個(gè)令牌和設(shè)備ID是唯一的標(biāo)識(shí)符,允許你的應(yīng)用程序通過(guò)粒子API與你的特定設(shè)備進(jìn)行通信。
例子:
這是我的Photon2的設(shè)備ID:“0a10aced202194944a056838”在上面的URL
對(duì)于應(yīng)用程序中的每個(gè)按鈕,我使用了相應(yīng)的參數(shù):
?轉(zhuǎn)發(fā):參數(shù)= forward&access_token = b648206178aff3a71dcdd8e3f32db6b99dac6d98
?向后:參數(shù)= backward&access_token = b648206178aff3a71dcdd8e3f32db6b99dac6d98
?左:參數(shù)= left&access_token = b648206178aff3a71dcdd8e3f32db6b99dac6d98
?右:參數(shù)= right&access_token = b648206178aff3a71dcdd8e3f32db6b99dac6d98
?站:參數(shù)= stop&access_token = b648206178aff3a71dcdd8e3f32db6b99dac6d98
對(duì)于每個(gè)按鈕,我們使用一個(gè)令牌ID。這是我的設(shè)備的令牌ID:b648206178aff3a71dcdd8e3f32db6b99dac6d98
問(wèn)題是,你在哪里可以找到你的令牌ID和設(shè)備ID
對(duì)于令牌ID,請(qǐng)進(jìn)入粒子CLI并鍵入
請(qǐng)輸入您在Particle注冊(cè)時(shí)使用的郵箱和密碼。
這是代幣
我們已經(jīng)完成了AMR的一部分
這就是它在這之后的樣子!!
相機(jī)和超聲波傳感器與ROS的集成
本文介紹了一對(duì)安裝在伺服電機(jī)上的HC-SR04超聲波傳感器如何與ROS 2一起使用,以執(zhí)行2D環(huán)境映射。該系統(tǒng)從不同角度收集距離數(shù)據(jù),并在RViz中可視化。
系統(tǒng)概述
Arduino使用伺服電機(jī)以小步(例如,每5°)從0°到180°旋轉(zhuǎn)超聲波傳感器。
在每個(gè)角度,兩個(gè)超聲波傳感器測(cè)量距離。
Arduino通過(guò)串行發(fā)送一行數(shù)據(jù),格式如下:
角度:distance_left: distance_right
在Pi上運(yùn)行的ROS 2節(jié)點(diǎn):
讀取這個(gè)串行數(shù)據(jù)。
將傳感器讀數(shù)作為ROS消息發(fā)布。
可選地將它們轉(zhuǎn)換為二維笛卡爾坐標(biāo)。
數(shù)據(jù)在RViz中可視化,以構(gòu)建2D占用地圖。
Arduino代碼職責(zé)
掃描伺服電機(jī)從0°到180°。
觸發(fā)超聲波傳感器并讀取距離。
每隔X毫秒通過(guò)Serial.print()發(fā)送角度和距離。
ROS 2節(jié)點(diǎn)職責(zé)-
使用pyserial讀取串行數(shù)據(jù)。
解析傳入的字符串。
使用sensor_msgs/msg/PointCloud2或自定義消息(例如Point2D[])發(fā)布數(shù)據(jù)。
發(fā)布點(diǎn)/超聲掃描或類似的主題。
可視化的RViz
可視化:
使用訂閱掃描主題的配置啟動(dòng)RViz。
PointCloud2用于分散的點(diǎn)。
用于可視化標(biāo)記的MarkerArray。
ROS 2包
1. serial_comms
用途:從Arduino讀取和解析串行數(shù)據(jù)(距離,角度)
節(jié)點(diǎn):serial_reader_node
發(fā)布:
/ sensor_data (custom_msgs / SensorData)
依賴關(guān)系:rclpy, pyserial
2. sensor_fusion_node
用途:融合超聲波范圍,伺服角度和里程計(jì)數(shù)據(jù)
節(jié)點(diǎn):fusion_node
訂閱:
/ sensor_data
/奧多姆
發(fā)布:
/ fused_scan (sensor_msgs /提升)
/ amr_pose (geometry_msgs / PoseStamped)
3. mapping_visualizer
目的:在RViz2中可視化融合數(shù)據(jù)
節(jié)點(diǎn):rviz_mapper
訂閱:
/ fused_scan
/ amr_pose
4. teleop_interface
用途:用于云命令的粒子光子板接口
節(jié)點(diǎn):teleop_bridge_node
發(fā)布:
/ cmd_vel (geometry_msgs /扭曲)
特點(diǎn):
?粒子云REST集成
?緊急停車命令
?安全模式回退
?系統(tǒng)工作流程
Arduino通過(guò)串口發(fā)送距離+伺服角度。
Serial_comms節(jié)點(diǎn)讀取它并發(fā)布到/sensor_data。
sensor_fusion_node將此與odometry/IMU結(jié)合起來(lái),并將偽掃描發(fā)布為/fused_scan。
mapping_visualizer在RViz2中顯示了這一點(diǎn)。
teleop_interface監(jiān)聽(tīng)Particle Cloud和issue /cmd_vel來(lái)控制機(jī)器人的運(yùn)動(dòng)。
本文編譯自hackster.io