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