ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

3D path planning in an underwater environment with obstacles

asked 2018-07-10 13:57:58 -0500

urg1995 gravatar image


I was hoping to ask for some guidance from the ROS community on my current project. I am tasked with creating a controller capable of navigating AUVs (autonomous underwater vehicles) and submarines through a simulated underwater environment. The idea would be for the controller to be able to guide these vehicles through a set of 3D waypoints. The environment will contain obstacles like the ocean floor and ice flows that must be avoided. I will likely use UUV simulator, which is built on ROS and Gazebo, to visualize and simulate the environment.

The simulator has simple built in controllers that should be able to implement any feasible path generated for a specific vehicle. However, I cannot find anything capable of generating three-dimensional paths while avoiding obstacles and (preferably) adhering to the kinematic constraints of the vehicle.

The navigation package is only applicable to 2D problems and the consensus for applying MoveIt to path planning for a base instead of joints seems to be that it cannot not be done for non-holonomic vehicles. I understand that OMPL, the motion planning library that MoveIt uses, has path planners capable of 3D path planning subject to constraints, but as it does not have consideration of obstacles integrated like MoveIt does (among other things I would have to implement), it seems I would be reinventing the wheel to accomplish what is supposed to be a small part of a simulator. That being the case, I would love to hear if anyone has any advice on how best to accomplish my task, whether through pointing me towards resources or suggesting alternatives. Thank you!

One note that may be important is that the vehicle does not have to sense the obstacles through simulated sensors for my application. I can provide data about the obstacles in whatever way works. I just need the vehicle to be able to navigate the environment.

edit retag flag offensive close merge delete


hi 1995,are you still there for the path planning research? now I'm faced with the same situation and your experience can be of help:)

marvelousluke gravatar image marvelousluke  ( 2023-03-12 00:21:42 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2018-07-19 07:40:08 -0500

Musa Marcusso gravatar image

I don't know if this is exactly what you are looking for (this is not only regarding path planning), but here some sources that might be worth reading/checking out:

I know that the last two links might be a bit far from what you are looking for, but StudyWolf provides repositories with the code and examples, so it would be good to check it out.

Another thing that might be interesting is this work from the University of Girona integrating their AUV with MoveIt. Maybe they have more information on how that can be done as well.

edit flag offensive delete link more

answered 2018-07-25 05:19:48 -0500

kotoko gravatar image


Just to add an option to what already has been said. An implementation of the Lazy Theta * can be found at path_planning/lazy_theta_star. The package extends this to 3D with octomap as world representation.

This is built and tested for holonomic vehicles but if you modify the way neighbors are generated and line of sight checks taking into account kinematics it might just work.
This would be at ltStar_lib.cpp:
- generate neighbors at line 743 that refers to neighbors.cpp line 18. There it is essentially up, down, left, right (it is over a sparse occupancy grid - octomap)
- line of sight checks at line 310 currently look for obstacles inside a given geofence but you can also check whatever you like. This is basically where the A* checks "can I go here"

If you find a good approach please report back!

edit flag offensive delete link more

Question Tools



Asked: 2018-07-10 13:57:58 -0500

Seen: 1,386 times

Last updated: Mar 12 '23