1. 程式人生 > >Gazebo Tutorials for Kinetic-ROS Kinetic下官方Gazebo教程部分修正

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介面,下圖來自官方教程。你有可能看到的是一個全灰,有網格,沒天空的介面。
GazeboGUI介面

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