I still need to implement the fitness functions that make use of the target entities that I have generated, but I have completed much of the base path planning system. Now I am interested in using 3D simulation with ROS robots for experiments.
The simulated environment needs the following.
- Surface robot
- Water surface
- Water currents
- Scientific targets
I have some experience working the Gazebo simulator. I have done path planning work, but it was in pre-built environments for indoor ground robots. When I have looked for Gazebo-based water scenes, I typically see a focus on underwater robots. I never see much mention of surface currents.
I found another ROS-enabled 3D simulator that is focused entirely on water robotics. It is called UWSim (UnderWater Simulator). While the documents focus on underwater robots, I could see that a surface vehicle was supported.
I downloaded pre-built virtual machine, and got it running without issues. When I was looking into how to create custom environments (“scenes”), I found that UWSim might not be significantly more useful than Gazebo for my purpose.
UWSim supports a single, global ocean state. I can only have one current. My path planning is focused on navigating among dynamic currents that vary widely across the space. Since it is ROS-enabled, I can supply arbitrary forces on the robot. However, the 3D scene does not illustrate these forces, so much of the advantage of a water-based scene is lost.
Since I am already familiar with Gazebo, my new plan is to build a Gazebo scene. Since the robot is on the surface, the underwater aspect is not relavent. If the 3D environment itself were being used to generate the currents, then the underwater terrain characteristics would matter. But I am pulling currents from the real-world.
My plan to implement a simple Gazebo-based scene for my task is this:
- Surface robot: Find or build a 3D boat model.
- Water surface: Color the floor blue.
- Water currents: Draw arrows above the floor that represent the current at the grid location.
- Terrain: Build simple obstacle shape based on the coastal region used.
- Scientific Targets: Another image layer on the surface that shows the targets. Will need to work with the transperancy of these images to show them all.