一、準備
本文是基於《Learning_ROS_for_Robotics_Programming_2nd_edition》中chapter7_tutorials功能包學習gazebo仿真,因此需要首先下載代碼包到已經建立的ROS工作空間ros_ws/src文件夾下
二、在gazebo中添加機器人模型
$ cd chapter7_tutorials/robot1_description/urdf
$ check_urdf robot1.urdf #檢查urdf語法
$ urdf_to_graphiz robot1.urdf
$ evince origins.pdf
在gazebo中使用urdf模型:
重新打開一個終端窗口,啓動ros
$ roscore
打開一個新的終端窗口,運行launch文件,model指向display.launch文件路徑,可將文件直接拖入終端,即可自動顯示文件路徑
$ roslaunch robot1_description display.launch model:="../ros_ws/src/learning_gazebo/chapter7_tutorials/robot1_description/urdf/robot1.urdf"
可以看到已經打開了rviz,但是場景中並沒有任何東西
點擊左下角Add按鈕,在 by display type中添加RobotModel,點擊OK;然後左上Fixed Frame中map改爲base_link:
可以看到rviz中已經成功顯示機器人模型
三、添加傳感器
$ roslaunch robot1_gazebo gazebo.launch model:="../ros_ws/src/learning_gazebo/chapter7_tutorials/robot1_description/urdf/robot1_base_04.xacro"
$ rostopic list
$ rostopic echo /robot/laser/scan
$ rosrun image_view image_view image:=robot/camera1/image_raw
四、添加地圖
$ roslaunch gazebo_ros willowgarage_world.launch
gazebo顯示一個空的辦公室:
代碼包中已經創建了加載機器人和地圖的文件,運行launch文件:
$ roslaunch robot1_gazebo gazebo_wg.launch
機器人已經出現在辦公室場景中:
五、控制機器人移動
$ sudo apt-get install ros-melodic-teleop-twist-keyboard
$ rosstack profile
$ rospack profile
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
u-加速 j-左轉 k-減速/停止 l-右轉 i-前進 ,-後退
打開rviz
$ rviz
在rviz中訂閱傳感器topic即可看到模擬傳感器發送的數據