高騰騰,李彩虹,劉國名,郭娜,王迪
(山東理工大學 計算機科學與技術學院, 山東 淄博 255049)
移動機器人是一種在復雜環(huán)境下工作,具有自規(guī)劃、自組織、自適應能力的智能系統(tǒng)[1]。在移動機器人的相關技術研究中,自主導航是其核心問題,也是實現智能化和自主移動的關鍵技術,具有重要的研究意義。簡單來說,自主導航系統(tǒng)能夠確定機器人當前位姿,控制機器人沿一條高效、通暢的路線移動到指定目標位置。
自主導航系統(tǒng)中,應用最廣泛的是GPS定位導航[2-4]與INS慣性導航[5-7]。其中GPS導航通過GPS實時接收衛(wèi)星信息調整機器人位姿,促使機器人完成既定路線的智能化追蹤。這種方式在室外空曠環(huán)境有比較好的導航效果,但在室內環(huán)境中,由于建筑物等對GPS信號的干擾,極易使機器人造成定位誤差,無法追蹤規(guī)劃好的路線。慣導系統(tǒng)通過計算傳感器數據的方式推算機器人航跡,實現定位與導航。這種方式在短時間內,導航精度比較高,但隨著時間的增長,因漂移現象積累的誤差將會使機器人逐漸喪失導航能力。文獻[8-11]針對GPS導航系統(tǒng)與慣導系統(tǒng)的缺點,提出INS/GPS組合導航系統(tǒng),在一定程度上提高了導航精度。但在室內場景下,其提升效果并不理想。文獻[12]提出地面鋪設交變磁場軌道與讀取IC卡定位的方式進行導航系統(tǒng)設計,成本較大且導航點無法自由調節(jié)。文獻[13]提出一種多慣性導航系統(tǒng)信息融合方法,有效提高了傳統(tǒng)單慣性導航系統(tǒng)的導航精度。文獻[14-15]提出結合慣導系統(tǒng)與視覺導航系統(tǒng),有效發(fā)揮兩種導航技術的優(yōu)勢,進而提高導航精度。
本文針對GPS導航系統(tǒng)與INS慣導系統(tǒng)缺點,參照文獻[13-15]的研究成果,基于ROS平臺[16],采用編碼器里程計與激光雷達相結合的傳感系統(tǒng),提出一種應用于室內環(huán)境的自主導航系統(tǒng)。
設計在Gazebo仿真軟件運行且能夠發(fā)布里程計數據與雷達數據的URDF移動機器人模型,使其能夠匹配自主導航系統(tǒng),完成未知環(huán)境下的導航測試。
設計機器人底盤的URDF文件,使機器人能夠接受自主導航系統(tǒng)的移動控制指令并發(fā)布里程計數據。文件主要包括添加慣性參數、碰撞屬性的載物板連桿、驅動輪連桿、支撐輪連桿,添加傳動裝置并配置電機控制方式、減速比的驅動輪關節(jié),用于接收控制指令并發(fā)布里程計消息的Gazebo控制器插件。
設計機器人傳感系統(tǒng)的URDF文件,使機器人能夠感知環(huán)境,發(fā)布傳感器數據協(xié)助導航系統(tǒng)進行地圖構建、實時避障、定位等。本文采用Gazebo激光雷達插件,模擬真實激光雷達并發(fā)布深度信息。設計的機器人模型如圖1所示。
圖1 運行在Gazebo中的機器人模型Fig.1 Robot model running in Gazebo
自主導航系統(tǒng)分為前后兩端,前端依據里程計、激光雷達信息,采用Rao-Blackwellized粒子濾波算法,使機器人感知周圍環(huán)境并完整構建地圖,提供給后端。后端根據地圖、激光雷達信息,采用自適應蒙特卡羅定位法[17],以輔助手段修正慣性導航里程計長時間因漂移現象積累的定位誤差,矯正機器人位姿,實現機器人精準定位,從而有效避免慣導系統(tǒng)與GPS導航系統(tǒng)缺點。同時,后端采用A*算法規(guī)劃機器人當前位姿與目標點之間路徑,采用DWA(dynamic window approaches)算法實時避障,能夠使機器人沿一條無碰撞、代價較低路線移動到目標位置。自主導航系統(tǒng)前端設計流程如圖2所示,主要使機器人通過傳感器對所處環(huán)境進行建模,繼而能提供地圖信息協(xié)助后端進行定位以及路徑規(guī)劃。
圖2 自主導航系統(tǒng)前端設計流程Fig.2 Front end design process of autonomous navigation system
自主導航系統(tǒng)后端設計流程如圖3所示,其依據傳感器信息及地圖數據對機器人精確定位,根據機器人當前位置、設定目標位置與環(huán)境模型進行全局路徑規(guī)劃,找到一條無碰撞最優(yōu)路徑。通過局部路徑規(guī)劃算法控制機器人追蹤路徑并及時躲避突發(fā)障礙物,從而順利到達終點。在機器人自動行駛至終點過程中,會自動更新障礙物信息到原始地圖,以便為下次導航提供參考。
圖3 自主導航系統(tǒng)后端設計流程Fig.3 Back end design process of autonomous navigation system
環(huán)境建模由導航系統(tǒng)前端通過ROS開源Gmapping[18]功能包實現。其通過使用Rao-Blackwellized粒子濾波算法,訂閱機器人移動時發(fā)布的坐標轉換信息與激光雷達數據,發(fā)布地圖數據與機器人位姿分布熵的估計,最終完成二維柵格地圖的建立。
運行Gmapping功能包需要依據機器人進行調參,部分參數設計如下:
odom_frame: odom
map_update_interval: 5.0
maxRange: 5.0
maxUrange: 4.5
linearUpdate: 0.5
angularUpdate: 0.436
srr: 0.01
str: 0.01
stt: 0.02
particles: 80
xmin: -1.0
ymin: -1.0
xmax: 1.0
(2)在進行避雷保護線設置時,避雷保護性的高度必須要控制在規(guī)范設計要求內,以將比例線的防雷保護作用充分進行發(fā)揮。避雷保護線確定后,需要對避雷線的搭接長度進行相應確定,且焊接避雷線時需要按照技術要求進行焊接,防止出現虛焊與脫落的情況。對于各個電氣設備則需要做好接地處理操作,且需要對配電箱的接地位置進行明確標注,以避免出現各種不規(guī)范誤觸操作。
ymax: 1.0
delta:0.05
參數設計直接影響建圖效果。map_update_interval為地圖更新頻率,此值若設置過高,需要機器人緩慢移動才能準確建圖,否則容易造成建圖失敗或地圖不精確。相反,此值過低容易造成CPU資源浪費。此處設置一個中間值5.0。particles為Rao-Blackwellized粒子濾波算法中粒子數,此處設置為80,保證算法精確的同時還有較高的速度。maxRange、maxUrange根據雷達屬性裁剪激光光束的可用范圍為5.0、4.5,舍棄誤差較大數據,使用并保留傳感器部分精確數值。另外,為減少激光數據的冗余運算量,根據linearUpdate與angularUpdate設置機器人移動0.5 m或0.436 rad后進行一次激光掃描數據的處理。
導航系統(tǒng)是自主導航系統(tǒng)的核心,它能夠依據環(huán)境模型與傳感器信息,完成機器人定位、路徑規(guī)劃與追蹤、實時避障與地圖維護功能。導航系統(tǒng)主要由ROS提供的開源Amcl與Move_base功能包實現。系統(tǒng)結構框架如圖4所示,其各個節(jié)點含義如下:
1)Global_planner 全局路徑規(guī)劃;
圖4 導航系統(tǒng)結構框架Fig.4 Navigation system structure frame
2)Local_planner 局部路徑規(guī)劃、實時避障、發(fā)送機器人移動指令;
3)Recovery_behavior 配置機器人導航失敗時的執(zhí)行動作;
4)Global_costmap 全局代價地圖,提供給全局路徑規(guī)劃器使用;
5)Local_costmap 局部代價地圖,提供給局部路徑規(guī)劃器使用;
6)Amcl 矯正機器人在已知地圖上的位姿信息;
7)Map_serve 為導航系統(tǒng)加載先驗地圖;
8)Sensor transform 發(fā)布機器人各個部件之間的坐標關系;
9)Odometry sources 發(fā)布機器人的里程計信息;
10)Sensor sources 發(fā)布機器人的傳感器信息;
11)Base controller 接收機器人移動指令,實現機器人移動。
其中:1)~5)節(jié)點是導航系統(tǒng)所必須的,由Move_base功能包提供;6)和7)節(jié)點不是導航系統(tǒng)必備節(jié)點,本文為精確機器人定位與加載前端構建的地圖,使用這兩個節(jié)點;8)~11)節(jié)點主要用于發(fā)布機器人的狀態(tài)信息。
機器人運動過程中,會因為地面打滑、漂移等因素造成里程計坐標系與地圖坐標系不重合,形成定位誤差,間接造成機器人卡住、不能沿規(guī)劃的路徑行走等問題。Amcl是2D機器人運動的概率定位系統(tǒng),實現了自適應蒙特卡羅定位法,通過粒子濾波器跟蹤已知地圖上的機器人位姿,能對機器人進行定位矯正。本文使用Amcl功能包矯正機器人的定位誤差。
運行Amcl功能包需要進行調參與配置,本部分設計參數如下:
odom_model_type: diff
odom_alpha5: 0.1
gui_publish_rate: 10.0
laser_max_beams: 60
laser_max_range: 12.0
min_particles: 500
max_particles: 2 000
laser_likelihood_max_dist: 2.0
update_min_d: 0.25
update_min_a: 0.2
odom_frame_id: odom
resample_interval: 1
transform_tolerance: 1.0
kld_err: 0.05
參數更改直接影響導航效果。其中,odom_model_type為里程計模型類型,設置為兩輪差速;laser_max_range定義雷達掃描范圍為12.0與雷達自身掃描允許的最小范圍,其不需要裁剪激光光束,大量的激光數據將得到更多的周邊環(huán)境信息,有利于定位;min_particles、 max_particles分別設置算法中使用的最小、最大粒子數量為500、2 000,粒子量的增加能提高定位精度。同時,為減小計算量與噪聲影響,通過laser_max_beams設置更新濾波器時僅使用雷達掃描的60個等間距光束。不能過少設計光束個數,否則會因信息量太少造成定位不準確。
Move_base功能包是導航系統(tǒng)的核心,不僅提供全局路徑規(guī)劃器與局部路徑規(guī)劃器,還同時維護兩個代價地圖。其中全局路徑規(guī)劃使用A*算法,用于已知環(huán)境下的路徑規(guī)劃;局部路徑規(guī)劃使用DWA算法,用于實時避障,規(guī)劃機器人每個周期內的角速度、線速度,發(fā)送指令控制機器人底盤移動。
與Amcl、Gmapping功能包一樣,Move_base功能包同樣需要調參、配置后才能使用,以下是配置move_base功能包的四個參數文件。
4.2.1 通用文件配置
此文件配置global_planner全局路徑規(guī)劃器與local_planner局部路徑規(guī)劃器的基本參數如下:
obstacle_range: 2.5
raytrace_range: 3.0
footprint_inflation: 0.01
robot_radius: 0.175
inflation_radius: 0.15
max_obstacle_height: 0.6
min_obstacle_height: 0.0
observation_sources: scan
scan:{data_type:LaserScan,topic:/scan,marking:true,clearing:true,expected_update_rate:0}
其中:obstacle_range設置機器人將2.5 m范圍內障礙物更新到地圖中,以便為下次導航提供最新環(huán)境模型;而對于不存在的障礙物信息,raytrace_range設置若其在機器人周邊3 m范圍內,在地圖中給予清除,防止為下次導航帶來干擾;robot_radius是機器人半徑,以防與障礙物發(fā)生碰撞;inflation_radius將障礙物半徑擴展0.15 m,使得機器人能與障礙物進一步保證安全距離。
4.2.2 全局代價地圖配置
此文件用于配置Move_base功能包所維護的全局代價地圖,參數如下:
global_costmap:
global_frame: map
robot_base_frame: base_footprint
update_frequency: 1.0
publish_frequency: 1.0
static_map: true
rolling_window: false
resolution: 0.01
transform_tolerance: 1.0
map_type: costmap
其中:update_frequency為代價地圖的更新頻率,其值越高地圖精確度越低,值越低則CPU負擔越重,此處要充分保證地圖準確度,設置為1.0 Hz;static_map設置map_server為true,才能加載前端構建的環(huán)境模型。
4.2.3 局部代價地圖配置
此文件用于配置Move_base功能包所維護的局部代價地圖,參數如下:
local_costmap:
global_frame: odom
robot_base_frame: base_footprint
update_frequency: 3.0
publish_frequency: 1.0
static_map: false
rolling_window: true
width: 6.0
height: 6.0
resolution: 0.01
transform_tolerance: 1.0
局部代價地圖參數與全局代價地圖參數含義相同,但考慮到兩者的適用范圍,以及室內復雜性,修改static_map為false,使用動態(tài)地圖,以便于機器人能夠實時探測環(huán)境進行避障;修改rolling_window為true,以保證機器人移動時能夠處在局部代價地圖中心。
4.2.4 本地規(guī)劃器配置
此文件用于配置local_planner局部路徑規(guī)劃器,參數如下:
controller_frequency: 3.0
TrajectoryPlannerROS:
max_vel_x: 0.5
min_vel_x: 0.1
max_vel_y: 0.0
min_vel_y: 0.0
planner_frequency:1.0
latch_xy_goal_tolerance: false
meter_scoring: true
oscillation_reset_dist: 0.05
stop_time_buffer:0.2
sim_granularity: 0.025
angular_sim_granularity: 0.025
dwa: true
其中:controller_frequency設置系統(tǒng)發(fā)布移動指令頻率為3.0 Hz,使得機器人能及時接收信息并做出移動;dwa設置系統(tǒng)使用DWA算法用于局部路徑規(guī)劃;planner_frequency對全局路徑規(guī)劃的執(zhí)行頻率設置為1.0 Hz,使得機器人突遇障礙物時,仍然能沿一條最優(yōu)路徑移動;另外,為防止機器人因剎車不及時觸碰到障礙物,根據stop_time_buffer設置機器人提前停止的時間長度為0.2 s。
為了驗證所設計自主導航系統(tǒng)的可行性,在Gazebo仿真軟件下,加載設計的URDF移動機器人模型,使其搭載自主導航系統(tǒng)并在所設計的室內環(huán)境下,測試機器人的導航效果。
本次仿真軟件環(huán)境為:操作系統(tǒng)Ubuntu16.04,ROS Kentic,物理仿真軟件Gazebo,數據可視化軟件Rviz。硬件環(huán)境為:內存8 G,顯卡GTX 850,CPU 核心頻率2.9 GHz,型號酷睿i5-4210H。
5.2.1 地圖構建
Gazebo仿真軟件設置的室內信息與加載的機器人模型如圖5所示。啟動自主導航系統(tǒng)前端,控制機器人移動使其感知環(huán)境信息并建圖。地圖構建過程如圖6所示,其左側為運行在Gazebo仿真環(huán)境中的機器人,右側是Rviz對機器人構建的地圖數據進行可視化。機器人最終能夠獲取與室內環(huán)境相符的地圖。
圖5 Gazebo仿真環(huán)境Fig.5 Gazebo simulation environment
圖6 二維柵格地圖的構建與定位Fig.6 Construction and positioning of two-dimensional grid map
5.2.2 路徑規(guī)劃
啟動自主導航后端,加載前端構建的地圖,以機器人所在點為A,設置目標點為B,測試路徑規(guī)劃與定位功能。實驗過程如圖7所示,其左側為運行在Gazebo仿真環(huán)境中的機器人,右側是Rviz可視化的地圖數據、導航系統(tǒng)確定的機器人位姿數據和規(guī)劃的路徑數據。機器人能夠在地圖中準確定位,規(guī)劃一條從A點到B點的最優(yōu)路線并使其自動追蹤。
圖7 路徑規(guī)劃Fig.7 Route plan
5.2.3 實時避障
重新啟動自主導航后端,加載前端構建的地圖,以機器人所在點為A,設置目標點為B,在導航系統(tǒng)控制機器人移動時,在前方添加障礙物,測試其避障功能。移除障礙物,設置目標點C,測試機器人能否及時更新地圖并順利到達C點。實驗過程如圖8所示,其左側為運行在Gazebo仿真環(huán)境中的機器人,右側是Rviz可視化的地圖數據、導航系統(tǒng)確定的機器人位姿數據和規(guī)劃的路徑數據。機器人能夠及時避障且更新地圖。
圖8 實時避障Fig.8 Real-time obstacle avoidance
對于前端環(huán)境建模,根據圖6二維柵格地圖構建過程,可以看出機器人每移動至新位置,均能通過傳感器感知環(huán)境及時更新地圖,最后獲得的地圖信息也基本與機器人所處環(huán)境相同。說明在此設計中,Gmapping功能包使用合理且其參數設計可行。對于后端,根據圖7可以看出,機器人能夠比較準確定位自身到環(huán)境模型中,甚至移動至目標點后,其位置依舊比較準確。同時,圖7中機器人根據地圖規(guī)劃出來的綠色行進路線,也不存在冗余路段,路徑最短且比較平滑。在圖8中,在規(guī)劃的綠色路徑上臨時放置障礙物,機器人能夠將傳感器探測到的部分障礙物信息及時更新至地圖,并通過局部路徑規(guī)劃算法進行避障,移除臨時障礙物,機器人也能夠將其信息在地圖中及時清除,其中,紅色路線是機器人實際行走信息。最后,對導航過程進行綜合分析,發(fā)現突遇障礙物時機器人避障時間略長,因此后期將對局部路徑規(guī)劃DWA算法進行改進,繼而提高自動導航系統(tǒng)效率。
本文以機器人操作系統(tǒng)ROS為開發(fā)平臺,應用其提供的開源功能包,經過配置、調參、組合,設計出能夠用于室內機器人的自主導航系統(tǒng),設計URDF機器人模型、設置仿真環(huán)境,使機器人模型搭載自主導航系統(tǒng)并在仿真環(huán)境中進行測試。結果表明,機器人能夠準確地學習地圖信息,并且在地圖中進行路徑規(guī)劃,做到路徑跟隨與實時避障,為后期基于ROS操作系統(tǒng)設計真實機器人,提供了理論參考和實際應用價值。