I am building an autonomous underwater robot. It will be used in swimming pools. It should be capable of running in any normal sized pool, not just the pool in which I test. So I cannot rely on a particular design or feature. It has to know it's position in the pool, either with respect to the initial position or with respect to the pool. I have a IMU, which is a Pololu MiniIMU but finding the displacement with an IMU is a near impossible task.

What sensor can I use for this task? It should not be very expensive. (below 200$)

Tank size: 25x20x2.5 meters

  • $\begingroup$ Which IMU are you using? Are you allowed to place markers (aka fiducials) in the pool (for example AprilTags)? $\endgroup$
    – Ben
    Jun 23 '15 at 21:31
  • $\begingroup$ @Ben No markers, but could use anything already present, like GPS, WiFi, Cell Tower Signals, but the above mentioned signals attenuate underwater. I've updated the question with IMU. $\endgroup$ Jun 23 '15 at 21:41
  • $\begingroup$ Thanks, please put the marker information in the question too. On stack exchange, it is better to edit your question to add the requested information, rather than adding more comments. Comments are for helping to improve questions and answers, and are distracting, so we try to keep them to a minimum. If all of the information needed to answer the question is contained within it, the comments can be deleted. $\endgroup$
    – Ben
    Jun 24 '15 at 13:54
  • $\begingroup$ Is there much (if any) markings in the pool? For example if it is a standard lap pool it will have black lines on the floor. But a personal pool will not have much markings beyond a drain. How large of a pool is it? $\endgroup$
    – Ben
    Jun 24 '15 at 14:14

Localization under water was always a problem in ocean robotics as electromagnetic signals do not propagate very well in water. I think your best localization sensor in that case would be the good old sonar, which works much faster in water. You could have four of them and detect how far are the pool walls on each side then with a triangulation algorithm locate your robot approximately. You can also add one looking down for estimating the depth.

  • $\begingroup$ How much would a sonar cost? IS underwater sonar module available? How much would it cost? Also if I waterproof a sonar, the medium changes, and so the range changes. Would it increase or decrease? by how much? $\endgroup$ Jun 28 '15 at 16:46
  • $\begingroup$ I am not sure about the range changing when waterproofing, but the normal one has a range of 5 meters, sparkfun.com/products/11309 $\endgroup$
    – Mehdi
    Jun 28 '15 at 18:20

One of the prime sensors for global localisation on land is GPS. This is not an option underwater because electromagnetic waves get absorbed quickly.

There are however alternatives, which provide navigation information which is not so easily available on land.

  • Large Baseline (LBL) - is a method based on sonar, which works very similar to GPS, just using acoustics instead. For this you need transponders that ping at known intervals. The robot can than calculate its position based on the run length intervals. Because the timings are much easier than with GPS, coming up with your own solution might be feasible.
  • Ultra Short Baseline (USBL) - works the same as the LBL, just that the transponders are very close to each other (usually one device). In this way you get an angle and range measurement. Less accurate, but more compact.
  • Doppler Velocity Log (DVL) - uses the doppler effect in multiple directions to give you the velocity against ground.
  • Pressure Sensor - you can directly get a measurement of your depth in the water column with this.
  • AHRS - based on IMU and Compass, you can get a good estimate of your orientation.

The bad news is that the sonar based methods are way off in terms of your budget. However, if you are interested in this, it might be feasible to construct a localisation method based on DIY hydrophones. Should definitely be a fun experience.

Your alternatives, especially feasible in a pool, is to go optical. You can for example use an external camera to track your robot, or use markers (e.g. Aruco) to get a relation to a known position.


If it's actually underwater, how about a webcam looking at the tile pattern on the floor? (Could be considered "cheating" as it will obviously fail in a natural lake, for example.)

You can find a paper using and demonstrating this method is this paper:

Carreras, Marc, et al. "Vision-based localization of an underwater robot in a structured environment." Robotics and Automation, 2003. Proceedings. ICRA'03. IEEE International Conference on. Vol. 1. IEEE, 2003.

  • $\begingroup$ This depends greatly on the computational resources available as well as, as you pointed out, the floor layout. Not all pools have tiled floors $\endgroup$
    – koverman47
    Jul 18 '18 at 15:00

If you cannot use a camera the task is nearly impossible with your money limitations.

Professionals use a scanning sonar like the tritech micron and a particle based localization like [3] based on FastSLAM: [1].

However if you experienced with underwater acoustics you can try to build your own localization system based on the idea of a USBL idea [2] e but you will hard fight with reflections of the basin itself.

[1] https://www.google.de/search?q=FastSLAM:+A+Factored+Solution+to+the+Simultaneous+...&ie=utf-8&oe=utf-8&rls=org.mozilla:en-US:unofficial&client=iceweasel-a&channel=rcs&gws_rd=cr&ei=ZYuKVdjhE4yYsAHK6JiwBA

[2] https://en.wikipedia.org/wiki/Ultra-short_baseline

[3] https://github.com/auv-avalon/uw_localization


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.