

















摘 "要: 結合Linux下ROS系統(tǒng)高性能的仿真工具和跨平臺兼容性,以及Matlab強大的計算能力、豐富的工具箱和函數庫,通過建立ROS?Matlab的仿真控制系統(tǒng),對移動機器人的關鍵技術進行研究。文中介紹了ROS?Matlab系統(tǒng)的框架和功能,首先,使用Gazebo構建2D仿真室內環(huán)境,通過Solidworks創(chuàng)建移動機器人模型,并將該模型以URDF文件形式導入ROS環(huán)境中;其次,利用SLAM_gmapping算法對仿真室內環(huán)境進行掃描建圖,由Simulink發(fā)布目標點坐標和目標點導航話題,控制移動機器人完成導航任務;最后,由Simulink發(fā)布軌跡跟蹤話題,控制移動機器人進行軌跡跟蹤。通過仿真驗證,由所建地圖、目標點導航和軌跡跟蹤曲線說明仿真系統(tǒng)的可行性,為機器人研究提供參考。
關鍵詞: ROS; Matlab; 移動機器人; Gazebo; SLAM; 目標點導航; 軌跡跟蹤; 運動學模型
中圖分類號: TN820.4?34; TP242 " " " " " " " " " 文獻標識碼: A " " " " " " " " " "文章編號: 1004?373X(2024)18?0114?07
Research on mobile robot simulation based on ROS?Matlab
ZHANG Tao, QI Xiangdong, ZHANG Hailong, PU Yongbo
(Key Laboratory of Instrument Science and Dynamic Testing, Ministry of Education, North University of China, Taiyuan 030051, China)
Abstract: In combination of the high?performance simulation tool and cross?platform compatibility of ROS (robot system)system under Linux, and the powerful computing power, rich toolbox and function library of Matlab, the key technology of mobile robot is studied by establishing the simulation control system of ROS?Matlab. The framework and function of ROS?Matlab system are introduced. Gazebo is used to build a 2D simulation indoor environment, and Solidworks is used to create a mobile robot model, which is imported into ROS environment in the form of URDF file. SLAM_gmapping algorithm is used to scan and map the simulated indoor environment, and the Simulink is used to publish coordinates and navigation topics of target points to control the mobile robot to complete navigation tasks. Simulink is used to publish the trajectory tracking topic and control the mobile robot for trajectory tracking. After the simulation verification, the feasibility of the simulation system is proved by the built map, target point navigation and trajectory tracking curve, which provides a reference for robot research.
Keywords: ROS; Matlab; mobile robot; Gazebo; SLAM; target point navigation; trajectory tracking; kinematic model
0 "引 "言
隨著科學技術的迅猛發(fā)展,機器人技術已成為當今世界科技發(fā)展的熱點之一,機器人系統(tǒng)的應用逐漸滲透到各個方面。然而,機器人的開發(fā)和測試仍然面臨一系列挑戰(zhàn),其中之一是在實際環(huán)境中進行高風險或昂貴的試驗,這對試驗的成功性和操作人員的安全性都有極高的考驗。ROS仿真技術的出現為解決這一問題提供了一種新途徑。ROS仿真為研究人員提供了一個高效、安全、成本效益高的平臺,用于驗證算法、測試控制策略以及評估機器人系統(tǒng)的性能。ROS仿真作為一種虛擬測試和驗證手段,所采用的Gazebo和Rviz仿真工具為研究人員提供了模擬機器人系統(tǒng)在真實環(huán)境中運行的能力[1]。
Matlab和Simulink作為強大的數據處理工具,擁有較強的科學計算能力以及豐富的可視化能力,是編寫仿真平臺的理想選擇。王新等利用Matlab與ROS進行了機械臂的虛實結合設計[2];刁慧等利用ROS進行了機械臂的運動規(guī)劃[3]。并且在近些年,Matlab隨著版本的不斷更新,提供了越來越多的豐富而強大的擴展功能,其中UAV Toolbox工具箱可以用于自行設計自動飛行算法、無人機任務和飛行控制器,便于無人機聯合仿真。本文仿真系統(tǒng)使用ROS Toolbox(Robotics System Toolbox)工具箱[4],用于進行ROS端的聯合仿真。
基于上述提到的Matlab和ROS工具,進行本文的仿真試驗,搭建仿真系統(tǒng),研究在該系統(tǒng)下Matlab發(fā)送控制信號,控制ROS端移動機器人進行建圖、目標點導航和軌跡跟蹤任務。
1 "實驗總體設計
本文實驗實現的功能總共包括兩個部分:一是通過SLAM_gmapping模塊進行仿真環(huán)境掃描建圖,用于目標點導航;二是通過Simulink控制移動機器人進行軌跡跟蹤。具體來說,建立麥克納姆輪移動機器人的運動學模型,并進行正逆運動學方程求解;搭建移動機器人模型放入Gazebo室內仿真環(huán)境,取該仿真環(huán)境的俯視截圖,用于Matlab顯示運行軌跡。通過Simulink搭建SLAM建圖導航模塊和軌跡跟蹤模塊。SLAM建圖導航模塊用于進行2D地圖繪制,實現目標點導航;軌跡跟蹤模塊根據提供的期望軌跡進行軌跡跟蹤。本文通過對比期望軌跡和實際軌跡的曲線圖,驗證ROS?Matlab仿真系統(tǒng)的可行性。
圖1為ROS?Matlab仿真控制系統(tǒng)的結構圖。其中SLAM導航模塊包括麥克納姆輪移動機器人三維模型顯示、二維地圖顯示和實時仿真顯示;軌跡跟蹤模塊包括坐標轉換、目標點導航和期望軌跡跟蹤。其中軌跡跟蹤模塊的目標點導航功能是基于SLAM導航模塊中得到的二維地圖來實現的。
2 "移動機器人運動學分析
2.1 "運動學模型
相較于其他傳統(tǒng)的固定式輪胎,麥克納姆輪[5]具有全向移動性、精確控制、平穩(wěn)運動和簡化結構等優(yōu)勢,擁有極高的靈活性和機動性,可以實現復雜的運動軌跡和精確定位,使其在一些特定應用場景下,如機器人導航、物流運輸和醫(yī)療設備等領域表現出色,因此得到了廣泛的使用。實際應用中,麥克納姆輪是成對使用的,2個左旋輪、2個右旋輪,總共4個,其中左旋輪和右旋輪呈手性對稱,這樣既可以增加機構的穩(wěn)定性,又方便控制,同時還提升了載重能力。圖2給出了麥克納姆輪機器人的運動學模型。
表1給出麥克納姆輪機器人運動學分析圖的參數解釋,其中[VX輪]表示4個輪子A、B、C、D的線速度。
2.2 "運動學分析
運動學分析即求解[Vx]、[Vy]、[Vz]與[VA輪]、[VB輪]、[VC輪]和[VD輪]的關系[6]。4個車輪涉及到的運動學分析類似,本文僅以C輪為例,表2給出了C輪的相關參數。
首先求解麥輪C質心[VC_x]、[VC_y]和[Vx]、[Vy]、[Vz]之間的關系,移動機器人車身與4個麥輪質心可以認為是一個剛體,則速度分解可表示為:
[VC_x=Vx+Vz·H22+W22·sinαC] (1)
[VC_y=Vy+Vz·H22+W22·cosαC] (2)
C輪的質心速度由[VC輪]和[VC輥]合并組成,[VC輥]由C輪與地面的相對滑動產生,大小、方向由麥輪A、B、C、D的差速和機械結構決定。通過速度分解可得:
[VC_x=VC輪+VC輥·sinβ] (3)
[VC_y=-VC輥·cosβ] (4)
聯立公式(1)~公式(4)求得:
[VC輪+VC輥·sinβ=Vx+Vz·H22+W22·sinαC] (5)
[VC輥=Vy+Vz·H22+W22·cosαCcosβ] (6)
設[L=H22+W22],[β=45°],聯立公式(5)和公式(6)求解出:
[VC輪=Vx+Vy+Vz·L·(sinαC+cosαC)] (7)
再由[L·sinαC=H2],[L·cosαC=W2],得出:
[VC輪=Vx+Vy+Vz·H2+W2] (8)
同理求得[VA輪]、[VB輪]和[VD輪]運動學方程如下:
[VA輪=Vx+Vy-Vz·H2+W2] (9)
[VB輪=Vx-Vy-Vz·H2+W2] (10)
[VD輪=Vx-Vy+Vz·H2+W2] (11)
聯立式(8)~式(11)可得到機器人的運動學正解公式,由4個輪子的實時速度求出三軸實時速度:
[Vx=VA輪+VB輪+VC輪+VD輪4] (12)
[Vy=VA輪-VB輪+VC輪-VD輪4] (13)
[Vz=-VA輪-VB輪+VC輪+VD輪2H+2W] (14)
3 "ROS?Matlab系統(tǒng)設計
3.1 "ROS?Matlab介紹
ROS Toolbox工具箱提供了ROS的大部分功能,可以通過Matlab啟動ROS Master、創(chuàng)建ROS節(jié)點、發(fā)布ROS消息服務、查看ROS話題數據、控制ROS機器人進行相關運動等,實現ROS與Matlab聯合仿真;可以結合Matlab強大的計算功能,實現機器人算法設計;通過Simulink實現控制設計;同時借助ROS系統(tǒng)自帶的Gazebo、Rviz等工具,可以完成相關算法和控制的設計驗證。
圖3為Matlab和機器人系統(tǒng)的通信框架。由圖3可知:Matlab提供了視覺處理、控制系統(tǒng)、信號處理等豐富的功能;Matlab會發(fā)送機器人命令到ROS驅動節(jié)點,同時ROS端也會將傳感器數據反饋給Matlab;ROS與Matlab之間通過話題的形式進行通信。
3.2 "控制系統(tǒng)設計
圖4為設計的Simulink仿真系統(tǒng),用于發(fā)布目標點導航話題和軌跡跟蹤話題,控制ROS仿真移動機器人進行相關運動。該控制系統(tǒng)主要應用了函數模塊以及ROS Toolbox工具箱中的話題訂閱模塊、話題發(fā)布模塊、空白消息模塊。
1) 話題訂閱模塊。該模塊用于對移動機器人的初始位置信息進行訂閱,將訂閱到的移動機器人初始位置信息傳遞給導航函數,進行目標點的導航;同時作為軌跡跟蹤任務的起始值。訂閱到的話題是/gazebo/base_link。
2) 話題發(fā)布模塊。該模塊用于發(fā)布移動機器人的目標點信息,將目標點信息以話題的方式發(fā)布到ROS端,以完成導航和軌跡跟蹤任務。發(fā)布的話題是
/Expect_trajectory。
3) 空白消息模塊。該模塊可以創(chuàng)建一個空白消息,用于指定待定的話題類型,避免在實際話題訂閱和發(fā)布之前造成通信出錯。
Nav_setpoint函數設定目標點并進行導航任務;Track_output函數用于進行軌跡跟蹤;Expect_trajectory函數給定期望軌跡。
4 "SLAM?2D自主建圖
4.1 "地圖選擇
在SLAM自主導航中,通常使用的是二維地圖(2D)和三維地圖(3D)。三維地圖雖然能夠提供更加詳細和全面的環(huán)境信息,但對于室內移動機器人導航而言,通常只需要考慮水平方向上的平面信息。使用2D地圖可以忽略垂直方向上的高度信息,從而減少地圖的復雜性和導航算法的計算量。此外,2D地圖的數據量更小,傳輸和存儲更加高效,使得導航系統(tǒng)更加實用和可行。因此,在移動機器人導航中,使用2D地圖能夠在保證導航準確性的前提下,提高系統(tǒng)的效率和性能[7]。
4.2 "建圖算法選擇
機器人常用的建圖算法主要有gmapping算法[8]、cartographer算法、hector算法和karto算法四種。cartographer算法能夠實現高精度的地圖構建,適用于需要高精度定位和導航的場景,但其對于算法的計算復雜度要求較高,對計算資源和內存要求較大。hector算法具有較快的地圖構建速度,適用于實時導航和定位,但相對于其他三種算法,地圖的精度相對較低。karto算法在不同環(huán)境下具有較好的穩(wěn)定性和可靠性,能夠有效應對環(huán)境變化,但在大尺度環(huán)境下可能會出現定位漂移或地圖不一致的情況。
相比之下,gmapping算法適用于各種傳感器數據,包括激光雷達和視覺傳感器,同時兼具實時性,能夠在實時環(huán)境中構建地圖,并且具有較高的精度。因此本文選擇以gmapping算法進行建圖任務,圖5給出了使用gmapping算法所需要的節(jié)點信息。
4.3 "SLAM建圖
目前應用于求解SLAM問題的主流傳感器為激光雷達和視覺相機。視覺相機具有視野較廣、可以識別具體物體的優(yōu)點,但是建圖精度和穩(wěn)定性較差,出現偏差的概率較高;而二維激光雷達具有誤差小和可靠性高的優(yōu)點。本文結合實驗需求,選擇二維激光雷達完成掃描建圖[9]。
圖6為仿真的麥克納姆輪機器人,ROS系統(tǒng)使用URDF語言,基于XML文本文件來描述移動機器人模型。URDF語言的基本編程指令如表3所示。
為了更好地進行后續(xù)實驗,為仿真機器人的雷達設置了和真實機器人相同的傳感器參數,參考對象為思嵐雷達,表4所示為仿真雷達相關參數。
實驗步驟如下。
1) 在啟動Gazebo仿真環(huán)境的前提下,打開Rviz進行地圖掃描。Rviz環(huán)境配置如圖7所示。
2) 啟動鍵盤控制節(jié)點來控制移動機器人運動,并借助SLAM_gmapping模塊,通過仿真雷達進行地圖掃描繪制。圖8所示為Gazebo室內仿真環(huán)境,圖9是通過雷達在圖8的基礎上掃描出的二維地圖。
由圖9可知,通過鍵盤的控制使移動機器人在一定范圍內運動時,可以建立一個相對完整的2D地圖,建圖過程中出現的連續(xù)灰色點(圖的左側)為雷達實時所探測到的障礙物,黑色為雷達所確定的障礙物邊界[10]。
5 "目標點導航及軌跡跟蹤驗證
5.1 "坐標系轉換
將得到的Gazebo室內仿真環(huán)境以俯視圖視角截圖并保存至Matlab中,用于軌跡顯示。通過Simulink發(fā)布目標點導航話題來控制移動機器人運動。
軌跡輸出在Matlab上時,需要計算出2幅地圖的比例變換系數,Matlab和Gazebo地圖的坐標關系如圖10所示。Gazebo中x軸長度應該對應Maltab中y軸的長度,Gazebo中y軸長度應該對應Maltab中x軸的長度[11]。由式(15)和式(16)計算出對應比例關系。
[KM_x=PM_xLG_x] (15)
[KM_y=PM_yLG_y] (16)
式中:[KM_x]表示Matlab標準下x軸上的比例系數;[PM_x]表示寬度的像素值,大小為666;[LG_x]表示Gazebo地圖的寬度值,大小為21.34;[KM_y]表示Matlab標準下y軸上的比例系數;[PM_y]表示高度的像素值,大小為656;[LG_y]表示Gazebo地圖的高度值,大小為20.74。計算可知[KM_x]為31.20,[KM_y]為31.62。
5.2 "目標點導航驗證
Subscribe模塊通過訂閱話題/gazebo/base_link得到移動機器人的初始位置信息;Pose模塊輸出ROS總線中的坐標信息Pose.x和Pose.y,作為Nav_setpoint函數的輸入,通過該函數設定目標點的坐標;以x_GOAL和y_GOAL作為輸出傳遞給Publish模塊,以話題
/Expect_trajectory形式發(fā)布到ROS端,控制移動機器人進行目標點導航任務,并將到達目標點的軌跡圖輸出在Matlab中[12]。
圖9作為導航地圖完成目標點的跟蹤任務,圖11給出了移動機器人的目標點位置以及順利到達目標點時Matlab中的運行軌跡,由起始點(0)開始沿0—1—2順序運動。
5.3 "軌跡跟蹤驗證
由Expect_trajectory函數輸出目標點的坐標信息x、y和設定的期望軌跡x_traj、y_traj,作為Track_output函數的輸入。其次,在進行軌跡跟蹤任務時,移動機器人的初始位置由Subscribe模塊[13]提供。圖12給出了軌跡跟蹤仿真圖,由于通信的原因,軌跡的繪制有延遲,但基本滿足需求。
由圖12可知,移動機器人從初始位置出發(fā)后能夠以較小的誤差沿期望軌跡行駛,說明本文系統(tǒng)能夠成功實現Simulink發(fā)布軌跡跟蹤命令,控制ROS仿真移動機器人進行期望軌跡跟蹤。
在進行軌跡跟蹤任務時,需要保證Simulink中的時間和ROS中的時間是一致的。本文通過ROS Current Time模塊實現時間維度的一致,兩者的時間維度都統(tǒng)一到了ROS的時間維度[14]。
6 "結 "語
基于ROS?Matlab搭建仿真控制系統(tǒng),對未知環(huán)境的探索建圖進行目標點導航,并對設定的期望路徑進行跟蹤;其次,整合了ROS作為機器人操作系統(tǒng)和Matlab作為控制設計的優(yōu)勢。實驗結果驗證了控制器的有效性,但也提示可能需要進一步調整參數以提高跟蹤精度。本文實驗為后續(xù)研究和開發(fā)提供了重要參考,為機器人控制和仿真提供了一個解決方案。
注:本文通訊作者為齊向東。
參考文獻
[1] JONATHAN P, KENNETH R. Comparative analysis of ROS?Unity3D and ROS?gazebo for mobile ground robot simulation [J]. Journal of intelligent robotic systems, 2022, 106(4): 80.
[2] 王新,王新慶,文巖,等.基于Matlab與ROS的機械臂虛實結合實驗平臺[J].實驗技術與管理,2022,39(2):188?192.
[3] 刁慧,陳桂,馬俊哲,等.基于ROS的機械臂建模與運動規(guī)劃[J].南京工程學院學報(自然科學版),2023,21(1):52?58.
[4] DING Y Y, GONG S J, JIANG C, et al. Hardware?in?the?loop hybrid simulation framework for human?machine co?driving based on ROS amp; Simulink [C]// 2023 42nd Chinese Control Conference. Tianjin: IEEE, 2023: 6.
[5] 蔣華揚,吳濤,李明爍,等.基于LADRC的四輪全向Mecanum輪機器人運動控制研究[J].現代電子技術,2024,47(6):165?170.
[6] 黃曉宇,孫勇智,李津蓉,等.基于MPC的麥克納姆輪移動平臺軌跡跟蹤控制[J].機械傳動,2023,47(11):22?29.
[7] 李少偉,鐘勇,楊華山,等.SLAM算法建圖對比研究[J].內燃機與配件,2024(3):36?38.
[8] 鄭川川,柯福陽,湯琴琴.融合改進D*與Gmapping算法的自主導航仿真研究[J].計算機仿真,2023,40(10):452?457.
[9] 馮金華,袁博,朱福民.移動機器人多傳感器定位融合的SLAM建圖[J].工業(yè)控制計算機,2024,37(3):78?80.
[10] 徐淑萍,楊定哲,熊小墩.多傳感器融合的室內機器人SLAM[J].西安工業(yè)大學學報,2024,44(1):93?103.
[11] 周成瑞,楊玲玲.基于A*算法的全向移動機器人仿真研究[J].電腦與信息技術,2023,31(3):29?31.
[12] 吳暉,吳應為,廖佳豪,等.基于ROS?Web交互的無人船定點巡航系統(tǒng)設計[J].艦船電子工程,2023,43(11):64?69.
[13] 王維坤,劉加朋,王保防,等.基于數據驅動的無人船軌跡跟蹤自適應控制[J/OL].中國艦船研究:1?10[2024?03?29].https://doi.org/10.19693/j.issn.1673?3185.03503.
[14] 李峻林,熊興中,楊開來,等.基于ROS與融合算法的室內無人機路徑規(guī)劃研究[J].國外電子測量技術,2024,43(1):173?181.