使用gazebo在ROS中仿真

@TOC参考链接

一、准备
本文是基于《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语法

使用gazebo在ROS中仿真_第1张图片

$ urdf_to_graphiz robot1.urdf 

在这里插入图片描述

$ evince origins.pdf 

使用gazebo在ROS中仿真_第2张图片
在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,但是场景中并没有任何东西
使用gazebo在ROS中仿真_第3张图片
点击左下角Add按钮,在 by display type中添加RobotModel,点击OK;然后左上Fixed Frame中map改为base_link:
使用gazebo在ROS中仿真_第4张图片
可以看到rviz中已经成功显示机器人模型
使用gazebo在ROS中仿真_第5张图片
这里可能会报一个关于“joint_state_publisher”的错误,是因为没有joint_state_publisher包,重新打开一个终端下载:

$ sudo apt-get install ros-melodic-joint-state-publisher-gui

然后把launch文件中的“joint_state_publisher”全部改为“joint_state_publisher_gui”,如图:
使用gazebo在ROS中仿真_第6张图片
重新运行display.launch文件,可以看到rviz打开了一个“joint_state_publisher_gui"小插件:
使用gazebo在ROS中仿真_第7张图片
滑动“joint_state_publisher_gui”插件上的滑动条可以控制机器人对应关节的旋转:
使用gazebo在ROS中仿真_第8张图片

三、添加传感器

$ roslaunch robot1_gazebo gazebo.launch model:="../ros_ws/src/learning_gazebo/chapter7_tutorials/robot1_description/urdf/robot1_base_04.xacro"

使用gazebo在ROS中仿真_第9张图片

$ rostopic list
$ rostopic echo /robot/laser/scan

使用gazebo在ROS中仿真_第10张图片

$ 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

使用gazebo在ROS中仿真_第11张图片
u-加速 j-左转 k-减速/停止 l-右转 i-前进 ,-后退
打开rviz

$ rviz

在rviz中订阅传感器topic即可看到模拟传感器发送的数据
使用gazebo在ROS中仿真_第12张图片

你可能感兴趣的:(ROS)