Integrated World - Field-Robotics-Lab/dave GitHub Wiki
Introduction
In the integrated scenario we render different task scenarios in a single world. Our goal is to show that all these individual models can seamlessly function together. This world is filled with multiple vehicles, representative environments and object models to illustrate simulation capability and facilitate multiple missions.
Scene
The world's seabed is a scaled Santorini bathymetry including high regions and relatively flat floor in a small area. The gif shows a Rexrov UUV spawing above central mound.
Refer the GUI screenshot below. Starting from bottom, the world features two mud pits: one with variable depth and the other of constant depth that follows the terrain.
On the top left, there's a combined the Electrical Mating Plugin and Bimanual Manipulation demos with a dual arm Rexrov.
Additionally, there are new Object Models for the robot to interact with. Some objects are simulated to be physically degraded (which can be manipulated as well).
Lastly, featuring multiple UUVs teleoperated using separate joysticks and arms commanded via MoveIt. These UUVs can be teleported to the various demo stations in the world. Check Usage for details.
Usage
To launch the demo world
roslaunch dave_demo_launch dave_integrated_demo.launch
UUVs
The world spawns two UUVs, a single arm rexrov0
UUV which can be teloperated using a joystick connected to js0
and a dual arm rexrov
UUV which can be teleoperted using a joystick connected to js1
. The arms on this UUV can be commanded via the moveit interface. See Electrical Station below for more information.
Stations
The world has multiple stations where UUVs can interact with objects and the environment. A helpful script has been developed to quickly "teleport" the desired UUV to the various stations. Run the teleporter script:
roslaunch dave_nodes integrated_world_teleporter.launch
Then to teleport rexrov0
to the mudpit, type "rexrov0 mud" (without quotes) and hit enter. The UUV should automatically teleport. Gazebo does not have a service to update the camera view through a service call but this can be done in Ignition which is left for future work.
Locations include
- artillery
- mud
- home
Home
The rexrov0
UUV spwans here
The flight_data_recorder
object can be picked up. The other objects are static to reduce computational load.
Mud
The rexrov0
can pick up the anchor that is loaded with the mud plugin and drag it along the mud. The vase beside the anchor can also be picked up. The degraded vase and the narrower vase are static to reduce computational load.
Artillery
Electrical
The dual arm rexrov
spawns here. The arms can be controlled with via moveit
. First start the controller.
roslaunch rexrov_oberon7_moveit rexrov_dual_arm_moveit_planning_execution.launch moveit_controller_manager:=rexrov
To instruct the UUV to pick up the plug and bring it close to the recepticle
rosrun dave_nodes bimanual_integrated_world.py
The user can teleoperate the UUV via js1
to finish the insertion.
End Note
This scenario is an example of many possible complex simulated underwater environments that could be created with DAVE. Some next steps in this particular example are:
- Adding the Multibeam Forward Looking Sonar and process the range data of the environment and objects.
- Changing GUI camera view angles after the vehicle is teleported.