通过Gazebo仿真学TurtleBot3(三)——创建仿真工程

1. 仿真工程链接地址

https://github.com/robinhyg/tb3_gazebo_learning.git

2. 创建仿真工程

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ git clone https://github.com/robinhyg/tb3_gazebo_learning.git
$ cd ~/catkin_ws
$ rosdep install --from-paths src -i -y
$ catkin_make

  安装完毕后,检查一下catkin_ws工程的ROS环境配置是否已添加至~/.bashrc文件(应该在安装TurtleBot3时已完成添加),如果没有则还需要通过以下方式添加。

$ echo "source ~/catkin_ws/devel/setup.bash " >> ~/.bashrc
$ source ~/.bashrc

3. 仿真启动

  工程添加完成后,可以测试启动tb3仿真。tb3的启动launch文件放置在tb3_sim_bringup包的launch文件夹下,可以通过多种方式查看。

方式 1:

$ roscd tb3_sim_bringup
$ cd launch
$ gedit tb3_empty_world.launch

方式 2:

$ rosed tb3_sim_bringup tb3_empty_world.launch

  此方式需要在~/.bashrc文件中指定rosed编辑器,可选择的编辑器有vim、emacs、nano、gedit等(详见ROS官方tutorial中rosed部分)。

$ echo "export EDITOR='gedit'" >> ~/.bashrc
$ source ~/.bashrc

方式 3:

$ gedit `rospack find tb3_sim_bringup`/launch/tb3_empty_world.launch

  以上三种方式,以第二种最为简洁,实际使用过程中比较推荐。

代码分析

<launch>
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle]"/>
  <arg name="x_pos" default="0.0"/>
  <arg name="y_pos" default="0.0"/>
  <arg name="z_pos" default="0.0"/>

  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find turtlebot3_gazebo)/models/empty.world"/>
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="false"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

  <param name="robot_description" command="$(find xacro)/xacro.py $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

  <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model turtlebot3_$(arg model) -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />

  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen">
    <param name="publish_frequency" type="double" value="50.0" />
  </node>

<!-- 
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find tb3_sim_bringup)/rviz/demo.rviz"/>
 -->

</launch>

  以上代码,第2~5行通过环境变量TURTLEBOT3_MODEL的指定,设置tb3使用的机器人(burger和waffle两种),以及机器人的初始位置。
  第7~14行通过include的方式,启动gazebo_ros并指定了相关参数设置。
  第16行通过xacro的方式,调入tb3机器人的urdf模型。
  第18行通过api进行gazebo_ros调用,在gazebo中动态添加机器人模型。
  第20~22行运行一个robot_state_publisher节点,用来发布机器人urdf模型中指定的各个link之间的tf关系,这个比较重要,如果没有他则机器人在rviz中不能正常显示。这个节点的输入是gazebo仿真输出的joint_states话题,输出是tf。

运行

  该文件的运行命令如下:

$ roslaunch tb3_sim_bringup tb3_empty_world.launch

  运行后并没有弹出gazebo的client显示界面,这是由于程序中第11行设置的gui值为false(关闭gui可提升仿真运行速度),如果希望显示client界面,将这个参数改为true,在从新运行即可。client界面显示如下:
这里写图片描述
  gazebo仿真启动后,还可以另外打开两个命令终端,分别运行teleop和rviz节点,来控制和显示tb3机器人:
  终端窗口1:

$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

  终端窗口2:

$ rosrun rviz rviz -d `rospack find tb3_sim_bringup`/rviz/demo.rviz

  运行结果如下:
这里写图片描述
  这时可以尝试用键盘来控制机器人行走(需要使teleop节点运行的终端窗口获得当前输入焦点),在rviz中观看移动显示。
  还可以新开启一个命令终端窗口,输入rqt_graph来显示系统节点和话题关系图。这对于初学者理解各个节点之间的相互关系非常重要。
这里写图片描述


参考资料:
[1] ROS官方wiki:http://wiki.ros.org/
[2] TurtleBot3电子手册:http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/
[3] 《ROS by Example》 R.Patrick Goebel

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值