參考視頻:【奧特學園】ROS機器人入門課程《ROS理論與實踐》零基礎教程_嗶哩嗶哩_bilibili
參考文檔:http://www.autolabor.com.cn/book/ROSTutorials/
機器人的系統仿真是一種集成實現,主要包含三部分:
URDF 用於創建機器人模型:以XML 的方式描述機器人的部分結構,比如底盤、攝像頭、激光雷達、機械臂以及不同關節的自由度。可被 C++ 內置的解釋器轉換成可視化的機器人模型。
Gzebo 用於搭建仿真環境:3D動態模擬器,顯示機器人模型並創建仿真環境,能夠在復雜的室內和室外環境中准確有效地模擬機器人。與游戲引擎提供高保真度的視覺模擬類似,Gazebo提供高保真度的物理模擬,其提供一整套傳感器模型,以及對用戶和程序非常友好的交互方式。
Rviz 圖形化顯示傳感器感知到的環境信息:ROS的三維可視化工具。以三維方式顯示ROS消息,將數據進行可視化表達。例如:可以顯示機器人模型,可以無需編程就能表達激光測距儀(LRF)傳感器中的傳感 器到障礙物的距離,RealSense、Kinect或Xtion等三維距離傳感器的點雲數據(PCD, Point Cloud Data),從相機獲取的圖像值
官方文檔:
http://gazebosim.org/tutorials?tut=ros_overview
需求描述:
在 Rviz 中顯示一個盒狀機器人
實現流程:
-
准備:新建功能包,導入依賴
-
核心:編寫 urdf 文件
-
核心:在 launch 文件集成 URDF 與 Rviz
-
在 Rviz 中顯示機器人模型
1.創建功能包,導入依賴
創建一個新的功能包,名稱自定義,導入依賴包: urdf與xacro
在當前功能包下,再新建幾個目錄:
urdf: 存儲 urdf 文件的目錄
meshes:機器人模型渲染文件(暫不使用)
config: 配置文件
launch: 存儲 launch 啟動文件


2.編寫 URDF 文件
新建一個子級文件夾:urdf(可選),文件夾中添加一個.urdf文件,復制如下內容:
<robot name="mycar"> <link name="base_link"> <visual> <geometry> <box size="0.5 0.2 0.1" /> </geometry> </visual> </link> </robot>
3.在 launch 文件中集成 URDF 與 Rviz
在launch目錄下,新建一個 launch 文件,該 launch 文件需要啟動 Rviz,並導入 urdf 文件,Rviz 啟動后可以自動載入解析urdf文件,並顯示機器人模型,核心問題:如何導入 urdf 文件? 在 ROS 中,可以將 urdf 文件的路徑設置到參數服務器,使用的參數名是:robot_description,示例代碼如下:
<launch> <!-- 設置參數 --> <param name="robot_description" textfile="$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf" /> <!-- 啟動 rviz --> <node pkg="rviz" type="rviz" name="rviz" /> </launch>

4.在 Rviz 中顯示機器人模型
rviz 啟動后,會發現並沒有盒裝的機器人模型,這是因為默認情況下沒有添加機器人顯示組件,需要手動添加,添加方式如下:
設置完畢后,可以正常顯示了



5.優化 rviz 啟動
重復啟動launch文件時,Rviz 之前的組件配置信息不會自動保存,需要重復執行步驟4的操作,為了方便使用,可以使用如下方式優化:
首先,將當前配置保存進config目錄
然后,launch文件中 Rviz 的啟動配置添加參數:args,值設置為-d 配置文件路徑

<launch> <!--1.在參數服務器載入 urdf 文件--> <param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/demo01_helloworld.urdf" /> <!--2.啟動 rviz--> <node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz"/> </launch>
再啟動時,就可以包含之前的組件配置了,使用更方便快捷。
添加坐標系



