朱增添,張 鵬,楊依玲,溫戈平,張勇超,張子園
隨著現(xiàn)代科技的高速發(fā)展,各種自動化設備層出不窮,機器人開始走入了人們的生活,從農業(yè)機械到工業(yè)設備,而服務型機器人更是受到了廣泛關注。但室內機器人的普及還存在許多問題亟待解決,定位與導航就是其中的關鍵問題之一。
在這類問題的研究中,需要把握三點:一是地圖精確建模;二是機器人準確定位;三是路徑實時規(guī)劃。
近幾年,出現(xiàn)了多種有效的解決方法,例如,即時定位與地圖構建,蒙特卡羅定位算法,動態(tài)窗口逼近避障算法,等等[1]。
為了保證室內移動機器人的全向移動特性,本文采用麥克納姆輪作為驅動輪,設計和制作了移動機器人底盤和車載結構,設計了集成激光雷達、攝像頭、超聲波傳感器的硬件控制系統(tǒng),上位機采用工控機搭載的ROS,下位機采用STM32 嵌入式系統(tǒng),基于ROS 設計了地圖構建算法,實現(xiàn)了高精度的地圖構建。
普通的機器人輪子很難實現(xiàn)全向移動,若想要實現(xiàn)機器人的全向移動,一般使用全向輪或麥克納姆輪。相比全向輪,麥克納姆輪的靈活性和機動性較強,有利于控制機器人縱向X 和橫向Y 的速度分量以及ω 旋轉的角速度,提高機器人的運動穩(wěn)定性。由于本文所設計的機器人需要進行地圖構建自主導航運動,且重心較低,因此,在運動過程中為了方便避障,本文選用麥克納姆輪。
機器人車體主要分為上、中、下3 層設計,上層因為視野開闊,用來放置顯示屏與kinect 2 攝像頭,方便使用者操作與檢查;用于地圖建模和檢測周圍環(huán)境的激光雷達也放置在上層,避免掃描不到關鍵的障礙物;中層放置下位機,包含STM32 單片機、各類電氣元件以及散熱機構;下層用于放置麥克納姆輪以及排線。通過這樣有序的排列,可以有效地節(jié)省空間,并且使得各器件可以更好地發(fā)揮其特有功能。
為了減輕機器人重量,同時能夠承受其相應的行駛速度所帶來的最大沖擊,選擇用鋁板作為分層基板,同時,在裝載各電氣元件時,在鋁板上留足空間,防止在撞擊時損壞元器件。我們通過三維建模,通過3 代機器人結構的改進,得到了一套完整可靠的機器人結構。設計和試制的全向移動機器人如圖1 所示。整車尺寸為長330mm,寬387mm,高238mm,重量為3.7kg。
圖1 移動機器人實物圖
移動機器人的控制系統(tǒng)包含上位機和下位機,上位機采用Ubuntu16.04 系統(tǒng)搭載ROS Kinetic 機器人操作系統(tǒng),借助開源功能包slam_gmapping 和navigation 實現(xiàn)機器人的即時定位與地圖構建以及機器人的定點導航功能。
為了保證程序處理速度,為后續(xù)加入更多模塊打下基礎,同時兼顧體積、重量、成本、可靠性等因素,選用i5 4200U 工業(yè)工控機來運行ROS 系統(tǒng),配合4G 運行內存,能輕松完成計算任務。在工控機上運行ROS 節(jié)點,獲取下位機上傳的機器人傳感器信息,以及激光雷達環(huán)境信息,通過move_base功能包實現(xiàn)路徑規(guī)劃,發(fā)布速度信息。
采用STM32F103 處理芯片來獲取和處理底層運動控制及傳感器信息,該芯片搭載FreeRTOS 實時處理系統(tǒng),通過任務調度機制,可實現(xiàn)多任務高效穩(wěn)定運行。下位機主要功能是實現(xiàn)機輪運動速度閉環(huán)控制。麥克納姆輪對于各個輪子之間的速度控制精度要求較高,故采用高精度500 相光電編碼器,通過STM32 正交解碼獲取運動速度,使用增量式PID 控制,處理周期為10ms。在突遇急剎時,利用加速度限幅控制機器人逐漸減速,運動過程更加平穩(wěn)。采用500 相光電編碼器積分得來的里程計信息準確,有利于實現(xiàn)精確的自主導航。慣性測量單元(IMU)測出機器人的加速度、角速度和三軸磁場偏角,使用卡爾曼濾波器對這些數(shù)據(jù)進行融合,最終得到加速度ax、ay 和姿態(tài)角θ。對ax 和ay 進行兩次積分,獲得了歐拉角[2]。底層控制主板上使用PH2.54 排線,接線可靠,便于更換。上下位機之間通信采用USB-TYPEB 接口,結構緊湊,能夠保證上下位機的通信質量。
移動機器人在地圖中的定位以及各個節(jié)點(joint)之間的關系是通過TF-Tree 建立起來的。TF 是一個用戶隨時間跟蹤多個坐標系的包,機器人不同部位和世界的坐標系以tree structure 的形式存儲起來,TF 管理一系列的樹狀結構坐標系之間的關系,允許用戶在各個坐標系中進行點、向量的變換;將各種信息的發(fā)布者位置與base_link(小車底盤中心坐標)聯(lián)系,在運動過程中實現(xiàn)各個關節(jié)的坐標轉化。圖2 是TF-Tree 所管理發(fā)布的TF坐標系轉換關系。圖3 是各個節(jié)點之間的通信關系,發(fā)布控制信息,在節(jié)點之間實現(xiàn)數(shù)據(jù)的交互。
圖2 TF坐標系轉換圖
圖3 節(jié)點通信圖
移動機器人的自主導航需要地圖信息,在位置確定的情況下通過自身攜帶的激光雷達、里程計和IMU 來獲取周邊信息進行自主定位。SLAM 是指機器人在陌生環(huán)境中通過獲取自身傳感器數(shù)據(jù),實現(xiàn)在陌生環(huán)境中的自主定位與環(huán)境地圖構建。機器人依據(jù)SLAM 構建的室內環(huán)境地圖進行路徑規(guī)劃,同時利用機載傳感器數(shù)據(jù)自主避障到達目標點[3]。
Gmapping 算法[4]是基于粒子濾波RBPF(Rao-Blackwellized Particle Filter) 的SLAM 算法。RBPF 將 SLAM 分為兩個問題,一是機器人的位姿估計,二是基于位姿估計進行環(huán)境特征估計。前者使用粒子濾波算法進行遞歸運算,后者使用擴展卡爾曼濾波估計得到環(huán)境特征的路標。Gmapping 可以實時構建室內地圖,有效利用車輪里程計信息[5],對激光雷達頻率要求低、魯棒性高,不需要太多的粒子,沒有回環(huán)檢測,故在構建小場景地圖的精度較高且計算量較小。
amcl 蒙特卡洛定位使用粒子濾波來進行定位。粒子濾波方法在地圖空間均勻地撒一把粒子,通過獲取機器人的移動信息來移動粒子。將每個粒子所處位置模擬的傳感器信息與觀察到的傳感器信息作對比,賦予每個粒子一個概率,并利用這個概率來重新生成粒子,概率越高,生成的概率越大。經(jīng)過多次迭代,所有粒子會逐漸收斂到一起,機器人的確切位置就被推算出來了[6]。
調用move_base 作為導航過程運動控制的最終執(zhí)行機構,訂閱用戶發(fā)布的導航目標位置點,并將實時運動控制信號cmd_vel 下發(fā)給底盤以實現(xiàn)最終運動控制。move_base 中的各種導航算法模塊都是以插件的形式進行調用,有利于替換不同的算法以適應不同的應用。move_base 節(jié)點通信機制如圖4 所示。圖中global_planner 用于全局路徑規(guī)劃,local_planner 用于局部路徑規(guī)劃,golobal_costmap 是全局代價地圖用于描述全局環(huán)境信息,localcostmap 是局部代價地圖用于描述局部環(huán)境信息,recovery_behaviors 是恢復策略用于機器人碰到障礙后自動進行逃離恢復。
圖4 move_base節(jié)點通信機制
通過SLAM 和move_base 的結合,在沒有得到地圖的情況下,通過在rviz 上給定目標點,發(fā)布給move_base 節(jié)點計算出路徑,在向目標點運動的同時,激光雷達掃描周邊環(huán)境,完成探索式的地圖構建。圖5 顯示了工作室地圖構建的過程,L 型工作室面積約60 平方米,機器人經(jīng)過4 個關鍵位置后地圖基本建立起來了。房間地圖的墻壁邊緣清晰,圖中桌子等障礙物位置與實際位置相吻合,為下一步實現(xiàn)自主定位導航提供了良好基礎。
圖5 地圖構建過程
加載房間地圖資源,并運行amcl 節(jié)點,設置初始地點和目標地點,機器人會根據(jù)全局代價地圖計算出一條通向目標點的最佳路徑。在運動過程中,如遇到突發(fā)情況,局部代價地圖修正路線使其安全到達目標地。圖6 中的綠線為機器人自主導航的實時路徑情況。最佳路徑選擇比較合理,經(jīng)過兩次90°轉向,繞開桌子障礙物,最終到達目標點。
圖6 自主定位導航
從底層開始開發(fā)了一個基于ROS 的室內移動機器人,自主設計了機械結構,編寫了嵌入式程序,完成了上下位機之間的通信協(xié)議,實現(xiàn)了機器人的定位導航功能;掌握了整套移動機器人開發(fā)機制,得到了一個性能可靠的移動機器人底盤,為接下來結合MoveIt 及雙目視覺實現(xiàn)移動機器人裝備6 自由度機械臂自由抓取物體打下基礎。