Skip to content
Bruce Allen edited this page Oct 31, 2019 · 25 revisions

Working with uuv_simulator

  • If installed from package for ros-kinetic, roslaunch --files uuv_descriptions upload_rexrov.launch shows:

    /opt/ros/melodic/share/uuv_assistants/launch/message_to_tf.launch
    /opt/ros/melodic/share/uuv_descriptions/launch/upload_rexrov_default.launch
    /opt/ros/melodic/share/uuv_descriptions/launch/upload_rexrov.launch
    

    Rather than installing and using this package, build it from source under workspace uuv_ws.

  • When installed from our uuv_ws workspace, roslaunch --files uuv_descriptions upload_rexrov.launch shows:

    /home/bdallen/uuv_ws/src/uuv_simulator/uuv_descriptions/launch/upload_rexrov.launch
    /home/bdallen/uuv_ws/src/uuv_simulator/uuv_descriptions/launch/upload_rexrov_default.launch
    /home/bdallen/uuv_ws/src/uuv_simulator/uuv_assistants/launch/message_to_tf.launch
    

    and roslaunch --files uuv_gazebo_worlds ocean_waves.launch shows:

    /opt/ros/melodic/share/gazebo_ros/launch/empty_world.launch
    /home/bdallen/uuv_ws/src/uuv_simulator/uuv_gazebo_worlds/launch/ocean_waves.launch
    /home/bdallen/uuv_ws/src/uuv_simulator/uuv_assistants/launch/publish_world_ned_frame.launch
    

Exploring uuv_simulator

In page uuv_simulator reference we launched the ocean waves world and spawned a UUV at coordinate(0,0,-20). Here we examine the .launch files, .world files, and other code that makes this happen. Later we explore additions to this to provide a target capability: Grasp a ceramic cup.

ocean_waves.launch

Launch file ocean_waves.launch does this:

  • Include Gazebo's empty_world.launch.
  • Include uuv_assistants file publish_world_ned_frame.launch.
  • Start node publish_world_models running publish_world_models.py.
  • Optionally launch uuv_assistants file set_simulation_timer.launch.

upload_rexrov.launch

On default, starts upload_rexrov_default.launch with initial x,y,z,roll,pitch,yaw values.

empty_world.launch

This launch file, https://github.com/ros-simulation/gazebo_ros_pkgs/blob/jade-devel/gazebo_ros/launch/empty_world.launch, starts Gazebo, defining default parameters and opening /usr/share/gazebo-9/empty.world:

<?xml version="1.0" ?>
<sdf version="1.5">
  <world name="default">
    <!-- A global light source -->
    <include>
      <uri>model://sun</uri>
    </include>
    <!-- A ground plane -->
    <include>
      <uri>model://ground_plane</uri>
    </include>
  </world>
</sdf>

which defines world "default" with light and ground.

ocean_waves.launch

For launch file syntax, see http://wiki.ros.org/roslaunch.

Sensors

File ~/uuv_ws/src/uuv_simulator/uuv_assistants/templates/robot_model/urdf/sensors.xacro.template identifies example sensors: GPS, Pose 3D sensor, forward-looking sonar, DVL, RPT, Pressure, IMU, camera. See ~/uuv_ws/src/uuv_simulator/uuv_sensor_plugins/uuv_sensor_ros_plugins/urdf/*.xacro for more.

File ~/uuv_ws/src/uuv_simulator/uuv_descriptions/robots/rexrov_sonar.xacro has xacro:forward_multibeam_sonar_m450_130. It uses plugin name uuv_plugin filename libuuv_underwater_object_ros_plugin.so built from ~/uuv_ws/src/uuv_simulator/uuv_gazebo_plugins/uuv_gazebo_ros_plugins/src/UnderwaterObjectROSPlugin.cc. It connects services for modeling underwater properties.

Clone this wiki locally