第一节 在Gazebo和rviz中显示机器人模型
英文链接(附视频教程,不过个人觉得视频教程说的不详细,要是想理解这个仿真过程到底是怎么回事,还要自己摸索)
前提:
3、用ros_control packages控制Gazebo中的机器人。
本文主要参考gazebo_ros_demo和turtlebot_simulator提供的模板修改得到的。
一、安装kinetic-turtlebot包
sudo apt install ros-kinetic-turtlebot-*
在最新的ros源中已经更新到了turtlebot3-* 的所有包,不过我们这里不需要,本文安装turtlebot包的目的是学习turtlebot的demo,为建图和存图做个示范。
二、下载例程源码
git clone -b base https://github.com/richardw05/mybot_ws.git
下载完成之后默认进入的是base分支,本文只使用base分支,后文会使用其他分支。
mybot_ws目录树结构:
fc@fc-msi:~/ROSWorkspace/src/mybot_ws$ tree
.
├── README.md
├── run_gazebo.sh
├── run_nav.sh
├── run_rviz.sh
├── run_teleop.sh
└── src
├── mybot_control
│ ├── CMakeLists.txt
│ ├── config
│ │ └── mybot_control.yaml
│ ├── launch
│ │ └── myrobot_control.launch
│ └── package.xml
├── mybot_description
│ ├── CMakeLists.txt
│ ├── launch
│ │ ├── mybot_rviz_amcl.launch
│ │ ├── mybot_rviz_gmapping.launch
│ │ └── mybot_rviz.launch
│ ├── meshes
│ │ └── hokuyo.dae
│ ├── package.xml
│ ├── rviz
│ │ ├── amcl.rviz
│ │ └── mapping.rviz
│ └── urdf
│ ├── macros.xacro
│ ├── materials.xacro
│ ├── mybot.gazebo
│ └── mybot.xacro
├── mybot_gazebo
│ ├── CMakeLists.txt
│ ├── launch
│ │ └── mybot_world.launch
│ ├── package.xml
│ └── worlds
│ ├── mybot.world
│ └── turtlebot_playground.world
└── mybot_navigation
├── CMakeLists.txt
├── config
│ ├── base_local_planner_params.yaml
│ ├── costmap_common_params.yaml
│ ├── global_costmap_params.yaml
│ └── local_costmap_params.yaml
├── launch
│ ├── amcl_demo.launch
│ ├── gmapping_demo.launch
│ └── mybot_teleop.launch
├── maps
│ ├── test_map.pgm
│ └── test_map.yaml
└── package.xml
16 directories, 37 files
三、运行模型
源码里提供了几个脚本文件可以直接运行,也可用下列roslaunch命令来运行launch文件。
启动一个terminal
cd /path/to/yourWorkSpace/
catkin_make
. devel/setup.sh
roslaunch mybot_gazebo mybot_world.launch
在另一个terminal中启动rviz
roslaunch mybot_description mybot_rviz.launch
再启动一个terminal发布运动消息
rostopic pub /cmd_vel geometry_msgs/Twist "linear:
x: 0.2
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.1"
接下来你会看到gazebo和rviz中的小车模型在转圈圈!关于模型文件mybot.xacro和mybot.gazebo的写法,记事本打开两个文件一看就明白了。