【大一立项】ROS服务机器人-结题报告
知乎:Magical-E
Github:Magical-E
項(xiàng)目展示:【大一立項(xiàng)】親手搭建ROS機(jī)器人小車
1.課題背景
近年來,機(jī)器人領(lǐng)域飛速發(fā)展,各種技術(shù)層出不窮。從四足機(jī)器狗的運(yùn)動(dòng),到阿爾法狗戰(zhàn)勝柯潔,再到無人駕駛上路測(cè)試,各種新發(fā)明、新成果向我們表明機(jī)器人將會(huì)給社會(huì)帶來翻天覆地的變化。未來,機(jī)器人必將會(huì)引領(lǐng)人們的工作進(jìn)行智能化升級(jí),幫助人們更高效、更準(zhǔn)確、更節(jié)省成本地完成工作。隨著人工智能、云計(jì)算的發(fā)展,機(jī)器人所需要的成本不斷下降,在可以遇見的未來,一大批服務(wù)機(jī)器人將出現(xiàn)在前臺(tái)迎賓、餐廳送菜、養(yǎng)老服務(wù)、清潔康復(fù)等領(lǐng)域,而我國服務(wù)機(jī)器人起步較晚,但發(fā)展迅猛、需求巨大,值得引起關(guān)注。服務(wù)機(jī)器人通常應(yīng)用于非確定性環(huán)境,如酒店、家庭、醫(yī)院,需要通過激光雷達(dá)、深度攝像頭等傳感器對(duì)周圍環(huán)境進(jìn)行感知,還要通過語音交互與人共同協(xié)作才能完成任務(wù)。本文從服務(wù)機(jī)器人所需的基本功能入手,初步學(xué)習(xí)了所需功能的經(jīng)典算法原理,并復(fù)現(xiàn)了經(jīng)典算法在服務(wù)機(jī)器人上的效果。
2.課題研究內(nèi)容與方法
服務(wù)機(jī)器人所需要的功能包括但不限于:自主移動(dòng)、語音交互、環(huán)境感知、路徑規(guī)劃、目標(biāo)檢測(cè)、目標(biāo)跟蹤等功能,項(xiàng)目組自主搭建基于Arduino的底盤完成了機(jī)器人的自主移動(dòng),使用樹莓派和Jetson Nano運(yùn)行ROS將Gmapping、RGB-DSLAMv2、路徑規(guī)劃(A* & TEB)、語音交互、YOLOv3目標(biāo)檢測(cè)、KCF目標(biāo)跟蹤等算法整合到機(jī)器人上,并檢測(cè)算法效果。
2.1底盤搭建
底盤為兩輪差速模型,采用Arduino作為下位機(jī),樹莓派作為上位機(jī)。Arduino接收樹莓派的速度信息,通過L298N對(duì)兩個(gè)直流減速電機(jī)進(jìn)行調(diào)速;并且接收霍爾編碼器數(shù)值,返回給樹莓派。樹莓派計(jì)算出速度后發(fā)送給Arduino,并且接收Arduino反饋的編碼器數(shù)值,將編碼器進(jìn)行積分得出底盤的里程計(jì)信息。流程如下:
2.2 Gmapping原理與實(shí)踐
? 服務(wù)機(jī)器人想要獲得周圍的環(huán)境信息以及自身在環(huán)境中的位姿需要SLAM,目前較為經(jīng)典的SLAM算法有Gmapping、Karto、Cartographer、Hector等算法,本次項(xiàng)目主要學(xué)習(xí)了Gmapping的原理,并檢測(cè)了小范圍建圖的效果。
原理: SLAM指實(shí)時(shí)位姿估計(jì)和地圖構(gòu)建,對(duì)于激光SLAM,由于激光的數(shù)據(jù)較為準(zhǔn)確,使用覆蓋柵格建圖可以很好地構(gòu)建地圖,所以主要任務(wù)便是位姿估計(jì)。Gmapping優(yōu)化了基于RBPF的粒子濾波器:1. 優(yōu)化粒子耗散問題:減少重采樣次數(shù)來避免粒子多樣性被耗散:通過公式評(píng)估粒子權(quán)重的分散度,當(dāng)Neff小于一定閾值時(shí),說明粒子分布與真實(shí)情況差距較大,此時(shí)才應(yīng)該進(jìn)行重采樣;而Neff未小于閾值時(shí),說明粒子分布與真實(shí)情況較為符合,可以減少重采樣次數(shù)。2. Gmapping通過改善提議分布來優(yōu)化濾波器,提升proposal分布采樣的效果來減少所需粒子數(shù),從而減少內(nèi)存消耗,配合里程計(jì)僅需30個(gè)粒子便能較好地估計(jì)位姿、構(gòu)建地圖:里程計(jì)給出預(yù)測(cè)后,激光雷達(dá)進(jìn)行一次掃描匹配得到圖示L所代表的尖峰區(qū)域,在L區(qū)域內(nèi)選擇K個(gè)點(diǎn)計(jì)算里程計(jì)的均值與方差,得到了真實(shí)位姿的近似分布,在高斯分布中采用的粒子有更好的效果,從而可以減少所需粒子數(shù)目。
實(shí)踐:在ROS中編譯好相關(guān)軟件包后,配置對(duì)應(yīng)launch文件,添加好laser到base_link的靜態(tài)TF變換便可運(yùn)行。但最開始建圖效果很差,后來發(fā)現(xiàn)是里程計(jì)未進(jìn)行校準(zhǔn),在進(jìn)行里程計(jì)的標(biāo)定(輪徑和輪距)后效果有一定提升,最終效果如下:
如圖可見:即便Gmapping沒有回環(huán)檢測(cè)算法,但依靠粒子多樣性仍能夠在小回環(huán)中消除累計(jì)誤差。雖然目前基于圖優(yōu)化的Cartographer已經(jīng)基本取代gmapping,但作為經(jīng)典SLAM的Gmapping憑借簡潔、計(jì)算量小等特點(diǎn)仍值得學(xué)習(xí)。
2.3 RGB-D SLAMv2實(shí)踐
顧名思義,RGB-D SLAMv2采用深度攝像頭,通過對(duì)RGB圖與深度圖(Depth)處理生成點(diǎn)云,SLAM主要分為四個(gè)部分:前端、后端、閉環(huán)檢測(cè)、建圖:
實(shí)踐:由于RGB-D SLAMv2使用g2o優(yōu)化并且用點(diǎn)云表示三維地圖,所以在使用前首先要編譯好g2o與PCL庫。編譯完成后需要改寫launch文件,將相機(jī)的RGB圖像的topic、深度圖像的topic和相機(jī)參數(shù)的topic重映射到launch所需的話題名。由于使用點(diǎn)云表示三維地圖消耗的內(nèi)存較大,運(yùn)行時(shí)需要緩慢移動(dòng)相機(jī),效果如下:
2.4 EKF & AMCL & 路徑規(guī)劃
對(duì)于服務(wù)機(jī)器人而言,最重要的就是能夠自主移動(dòng)到想要到達(dá)的位置,即自主導(dǎo)航。導(dǎo)航之前機(jī)器人首先需要定位自身位置,然后通過SLAM為機(jī)器人建立的拓?fù)涞貓D進(jìn)行全局路徑規(guī)劃。全局路徑規(guī)劃器規(guī)劃好全局路徑后,為了讓機(jī)器人盡量沿著規(guī)劃的全局路徑走會(huì),同時(shí)避免在路線中碰撞到突然出現(xiàn)的障礙物,局部路徑規(guī)劃器會(huì)根據(jù)激光雷達(dá)的掃描信息規(guī)劃出一條局部路徑,然后根據(jù)局部路徑不斷發(fā)送速度給底盤控制器完成導(dǎo)航。導(dǎo)航的總體框架如下:
機(jī)器人需要準(zhǔn)確定位自身位置,由于單獨(dú)由編碼器積分得出的odom存在一定的累計(jì)誤差,可以讓線速度主要由編碼器計(jì)算,而角速度主要由IMU計(jì)算,在設(shè)置好編碼器和imu的協(xié)方差后,通過擴(kuò)展卡爾曼濾波robot_pose_ekf將編碼器信息和imu信息進(jìn)行融合,得出odom_combined話題:
在導(dǎo)航的過程中可能會(huì)出現(xiàn)意外情況讓里程計(jì)跑飛,為了避免這樣的情況,導(dǎo)航包中提供了AMCL即自適應(yīng)蒙特卡羅定位的功能包用于定位機(jī)器人的位姿。AMCL是基于粒子濾波的定位方法,可以通過設(shè)置粒子數(shù)目和粒子分布情況來調(diào)節(jié)定位效果。在給定初始位姿后,該算法會(huì)在對(duì)應(yīng)位置散布一定數(shù)量的粒子,機(jī)器人進(jìn)行移動(dòng)后,根據(jù)激光雷達(dá)掃描信息進(jìn)行濾波處理,粒子會(huì)逐漸收斂得到準(zhǔn)確位姿:
定位完成后便可以進(jìn)行路徑規(guī)劃,路徑規(guī)劃包括全局規(guī)劃和局部規(guī)劃,本次項(xiàng)目主要采用A*全局路徑規(guī)劃器和TEB局部路徑規(guī)劃器。A*是Dijkstra的改進(jìn)版,加入了啟發(fā)式函數(shù)進(jìn)行估值,達(dá)到最短路徑的效果。TEB全稱Timed-Elastic-Band,是時(shí)間最短的最優(yōu)控制器,基本思路為在周圍散布姿態(tài),通過搜索樹搜索最優(yōu)方案。效果如下:(紅色為全局路徑規(guī)劃路線,綠色為全局路線上突然出現(xiàn)障礙物后規(guī)劃的局部路徑)
當(dāng)然,在真實(shí)情況中服務(wù)機(jī)器人不一定需要采用最短路徑,也就是說可以根據(jù)實(shí)際需要自己規(guī)劃一條路徑,加上局部路徑規(guī)劃器便可以按照需求自主導(dǎo)航。
2.5 語音交互
人們最自然的交流方式是語音,語音也是人機(jī)交互中最便捷、高效的方式,語音交互突破了傳統(tǒng)人機(jī)交互方式的局限性,對(duì)老人、殘障人群較為友好,在助老、迎賓等領(lǐng)域效果顯著。所以作為服務(wù)機(jī)器人,語音交互是必不可少的一個(gè)功能。語音交互目前分為四個(gè)部分:語音喚醒(Wake Up)、語音識(shí)別(ASR)、語義理解(NLP)、語音合成(TTS)。本次項(xiàng)目中采用SnowBoy開源語音喚醒庫,百度語音的語音識(shí)別、語音理解和語音合成進(jìn)行語音交互。
SnowBoy是一個(gè)開源的、輕量級(jí)的語音喚醒庫,可根據(jù)用戶定制喚醒詞。在語音喚醒后,才能進(jìn)行百度語音提供的識(shí)別、理解和合成功能。具體流程如下:
本次項(xiàng)目使用樹莓派配合樹莓派語音板完成了查看時(shí)間、查詢天氣、垃圾分類等功能,但在噪聲較大的地方語音交互效果不夠理想。
2.6 YOLOv3
深度學(xué)習(xí)是近年來機(jī)器人學(xué)最火的領(lǐng)域之一,目標(biāo)檢測(cè)是深度學(xué)習(xí)最主要應(yīng)用的課題。目標(biāo)檢測(cè)可用于服務(wù)機(jī)器人的識(shí)別跟蹤,從而提高機(jī)器人的任務(wù)輔助能力。YOLO算法是由Redmon等提出的基于回歸方法的目標(biāo)檢測(cè)算法,使用Darknet-53網(wǎng)絡(luò)架構(gòu),不斷將特征圖卷積處理得到三次預(yù)測(cè)結(jié)果,然后對(duì)三次預(yù)測(cè)結(jié)果進(jìn)行抑制處理得到最終效果,流程如下:
本次項(xiàng)目采用Jetson Nano配合奧比中光深度攝像頭進(jìn)行目標(biāo)檢測(cè).Jetson Nano是英偉達(dá)今年新推出的低功耗GPU開發(fā)板,配備128個(gè)CUDA核心。在使用GPU加速后YOLOv3攝像頭實(shí)時(shí)檢測(cè)幀率可達(dá)10幀。
2.7 KCF目標(biāo)跟蹤
有了目標(biāo)檢測(cè)自然需要目標(biāo)跟蹤,在特殊場景下可能需要服務(wù)機(jī)器人跟隨人,或跟隨某一移動(dòng)物體來完成任務(wù)。KCF算法是由Joao F. Henriques等人提出的逐幀訓(xùn)練2D濾波器的跟蹤算法,其效果穩(wěn)定、反應(yīng)迅速。
本次項(xiàng)目采用深度攝像頭,首先將RGB圖像話題和深度圖像話題重映射到kcf_tracker所需話題下,然后調(diào)試相機(jī)深度參數(shù),打印出dist_val值,乘以一定的比例系數(shù)將其控制在0.4~2之間即可,kcf_tracker原理流程如下:
2.8 APP控制
? ROS Control是一款基于ros_bridge的手機(jī)APP,通過HTTP協(xié)議連接到底盤的Master,讀取Master下的image、scan等topic并顯示出來。同時(shí),APP還可以模擬搖桿和重力傳感發(fā)送速度給底盤,甚至可以設(shè)置目標(biāo)點(diǎn),通過讀取odom信息讓底盤移動(dòng)到目標(biāo)點(diǎn)。效果如下:
4.研究成果
本次項(xiàng)目通過分布式通訊,搭建了以樹莓派、Jetson Nano、PC共同為上位機(jī),以Arduino Mega為下位機(jī)的ROS服務(wù)機(jī)器人,機(jī)器人總體框架如下:
完成了以下功能:
本次項(xiàng)目小組使用ROS將整合到了服務(wù)機(jī)器人上,完成了SLAM、多點(diǎn)導(dǎo)航、語音交互、目標(biāo)檢測(cè)、目標(biāo)跟蹤、APP控制等服務(wù)機(jī)器人所需的基本功能。同時(shí)小組對(duì)串口通訊、SLAM、路徑規(guī)劃進(jìn)行了系統(tǒng)學(xué)習(xí),也對(duì)語音交互、深度學(xué)習(xí)、計(jì)算機(jī)視覺有了一定的了解和認(rèn)識(shí)。
5.創(chuàng)新點(diǎn)
本次項(xiàng)目通過學(xué)習(xí)ROS將許多算法整合到了服務(wù)機(jī)器人上,學(xué)會(huì)了使用開源軟件完成項(xiàng)目需求。ROS是一種松耦合的系統(tǒng)結(jié)構(gòu),可以方便開發(fā)者根據(jù)需求靈活添加不同功能模塊。同時(shí)ROS提供標(biāo)準(zhǔn)化框架,方便代碼的重復(fù)利用,也方便開發(fā)者學(xué)習(xí)開發(fā)。
6.結(jié)束語
經(jīng)過這次創(chuàng)新立項(xiàng),我們了解到了一個(gè)機(jī)器人是需要很多功能才能高效地完成任務(wù),這說明機(jī)器人領(lǐng)域有很多值得探索的方向。根據(jù)估算,全球機(jī)器人市場需求巨大,而目前除了掃地機(jī)器人和無人機(jī),其他領(lǐng)域尚未成功大批量落地產(chǎn)品,尤其是服務(wù)機(jī)器人領(lǐng)域,目前的產(chǎn)品功能有限,所以還有很多復(fù)雜的問題等待我們?nèi)ソ鉀Q。
7.參考文獻(xiàn)
[1] Grisetti, C. Stachniss, and W. Burgard, “Improved techniques for grid mapping with rao-blackwellized particle filters,” IEEE Transactions on Robotics (T-RO), vol. 23, pp. 34–46, 2007.
[2]wiki.ros.org.
[3]范麗,蘇兵,王洪元,《基于YOLOv3模型的實(shí)時(shí)行人檢測(cè)改進(jìn)算法》,山西大學(xué)學(xué)報(bào)(自然科學(xué)版),3-4,2019.
總結(jié)
以上是生活随笔為你收集整理的【大一立项】ROS服务机器人-结题报告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机科学与天文,计算机科学技术帮助天文
- 下一篇: 准备弄一个Bambook来看书