How to Navigate Underwater Between Two Coordinates Without GPS or DVL?

Hello,

I am working on an underwater autonomous navigation task. The goal is to deploy the vehicle at a known coordinate in the sea, and have it autonomously reach another predefined coordinate without using any GPS, communication, or DVL throughout the mission.

The vehicle will not receive any external data once deployed. It must rely entirely on onboard sensors and software to maintain its heading and navigate toward the target.

For orientation, I am currently considering using the BNO055 IMU. Do you think this sensor is suitable for underwater autonomous navigation tasks like this?

  • What sensors or algorithms can be used to accomplish such a navigation task?
  • Can the Ping360 sonar be effectively used for heading estimation or navigation in this kind of mission?
  • Are there any alternative sensors or methods you would recommend?

I would appreciate any suggestions or feedback from those with experience in similar missions. Thank you.

Hi @beyza -
Sounds like a cool project. What are your goals? It’s important to understand more about an application before making recommendations in the blind - that IMU can work great when calibrated, but like most cheap MEMS devices is going to limitations.

Providing an idea of the scale that your two points to be navigated between are apart would be a good start… What an acceptable error in final position or drift vs. time would be? What sort of water current speeds? etc. etc. How fast are things moving?

Hello Tony,

Thank you for your response and suggestions! I am sharing an example illustration below to better explain the mission.

The operation will take place near the shore in the sea. The vehicle will be released from a known starting point (orange dot on the left) and will autonomously reach a defined end point (orange dot on the right).

  • The distance between the start and end points is short, and I expect the vehicle to reach the target with approximately 2 meters of tolerance.
  • Operating in the sea may cause drift due to currents, so ±2 meters is an acceptable final error.
  • The thrusters will run at around 1700 PWM during the mission.
  • I will start the code and deploy the vehicle, and from that moment, it must determine its own heading and path autonomously.

For this kind of fully autonomous operation:

  1. Which onboard sensors and software approaches would be most suitable?
  2. What are the methods to minimize drift and orientation error without any external references?
  3. Could the Ping360 sonar improve the reliability of heading control or position estimation in such a mission?
  4. Are there any alternative navigation techniques you would recommend for short-distance underwater paths affected by currents?

Additionally, I would like to calculate the distance traveled and drift to evaluate how accurately the vehicle reaches the target.

Thank you in advance for your insights!


Hi @beyza -

You still haven’t explained much! What kind of vehicle is it? What depth will it be operating at? What is the application?

Would a camera have sight of the bottom as the vehicle moves?

Doing everything onboard is a stiff requirement! It’s also seems quite challenging to calculate the drift between vehicle target position and actual position achieved without external observation - maybe you could use a USBL or DVL, or GPS at the surface when testing and developing your solution?

If a DVL is considered to be using an external reference then I expect a scanning sonar would be as well, in which case it may not be allowed?

Is this considered separate from the vehicle’s motion control?

Evaluating achieved accuracy is not possible without an external reference, and if you had an accurate estimate of drift that’s accessible to the motion control system then you would use that as feedback to correct for the drift.

If this is a vehicle at or near the surface then you could potentially achieve this with a precisely positioned drone overhead. If it’s underwater you’ll likely need to use some kind of positioning sonar (e.g. you could have a beacon on the vehicle which has its position triangulated by a set of precisely located receivers in the water).

If this is supposed to be the vehicle’s own estimate then it can likely only be an estimate of precision, calculated from integrating the uncertainty of each measurement together with the measurement values. That said, if you’re operating with constrained motion control axes relative to your sensors then you may also be able to provide an accuracy estimate, combined with the precision estimate for its uncertainty.

Hello Tonny,

Here are clear answers to your questions:

  1. What type of vehicle is this?
    It is an underwater vehicle with 8 thrusters. It is equipped with a Pixhawk running ArduSub, and we are also using a Jetson onboard.
  2. At what depth will it operate?
    It will operate at a depth of approximately 1 meter.
  3. What is the intended application?
    The starting point is assumed to be (0,0), and the goal is for the vehicle to autonomously navigate to a target location such as (3,5). We are considering estimating the position by integrating the acceleration data obtained from the IMU (BNO055). Movement control and navigation will be handled via MAVLink messages.
  4. Can the vehicle’s camera see the bottom while moving?
    No, we are not using a camera. A vision-based system is not planned.
  5. Is it a strict requirement to process everything onboard?
    Yes, due to underwater communication limitations, all computations will be performed onboard.
  6. How will you estimate the deviation between the target and actual position without external observation?
    We do not intend to use external systems such as DVL or GPS. All position estimation and control will be carried out entirely autonomously using only onboard sensors and algorithms.

We are open to improvements and technical suggestions, especially regarding sensor fusion, state estimation, and control algorithms.

Hi @beyza -

I’m afraid integrating the vehicle motion sensors to infer position isn’t likely to give you good results, as position drift will accumulate very rapidly. This has been discussed many times on these forums!

Can you share more on what is driving your requirements to not use DVL or GPS? To @EliotBR’s point, if nothing can be externally observed, I’m not sure how you will determine the error in your navigation to evaluate the performance of your solution!

Generally, commanding the vehicle to go to a depth, acquire a heading, and drive forward “in the blind” is all possible, however unlikely to be particularly repeatable..

Are you aware that a DVL is entirely onboard, at least in terms of required hardware? It is not inertial (i.e. it sends out sonar pulses to reflect from the sea floor, so it can estimate velocity), but there are no external components involved (similar to if you used a scanning sonar like the Ping360, but that would require detectable objects at the side instead of below).

Surface-based GPS can potentially be viable for determining a starting position, occasional corrections, and/or the accuracy of positions along the way (if you’re able to return to the surface), using external hardware that is globally available (albeit only in places with a view of the sky, so not in tunnels and the like).

It is only underwater GPS (e.g. from an SBL or USBL system) that requires user-provided external hardware and communication.

This is what ArduSub is for, with the EKF for fusion and state estimation, and the various control modes for different types of control (with corresponding control algorithms). That said, as @tony-white mentioned, the error accumulation when trying to perform dead-reckoning from just a low-cost IMU is significant, and is not expected to be suitable for position estimation with usable accuracy.