Tutorials for multi-Jackal simulations.
- Maintainer status: developed
- Maintainer: Nick Sullivan <nick.dave.sullivan AT gmail DOT com>
- Author: Nick Sullivan <nick.dave.sullivan AT gmail DOT com>
- License: BSD
- Source: git https://github.com/NicksSimulationsROS/multi_jackal.git (branch: ros-kinetic)
multi_jackal_tutorials provides examples on how to simulate multiple Clearpath Jackals in Gazebo.
This package (and all dependencies) can be installed the standard way through rosdep:
rosdep install multi_jackal_tutorials
If Gazebo is not yet installed, this may take some time. Alternatively, you can install it by:
sudo apt-get install ros-kinetic-multi-jackal-tutorials
Simulating a Jackal
roslaunch multi_jackal_tutorials one_jackal.launch rviz:=true
This launch file does three things. Firstly, it starts up Gazebo:
Gazebo will be generating the ROS clock, so it can simulate faster or slower than real time (this is set in the world description). If gui is set to true, the Gazebo client will also appear. This can also be done after launching by running gzclient in a new terminal.
Secondly, the launch file spawns a robot into Gazebo:
The namespace ns must be unique (like jackal0, jackal1, etc), so that individual robots can be identified. The configuration type config specifies the components on the jackal. This string must match a file located in multi_jackal_description/urdf/configs. The configuration ID config_id is used if required by the configuration. Movement to goal locations is provided through move_base. The model description (multi_jackal_description), navigation (multi_jackal_nav), and controllers (multi_jackal_control), are all called through the Jackal base (multi_jackal_base).
Thirdly, the launch file starts up RVIZ:
This displays the robot model, sensor output, and controllers to move the robot:
Robot topics have been prefixed with the selected namespace (jackal0):
Frames have also been prefixed by the namespace (right click -> view image to zoom in):
Simulating Multiple Jackals
roslaunch multi_jackal_tutorials two_jackal.launch rviz:=true
The only difference for multiple Jackals is that the robots need to be created with different namespaces and positions.
1 <!-- Spawn the robots. --> 2 <include file="$(find multi_jackal_base)/launch/jackal_base.launch"> 3 <arg name="ns" value="$(arg ns0)"/> 4 <arg name="config" value="$(arg config0)"/> 5 <arg name="config_id" value="$(arg config0_id)"/> 6 <arg name="use_move_base" value="true"/> 7 </include> 8 <include file="$(find multi_jackal_base)/launch/jackal_base.launch"> 9 <arg name="ns" value="$(arg ns1)"/> 10 <arg name="config" value="$(arg config1)"/> 11 <arg name="config_id" value="$(arg config1_id)"/> 12 <arg name="use_move_base" value="true"/> 13 <arg name="x" value="2"/> 14 </include>
A number of arguments can be specified when creating a Jackal. These are listed in (multi_jackal_base).