溫州大學(xué)電氣與電子工程學(xué)院 龐辰耀 吳平 翁德華 羅雨淅
本文基于樹莓派ROS控制器和STM32運(yùn)動(dòng)控制器系統(tǒng)硬件平臺(tái)實(shí)現(xiàn)激光SLAM算法。ROS控制器采用樹莓派4B,安裝有ROS機(jī)器人操作系統(tǒng),作為機(jī)器人端ROS節(jié)點(diǎn)控制器。底層運(yùn)動(dòng)控制器為專用于樹莓派的開源ROS控制模組,采用STM32F103作為主控制,板載IMU加速度陀螺儀傳感器,支持四路直流電機(jī)閉環(huán)控制。通過陀螺儀和碼盤電機(jī)得到機(jī)器人方位和行走里程,并基于激光SLAM算法進(jìn)行建圖,實(shí)現(xiàn)自主導(dǎo)航和避障。實(shí)驗(yàn)結(jié)果表明,本文所建立的基于ROS與激光SLAM自主導(dǎo)航與避障系統(tǒng)可以進(jìn)行高精度建圖,對于開放式的移動(dòng)機(jī)器人具有一定的意義。
近年來,隨著計(jì)算機(jī)視覺和人工智能等高新技術(shù)的逐漸成熟,機(jī)器人技術(shù)的迅猛發(fā)展,促使機(jī)器人逐漸走進(jìn)了人們的生活,廣泛地應(yīng)用于人們生活中的每個(gè)角落。如在國防領(lǐng)域里,無人戰(zhàn)機(jī)、無人執(zhí)勤車等被用于情報(bào)收集和地形勘探,減少戰(zhàn)爭風(fēng)險(xiǎn)。在家庭和商業(yè)中心,掃地機(jī)器人、服務(wù)機(jī)器人和安保機(jī)器人給人們帶來便捷服務(wù)的同時(shí)還可以減少人力成本。在物流領(lǐng)域里,搬運(yùn)小車更是成為當(dāng)中不可或缺的一部分,主要應(yīng)用于物流的分揀和搬運(yùn)以及機(jī)場港口的行李貨柜搬運(yùn)。其中,最被人熟知的就是在京東物流中心工作“小紅人”AGV機(jī)器人,“小紅人”可以實(shí)現(xiàn)自動(dòng)排隊(duì)、自動(dòng)路線規(guī)劃、自動(dòng)避讓等全自動(dòng)工作機(jī)制,實(shí)現(xiàn)了“作業(yè)無人化”“運(yùn)營數(shù)字化”和“決策智能化”[1]。
機(jī)器人的定位與導(dǎo)航是其中的關(guān)鍵問題之一,在這類問題的研究中,需要把握三個(gè)重點(diǎn):(1)地圖精確建模;(2)機(jī)器人準(zhǔn)確定位;(3)路徑實(shí)時(shí)規(guī)劃。其中,即時(shí)定位與地圖構(gòu)建(Simultaneous Localization and Mapping,SLAM)最早由Smith、Self和Cheeseman于1988年提出,在未知的環(huán)境中從一個(gè)未知位置開始移動(dòng),移動(dòng)過程中根據(jù)位置估計(jì)和地圖進(jìn)行自身定位,同時(shí)建造增量式地圖,實(shí)現(xiàn)機(jī)器人的自主定位和導(dǎo)航[2]。具有定位精度準(zhǔn)確,路徑規(guī)劃實(shí)時(shí)性強(qiáng)等特點(diǎn),吸引了一大批研究者,成為實(shí)現(xiàn)智能機(jī)器人在未知環(huán)境下的即時(shí)定位與地圖構(gòu)建技術(shù)領(lǐng)域的研究熱點(diǎn)。
鑒于此,本文提出一種基于ROS與激光SLAM自主導(dǎo)航與避障系統(tǒng),建立了基于樹莓派和STM32運(yùn)動(dòng)控制器的硬件系統(tǒng)平臺(tái),實(shí)現(xiàn)了基于激光SLAM算法的環(huán)境地圖構(gòu)建、自主導(dǎo)航與避障方法,可以進(jìn)行高精度建圖,并可實(shí)現(xiàn)自主導(dǎo)航和避障。
如圖1所示,系統(tǒng)采用樹莓派和STM32運(yùn)動(dòng)控制器框架。STM32主要作為控制核心,負(fù)責(zé)驅(qū)動(dòng)機(jī)器人電機(jī)以及速度、位姿等數(shù)據(jù)的采集。樹莓派主要連接攝像頭、超聲波模塊以及激光雷達(dá)。其中,激光雷達(dá)在SLAM建圖中起到極大作用。該模塊通過一定頻率發(fā)射激光并接收激光,從而測算出實(shí)際距離。因其具有現(xiàn)無接觸遠(yuǎn)距離測量,速度快,精度高,量程大,抗光、電干擾能力強(qiáng)等特點(diǎn),在實(shí)際應(yīng)用場合中極為廣泛。
圖1 機(jī)器人硬件模塊Fig.1 Robot hardware module
運(yùn)動(dòng)控制器為專用于樹莓派的開源ROS控制模組,采用STM32F103作為主控制,板載IMU加速度陀螺儀傳感器,支持路直流電機(jī)閉環(huán)控制。具有BOOT按鍵,支持ISP串口更新軟件。可直接安插在樹莓派上,通過插針接口可實(shí)現(xiàn)對樹莓派供電和串口通信,如圖2所示。
圖2 驅(qū)動(dòng)底板Fig.2 Drive base plate
如圖2所示,其中主控制模塊采用STM32F103作為主控制,該芯片具有豐富的外設(shè)。電機(jī)驅(qū)動(dòng)采用了集成芯片TB6612,該芯片相較于傳統(tǒng)的L298N模塊,運(yùn)行效率以及體積均有大幅度提升。
IMU模塊采用了MPU6050芯片,該芯片內(nèi)部集成了3軸陀螺儀,3軸加速度計(jì)以及一個(gè)可擴(kuò)展的數(shù)字運(yùn)動(dòng)處理器。該模塊采用了三個(gè)16位的ADC,極大地提高了數(shù)模轉(zhuǎn)換的精度。且傳感器的測量范圍都是可控的,可精確跟蹤快速與慢速的運(yùn)動(dòng),降低了處理器對于姿態(tài)運(yùn)算的負(fù)荷,提高了機(jī)器人實(shí)際運(yùn)行的效率。
電池采用的是12V的降壓模塊,需通過降壓模塊將電壓保持在5V。該模塊芯片采用的是LM2596S芯片,可持續(xù)流經(jīng)3A的大電流,具有很好的線性和負(fù)載調(diào)節(jié)特性,并在片內(nèi)集成了保護(hù)電路、電流限制、熱關(guān)斷電路等,為系統(tǒng)提供穩(wěn)定的電源電壓,保證機(jī)器人系統(tǒng)的正常運(yùn)行。
本文所示機(jī)器人(如圖3所示)采用司嵐A1激光雷達(dá),并配合激光演示平臺(tái),通過按相應(yīng)按鍵,就可以通過激光雷達(dá)即時(shí)定位與地圖構(gòu)建關(guān)鍵技術(shù),根據(jù)實(shí)際場景正確建立地圖并顯示,并夠控制其運(yùn)動(dòng)到指定位置,并能夠根據(jù)任務(wù)進(jìn)行路徑規(guī)劃,確定最佳路徑。同時(shí)采用基于ROS+OpenCV的視覺識(shí)別關(guān)鍵技術(shù)和機(jī)器人底盤控制器、激光雷達(dá)、深度相機(jī)驅(qū)動(dòng)與控制技術(shù)。可以通過機(jī)器人進(jìn)行二維碼立體檢測、人臉識(shí)別、運(yùn)動(dòng)物體識(shí)別等功能。
圖3 智能機(jī)器人實(shí)物圖Fig.3 Real object of intelligent robot
軟件層面搭載了基于Scratch3.0和樹莓派進(jìn)行深度二次開發(fā)圖形化編程軟件,充分結(jié)合樹莓派概念增加了豐富的硬件積木編程模塊,簡單易操作又不失趣味性。
Gmapping由Giorgio Grisetti和CyrillStachniss等在2007年以Fast-SLAM方案為基本原理提出,是一種基于Rao-Blackwellized粒子濾波的二維激光SLAM方法,目前在機(jī)器人定位導(dǎo)航方面應(yīng)用廣泛[3]。Gmapping可以實(shí)時(shí)構(gòu)建室內(nèi)環(huán)境地圖,其在小場景中具有計(jì)算量少,且地圖精度較高,對激光雷達(dá)掃描頻率要求較低等優(yōu)勢,因此,本文采用該算法進(jìn)行時(shí)定位與地圖構(gòu)建,Gmapping算法的偽代碼如圖4所示。
圖4 Gmapping算法的偽代碼Fig.4 Pseudo code of Gmapping algorithm
ROS提供了Gmapping算法功能包,其總體框架如圖5所示,Gmapping功能包訂閱機(jī)器人的深度信息、IMU信息和里程計(jì)信息,同時(shí)完成一些必要參數(shù)的配置,即可創(chuàng)建并輸出基于概率的二維柵格地圖。
圖5 Gmapping總體框架Fig.5 General framework of Gmapping
ROS中提供了一個(gè)3D可視化工具Rviz,可以在顯示面板區(qū)域選擇需要顯示的選項(xiàng),還包括了一個(gè)3D可視化區(qū)域,用于顯示所加載的所有項(xiàng)。在此界面上,可以顯示構(gòu)建的地圖、已規(guī)劃的路徑以及導(dǎo)航避障。可從不同角度對機(jī)器人的運(yùn)動(dòng)狀態(tài)進(jìn)行觀察,可直觀地獲取機(jī)器人當(dāng)前的位姿、創(chuàng)建的地圖、導(dǎo)航路徑等,3D可視化工具Rviz界面如圖6所示。
圖6 3D可視化工具RvizFig.6 3D visualization tool Rviz
基于ROS與激光SLAM自主導(dǎo)航與避障系統(tǒng)支持自主導(dǎo)航避障,其中全向移動(dòng)平臺(tái)支持全向移動(dòng)導(dǎo)航模式與差速移動(dòng)導(dǎo)航模式,全向機(jī)器人默認(rèn)為全向?qū)Ш侥J?,啟?dòng)自主導(dǎo)航步驟如下。首先,通過SSH命令連接到機(jī)器人,導(dǎo)航到地圖文件路徑“~/ros_ws/src/zl01b/maps”,查看用于導(dǎo)航的地圖文件。
再新建一個(gè)終端,SSH連接到機(jī)器人,運(yùn)行“zl_nav.launch”導(dǎo)航節(jié)點(diǎn),此時(shí)節(jié)點(diǎn)正在啟動(dòng),終端會(huì)輸出啟動(dòng)信息,等待出現(xiàn)圖7啟動(dòng)完成界面。
圖7 ROS系統(tǒng)配置圖Fig.7 Configuration diagram of ROS system
再新建一個(gè)終端,在虛擬機(jī)端運(yùn)行RVIZ可視化工具,并在RVIZ加載導(dǎo)航配置文件“zl_nav.rviz”。標(biāo)定機(jī)器人當(dāng)前位置和朝向,點(diǎn)擊“2D Pose Estimate”按鈕,將機(jī)器人的大體位置和朝向在地圖中標(biāo)出,箭頭的尾部為ROS機(jī)器人的位置,箭頭的方向?yàn)镽OS機(jī)器人的朝向。利用“2D Nav Goal”按鈕發(fā)布一個(gè)目標(biāo)位置,ROS機(jī)器人即可自動(dòng)導(dǎo)航與避障到達(dá)目標(biāo)位置,導(dǎo)航與避障結(jié)果如圖8所示。
圖8 ROS機(jī)器人即可自動(dòng)導(dǎo)航與避障到達(dá)目標(biāo)位置結(jié)果Fig.8 Results of ROS robot's automatic navigation and obstacle avoidance to reach the target position
本文設(shè)計(jì)了一種基于ROS的激光SLAM智能避障及自動(dòng)導(dǎo)航系統(tǒng)。具體通過建立基于樹莓派和STM32運(yùn)動(dòng)控制器的硬件系統(tǒng)平臺(tái),實(shí)現(xiàn)了基于激光SLAM算法的環(huán)境地圖構(gòu)建、自主導(dǎo)航與避障方法,可以進(jìn)行高精度建圖,并可實(shí)現(xiàn)自主導(dǎo)航和避障。本文的研究可廣泛應(yīng)用于人們生活中的每個(gè)角落,為研究開發(fā)“作業(yè)無人化”“運(yùn)營數(shù)字化”和“決策智能化”不同類型、不同領(lǐng)域的自主導(dǎo)航與避障智能機(jī)器人具有一定的意義[4]。
數(shù)字技術(shù)與應(yīng)用2021年11期