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