許志明,張秉天,鄒嘉俊,王 鳳,魯鵬程,倪偉傳
(1.中山大學新華學院 信息科學學院,廣東 廣州 510520;2.中山大學新華學院 設備與實驗室管理處,廣東 廣州 510520)
近年來,智能小車在各方面的應用日益廣泛,與之相關的技術已在國內(nèi)外智能小車領域掀起研究熱潮。對環(huán)境的認識和定位從而實現(xiàn)自主導航是智能小車智能化的重要標志和特征。未知環(huán)境下的即時定位與地圖構建(SLAM)一直是智能小車技術領域的研究熱點[1-3]。智能移動機器人在自主性地執(zhí)行外部任務時,往往需要自主導航系統(tǒng)或者定位技術的輔助,使得機器人能夠根據(jù)系統(tǒng)地圖提升移動至目的地,從而執(zhí)行任務[4-5]。然而對于目前常用的定位系統(tǒng),例如GPS,在存在遮擋條件或者在室內(nèi)執(zhí)行任務時,往往會出現(xiàn)定位不準,無法識別區(qū)域位置等問題,這使得機器人在移動過程中無法正確地進行判斷,很可能無法移動至目的地。
為了解決移動機器人在移動至遮蔽環(huán)境或者室內(nèi)時定位不準的問題,設計了ROS系統(tǒng)的激光SLAM視覺智能勘察小車。該系統(tǒng)采用的激光SLAM搭配視覺攝像頭可以解決室內(nèi)環(huán)境的物體定位及地圖構建問題;采用的是開源ROS機器人操作平臺來設計智能小車的控制系統(tǒng),具備易掌握,易修改,易控制以及功能可擴展性強等特點,并通過global planner功能為小車規(guī)劃從當前位置至目的地的導航路線,從而達到最優(yōu)化,使其更加適用于現(xiàn)實生活之中。
實現(xiàn)一種ROS系統(tǒng)的激光SLAM視覺智能勘察小車,采用了開源機器人系統(tǒng)ROS[6-7];ROS開源工具擁有非常強大的圖形化模擬環(huán)境,能夠便捷地實現(xiàn)對機器人小車的控制;通過深度攝像頭采集圖像數(shù)據(jù),實現(xiàn)人體識別,采用激光雷達結合SLAM技術[8-10],可以實現(xiàn)測距、避障,以及室內(nèi)外定位和自主導航功能。
系統(tǒng)的整體框架可以分為應用層、導航層、硬件驅動層和硬件層。在硬件層中,以STM32為主控核心,連接其他的驅動和功能模塊外接電路。通過硬件層和硬件驅動層的結合,來實現(xiàn)整體系統(tǒng)各功能部件的運作。其中導航層主要是通過激光雷達和深度相機來實現(xiàn)自主導航與建圖、避障等功能。通過在上位機接收該智能小車發(fā)送的數(shù)據(jù),可以查看小車的建圖數(shù)據(jù)及導航數(shù)據(jù)。
本系統(tǒng)的電機驅動模塊里采用的是Stm32驅動板,采用STM32作為電機的主控器是考慮到STM32芯片體積小,引腳結構功能全面,并且STM32有官方庫文件,在進行編程時可以方便地使用其接口函數(shù)。而且使用STM32芯片進行開發(fā)的產(chǎn)品可移植性高,便于后期的再使用,STM32的低功耗也是本系統(tǒng)將其作為電機驅動板的考慮原因之一。由于系統(tǒng)的智能小車所搭載的鋰電池容量有限,為了得到更大的續(xù)航,需要將更多的能耗用于底輪驅動上,因此其他模塊會盡量考慮節(jié)能問題。
圖1為智能小車的整體外觀結構的設計圖,按照已構思好的外觀設計圖來對小車各部分硬件進行組裝搭配。其中最底層為小車的移動底輪與第一層承重板,第一層承重板上面是電機驅動板,ROS主控板(采用的是樹莓派3B),鋰電池,陀螺儀傳感器。第二層承重板上面搭載激光雷達。第三層承重板上面搭載深度攝像頭。
圖1 小車的整體設計圖
系統(tǒng)的軟件設計部分包括ROS控制系統(tǒng)設計、上位機控制界面設計、建圖算法等。ROS控制系統(tǒng)設計用于設計出跨平臺的機器人控制系統(tǒng);上位機采用ROS開發(fā)了簡易的人機交互界面,運行的上位機系統(tǒng)是Ubuntu系統(tǒng);而構建地圖則是采用的激光SLAM搭配視覺攝像頭來實現(xiàn)對室內(nèi)環(huán)境的地圖構建。
1.2.1 ROS控制系統(tǒng)設計
在智能小車控制系統(tǒng)的設計上,采用的是ROS開源機器人系統(tǒng)設計工具。ROS提供了許多易于調(diào)用的功能函數(shù),在設計智能小車控制系統(tǒng)時,便于使用這些功能函數(shù)來設計智能小車的控制程序,提高了開發(fā)效率。并且采用ROS進行設計,可以設計跨平臺的機器人控制系統(tǒng),降低了硬件選擇成本。
為了有效創(chuàng)建地圖并進行定位和導航[11-12],在智能小車移動的過程中,采用激光雷達可以確定小車在地圖上的位置,實現(xiàn)定位功能;而對于小車移動路線的導航問題,根據(jù)小車位置、目的地位置及地圖信息,系統(tǒng)自動進行路徑規(guī)劃,通過global planner功能為小車規(guī)劃從當前位置至目的地的導航路線,同時根據(jù)小車移動過程中所采集到的障礙物位置等信息,導航路線會實時更新,不斷修正從而實現(xiàn)避開障礙物,到達目的地的路線[13-14]。
1.2.2 控制界面
為了對智能小車的實時移動環(huán)境及定位和導航情況進行勘測,上位機采用ROS開發(fā)了簡易的人機交互界面,上位機的運行系統(tǒng)為Ubuntu,可以觀察到智能小車在地圖上的位置。
地圖的構建則是采用的激光雷達來實現(xiàn),其中對于地圖的構建需要通過利用rqt圖形工具來找到滿意的PID值。
在Robot端運行下面命令:
$ roslaunch rikirobot bringup.launch
運行PID配置節(jié)點:
rosrun riki_pid pid_configure
在開發(fā)電腦端執(zhí)行行鍵盤控制命令:
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
打開rqt,通過執(zhí)行下面命令:$rqt
加載pid圖形配置文件Perspective>Import選擇~/catkin_ws/src/riki_pid/riki_pid. perspective
通過上面調(diào)試用戶得到最合適的PID值后,在控制面板上進行PID校正,執(zhí)行命令:$ platformio run --target upload
運行下面命令:
$cd ~/catkin_ws/src/rikirobot_project/
rikirobot/maps
$ls -a house.pgm house.yaml
圖2是確定PID值后的運行結果。
圖2 檢查地圖效果圖
為了使系統(tǒng)得到的數(shù)據(jù)更為準確,文中先對系統(tǒng)的里程計誤差進行分析與標定,并通過陀螺儀誤差值來提高智能小車在移動過程中所測量的里程精度,并通過觀察地圖構建效果與構建時間,來驗證系統(tǒng)的可行性。
傳統(tǒng)方法考慮的是移動機器人的主動輪的轉動角度與位移是一種線性關系[15],但在實際的操作中發(fā)現(xiàn)小車在實際行駛過程中可能存在打滑現(xiàn)象;因此,當出現(xiàn)打滑的情況時,這種動輪的轉動角度與位移的線性關系就不存在了,如果仍然以線性關系作為標準,會發(fā)生定位誤差。而誤差主要來源兩處:系統(tǒng)性誤差和非系統(tǒng)性誤差。
通過研究,發(fā)現(xiàn)導致誤差來源于負載大小與負載重心不一致,同時除了本身存在的問題外環(huán)境因素也是不可忽略的,例如地面不平導致打滑或者障礙物過多,同樣也會影響誤差的產(chǎn)生。為了解決該誤差問題,文中采取矯正智能小車的系統(tǒng)參數(shù)的方法。對于智能小車的陀螺儀誤差,采取使智能小車以不同的角速度(0.2~1.0 rad/s)原地旋轉180°,在旋轉之后觀測實驗結果,對比里程角度信息和實際角度誤差;圖3為實驗的誤差結果。
圖3 陀螺儀誤差
由圖3可以看出,小車的運動角度誤差隨著角速度的變化同樣呈現(xiàn)非線性變化。根據(jù)實際情況,為了提高智能小車在移動過程中所測量的里程精度,在該系統(tǒng)中所采取的措施是對智能小車的里程計實行標定,其中采取的方法是:里程計以0.3 m/s的線速度向前移動,如果位移達到1 m時,智能小車會原地旋轉90°,不斷采取該方法直至四次,直至智能小車的移動軌跡為正方形。
由于前面的測試是分模塊單獨測試,為了保障整體系統(tǒng)校準及測試正常,還需要將整體智能小車進行運行測試;文中在樹莓派主控板的終端上執(zhí)行slam構建地圖,其中智能小車加載地圖成功圖像如圖4所示。
圖4 小車地圖加載
當?shù)貓D加載成功時,小車便會對周圍環(huán)境進行掃描,即可將所經(jīng)過的區(qū)域都進行掃描并加入到構建的地圖中,并將數(shù)據(jù)上傳回上位機控制界面,其數(shù)據(jù)延時時間為0.2 s,基本可以實現(xiàn)數(shù)據(jù)的實時傳送與地圖的構建。
通過觀察圖5、圖6可以看到,系統(tǒng)所構建的地圖場景邊界輪廓清晰,與場地環(huán)境基本一樣,說明本次整體的系統(tǒng)測試成功。
圖5 場景1
開發(fā)了一種ROS系統(tǒng)的激光SLAM視覺智能勘察小車,該智能小車在室內(nèi)及遮蔽環(huán)境下仍然可以達到一定的定位及導航準確度。通過開源ROS機器人操作平臺來設計智能小車的控制系統(tǒng),使得系統(tǒng)具備易修改、易控制等特點;采用激光雷達SLAM,使其在室內(nèi)或遮蔽環(huán)境下相比采用傳統(tǒng)雷達SLAM或視覺SLAM具有更高的定位精度與抗干擾性。當然,該系統(tǒng)存在上位機與智能小車的通信距離有限的問題,當智能小車與控制終端的距離超過300 M的wifi有效距離時,會出現(xiàn)信號收發(fā)較差的情況。這將作為日后的研究方向,對系統(tǒng)進行進一步優(yōu)化,使其更加適用。