ROS探索總結(五十八)—— Gazebo物理模擬平臺
模擬/模擬(Simulation),泛指基於實驗或訓練的目的,將原本的系統、事務或流程,建立一個模型以表徵其關鍵特性(Key Characteristics)或者行為/功能,予以系統化與公式化,以便對關鍵特徵做出模擬。
當所研究的系統造價昂貴、實驗的危險性大或需要很長時間才能瞭解系統引數變化所引起的後果時,模擬是一種特別有效的研究手段,目前已經廣泛應用於電氣、機械、化工、水力、熱力、社會、經濟、生態、管理等領域。
gazebo是一款功能強大的三維物理模擬平臺,具備強大的物理引擎、高質量的圖形渲染、方便的程式設計與圖形介面,最重要的是其開源免費的特性。gazebo中的機器人模型與rviz使用的模型相同,但是需要在模型中加入機器人和周圍環境的物理屬性,例如質量、摩擦係數、彈性係數等。機器人的感測器資訊也可以通過外掛的形式加入模擬環境,以視覺化的方式進行顯示。
一、gazebo的特點
gazebo是一款優秀的開源物理模擬環境,它具備如下特點:
1. 動力學模擬:支援多種高效能的物理引擎,例如ODE、Bullet、SimBody、DART等。
2. 三維視覺化環境:支援顯示逼真的三維環境,包括光線、紋理、影子。
3. 感測器模擬:支援感測器資料的模擬,同時可以模擬感測器噪聲。
4. 可擴充套件外掛:使用者可以定製化開發外掛,擴充套件gazebo的功能,滿足個性化的需求。
5. 多種機器人模型:官方提供PR2、Pioneer2 DX、TurtleBot等機器人模型,當然也可以使用自己建立的機器人模型。
6. TCP/IP傳輸:gazebo可以實現遠端模擬,後臺模擬和前臺顯示通過網路通訊。
7. 雲模擬:gazebo模擬可以在Amazon、Softlayer等雲端執行,也可以在自己搭建的雲伺服器上執行。
8. 終端工具:使用者可以使用gazebo提供的命令列工具在終端實現模擬控制。
gazebo的社群維護非常積極,2013年以來幾乎每年都會有較大的版本變化,如下圖所示,可以看到gazebo的版本迭代,以及近幾個ROS版本對應的gazebo版本。
gazebo的版本變化雖然較大,但是相容性保持的比較好,indigo中2.2版本的機器人模擬模型,在Kinetic的7.0版本中執行依然不會有問題。
二、安裝並執行gazebo
與rviz一樣,如果已經安裝了桌面完整版的ROS,那麼可以直接跳過這一步,否則,請使用以下命令進行安裝:
-
$ sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control
安裝完成後,在終端中使用如下命令啟動ROS和gazebo:
-
$ roscore
-
$ rosrun gazebo_ros gazebo
gazebo啟動成功後的介面如下圖所示:
主介面中主要包含以下幾個部分:
0 :3D檢視區
1 :工具欄
2 :模型列表
3 :模型屬性項
4 :時間顯示區
驗證gazebo是否與ROS系統成功連線,可以檢視ROS的話題列表:
-
$ rostopic list
如果連線成功,應該可以看到gazebo釋出/訂閱的如下話題列表:
-
/gazebo/link_states
-
/gazebo/model_states
-
/gazebo/parameter_descriptions
-
/gazebo/parameter_updates
-
/gazebo/set_link_state
-
/gazebo/set_model_state
當然,還有gazebo提供的服務列表:
-
$ rosservice list
-
/gazebo/apply_body_wrench
-
/gazebo/apply_joint_effort
-
/gazebo/clear_body_wrenches
-
/gazebo/clear_joint_forces
-
/gazebo/delete_model
-
/gazebo/get_joint_properties
-
/gazebo/get_link_properties
-
/gazebo/get_link_state
-
/gazebo/get_loggers
-
/gazebo/get_model_properties
-
/gazebo/get_model_state
-
/gazebo/get_physics_properties
-
/gazebo/get_world_properties
-
/gazebo/pause_physics
-
/gazebo/reset_simulation
-
/gazebo/reset_world
-
/gazebo/set_joint_properties
-
/gazebo/set_link_properties
-
/gazebo/set_link_state
-
/gazebo/set_logger_level
-
/gazebo/set_model_configuration
-
/gazebo/set_model_state
-
/gazebo/set_parameters
-
/gazebo/set_physics_properties
-
/gazebo/spawn_gazebo_model
-
/gazebo/spawn_sdf_model
-
/gazebo/spawn_urdf_model
-
/gazebo/unpause_physics
-
/rosout/get_loggers
-
/rosout/set_logger_level
三、構建模擬環境
在模擬之前,需要構建一個模擬環境。gazebo中有兩種建立模擬環境的方法:
1. 直接插入模型
在gazebo左側的模型列表中,有一個insert選項,羅列了所有可使用的模型。選擇需要使用的模型,放置在主顯示區中,就可以在模擬環境中新增機器人和外部物體等模擬例項:
模型的載入需要連線國外網站,為了保證模型順利載入,可以提前將模型檔案下載並放置到本地路徑~/.gazebo/models下,模型檔案的下載地址:
https://bitbucket.org/osrf/gazebo_models/downloads/。
2. Building Editor
第二種方法是使用gazebo提供的Building Editor工具手動繪製地圖。
在gazebo選單欄中選擇Edit --> Building Editor,可以開啟Building Editor介面。選擇左側的繪製選項,然後在上側視窗中使用滑鼠繪製,下側視窗中即可實時顯示繪製的模擬環境。
模型建立完成後就可以載入機器人模型並進行模擬了。
本文連結地址: ofollow,noindex">ROS探索總結(五十八)—— Gazebo物理模擬平臺