Gazebo Tutorials for Kinetic-ROS Kinetic下官方Gazebo教程部分修正

背景

对官网教程做一些修正。
系统:Linux 16.04 LTS
ROS:Kinetic

在ROS Kinetic下启动和安装Gazebo

描述: 在ROS Kinetic下启动并运行Gazebo。
级别: 新手

安装

通过如下指令安装。
输入

$ sudo apt-get install ros-kinetic-simulators

输出
安装完毕的Gazebo for Kinetic。

配置

设置环境变量。
输入

$ source /opt/ros/kinetic/setup.bash

输出
配置好的环境变量。你也可以通过echo指令检查是否配置成功,经常使用可以写入~/.bashrc。

启动

启动Gazebo
输入

$ roslaunch gazebo_ros empty_world.launch

输出
打开如下GUI界面,下图来自官方教程。你有可能看到的是一个全灰,有网格,没天空的界面。
Gazebo Tutorials for Kinetic-ROS Kinetic下官方Gazebo教程部分修正

0.0.1 Launch Script Explained

查看文件:gazebo_worlds/launch/empty_world.launch.
你可以通过如下方式查找到该文件位置,该方式在我归纳的前几份教程里有提及。
输入

$ rospack find gazebo_ros

输出

/opt/ros/kinetic/share/gazebo_ros

输入1

$ cd  /opt/ros/kinetic/share/gazebo_ros/launch
$ gedit empty_world.launch

或通过如下方式进行,输入2的方法不用知道gazebo_ros的绝对路径
输入2

$ roscd gazebo_ros

输出
通过gedit编辑器打开empty_world.launch如下

<launch>

  <!-- these are the arguments you can pass this launch file, for example paused:=true -->
  <arg name="paused" default="false"/>
  <arg name="use_sim_time" default="true"/>
  <arg name="extra_gazebo_args" default=""/>
  <arg name="gui" default="true"/>
  <arg name="recording" default="false"/>
  <!-- Note that 'headless' is currently non-functional.  See gazebo_ros_pkgs issue #491 (-r arg does not disable
       rendering, but instead enables recording). The arg definition has been left here to prevent breaking downstream
       launch files, but it does nothing. -->
  <arg name="headless" default="false"/>
  <arg name="debug" default="false"/>
  <arg name="physics" default="ode"/>
  <arg name="verbose" default="false"/>
  <arg name="world_name" default="worlds/empty.world"/> <!-- Note: the world_name is with respect to GAZEBO_RESOURCE_PATH environmental variable -->
  <arg name="respawn_gazebo" default="false"/>
  <arg name="use_clock_frequency" default="false"/>
  <arg name="pub_clock_frequency" default="100"/>

  <!-- set use_sim_time flag -->
  <param name="/use_sim_time" value="$(arg use_sim_time)"/>

  <!-- set command arguments -->
  <arg unless="$(arg paused)" name="command_arg1" value=""/>
  <arg     if="$(arg paused)" name="command_arg1" value="-u"/>
  <arg unless="$(arg recording)" name="command_arg2" value=""/>
  <arg     if="$(arg recording)" name="command_arg2" value="-r"/>
  <arg unless="$(arg verbose)" name="command_arg3" value=""/>
  <arg     if="$(arg verbose)" name="command_arg3" value="--verbose"/>
  <arg unless="$(arg debug)" name="script_type" value="gzserver"/>
  <arg     if="$(arg debug)" name="script_type" value="debug"/>

  <!-- start gazebo server-->
  <group if="$(arg use_clock_frequency)">
    <param name="gazebo/pub_clock_frequency" value="$(arg pub_clock_frequency)" />
  </group>
  <node name="gazebo" pkg="gazebo_ros" type="$(arg script_type)" respawn="$(arg respawn_gazebo)" output="screen"
	args="$(arg command_arg1) $(arg command_arg2) $(arg command_arg3) -e $(arg physics) $(arg extra_gazebo_args) $(arg world_name)" />

  <!-- start gazebo client -->
  <group if="$(arg gui)">
    <node name="gazebo_gui" pkg="gazebo_ros" type="gzclient" respawn="false" output="screen" args="$(arg command_arg3)"/>
  </group>

</launch>

脚本是用默认文件(empty.world)启动Gazebo。该文件中你可以指定模型世界的部分参数,如物理引擎参数、地平面纹理、照明等。对于大部分用户来说,empty_world.launch加载的世界环境已足够使用。其中/use_sim_time指代系统内时间,可以自定义为由Gazebo发布的模拟时间,而不是使用系统时间。

参考

[1]ROSWiki_StartingGazebo