Originally published at: https://ceruleansonar.wpengine.com/rovl-locator/
The ROV Locator is designed for low-cost, medium accuracy localization of underwater objects.
- The system can be used to guide an ROV to an area of interest, either manually or autonomously.
- The system can be used to locate an ROV.
- Other applications are also possible.
A complete system requires both a transmitter and a receiver. After calibration, transmitters are paired with specific receivers and should not be interchanged.
The system works by syncing the clocks of a transmitter and receiver. The transmitter then sends a sound pulse once per second. The receiver uses time-of-flight to calculate slant range to the transmitter, and phase measurements to determine the arrival angle of the sound pulse.
|Volume, Receiver Unit||295 ml|
|Mass, Receiver Unit||278 gm|
|Volume, Transmitter Unit||295 ml|
|Mass, Transmitter Unit||TBD gm|
|Absolute Maximum Range||1 km|
|Typical Usable Range||300 m|
|Apparent Yaw/Azimuth resolution*||1°|
|Apparent Elevation angle resolution*||1°|
|Slant range measurement resolution*||0.1 m|
|Slant range error accumulation (typical)||2 m/hr|
|IMU Euler angle accuracy, typical **||2°|
|Update rate||1 Hz|
|Ping Frequency||25 kHz|
|Receiver V-in power||4.5V to 28V DC
|Transmitter V-in power||4.5V to 28V DC
* Resolution does not equal Accuracy. ** Magnetic errors not included
Receiver Orientation Frame
Best Operating envelope
Data Communication from ROVL to ROV or Computer
Both transmitter and receiver support TTL-level communication at 115,200 baud, 8 bits, no parity, one stop bit.
Syncing and calibrating
There are two types of user calibrations:
- Clock drift compensation (should be done when put into service and then every three months or so)
- IMU Calibration
There are two methods of syncing the transmitter to the receiver:
- Fast sync with dumb or autonomous transmitter
- Commanded sync with tethered transmitter and receiver
Clock Drift Compensation/Calibration
The clocks in the receiver and transmitter need to be synced in order to measure the distance between the two units. Time-of-flight is used for this. Slight differences in crystal manufacturing can cause the two clocks to run at slightly different speeds. Clock drift compensation is used to compensate for some of the difference. The method is as follows:
- Put transmitter and receiver at a rigidly fixed distance from each other and at the same temperature (example, taped together in a 5-gallon bucket of water)
- Power up transmitter
- Power up receiver
- Send receiver a “Crystal Calibration” command
- Wait 30 minutes without disturbing positions or sending other commands. The receiver will send an informational message when complete
To be done when first put into service and then about every three months to account for crystal aging
The Receiver contains an Inertial Measurement Unit (IMU) which has internal magnetometers, accelerometers and gyros. These sensors are imperfect and can have errors. Additionally, external magnetic disturbances can cause the magnetometers to make a bad estimate of magnetic north. The IMU has built-in processing that attempts to compensate for drift and offsets in the IMU’s sensors and for external magnetic influences. Calibrating the IMU can speed up the error correction process.
IMU calibration data is saved in flash memory and will result in much faster calibration on startup.
The IMU should be fully calibrated each time it is mounted in a new or different location.
You need to tell the receiver to invalidate its IMU calibration data when you remount it, then you need to do calibration maneuvers until calibration completes (see below calibration maneuvers).
Failing to invalidate old IMU data when re-mounting the receiver will result in long, annoying, difficult startups.
If you are only using apparent bearing and elevation outputs you can ignore the IMU and its calibration requirements.
Calibration maneuvers are sometimes called the “IMU Dance,” and they go like this:
- Initial calibration – read the $USRTH data message to see when calibration is complete (Euler fields will become non-empty when calibration fully completes)
- Place the device in 6 different stable positions for a period of few seconds each to allow the accelerometers to calibrate. Make sure that there is slow smooth movement between stable positions. The 6 stable positions can be in any direction, but make sure that the device is lying at least once perpendicular to each of the x, y and z axes.
- Make some random movements (for example: writing the number ‘8’ on air), and/or rotating slowly around all three axes.
- Repeat the two steps above until the unit indicates fully calibrated.
Once the initial calibration is complete and stored in flash memory, on subsequent boot-ups only a few simple maneuvers are needed for the IMU to recognize the saved calibration is still valid and begin outputting data. These maneuvers are typically as simple as smoothly turning the receiver upside-down and then right-side up once or twice.
If you re-mount the unit without invalidating the old calibration data and then completing an initial calibration, on subsequent boot-ups it may take quite a few maneuvers to complete calibration.
Any time after either an initial calibration or a subsequent boot-up calibration is complete (i.e., data appears in Euler fields), you can invalidate stored data and the newest calibration data will immediately store in flash. An information message is sent when the flash storage operation is complete.
Fast Sync for distance measurements
Fast sync is used to quickly and easily sync clocks between the transmitter and receiver. This is most useful when there is no tether connection between the transmitter and receiver, and/or when the ROV Locator is not integrated into the system. This is how it is done:
- Get transmitter and receiver in communication with each other (i.e., power them up and put them in the water) at a known distance from each other (e.g., 1 meter)
- Send receiver a “known distance” command
Whatever error is in your known-distance command will appear in transmitter’s distance estimate. Generally, an error of two to three meters isn’t too noticeable.
Sync is good until power is interrupted to either transmitter or receiver. Sync is lost when power is lost.
Sync will drift due to clock error, typically accumulating errors at one to two meters per hour
commanded Sync for distance measurements
Commanded sync works if you have communication links to both transmitter and receiver from a central controller. This is how it is done:
- Simultaneously send each unit a “Prepare to sync” command
- Wait at least two, but not more than three, seconds. Then simultaneously send a sync command to each unit. The closer to simultaneous, the better the subsequent distance estimates will be. Expect an initial error of about 1.5 meters for every millisecond of non-simultaneity.
The transmitter will ping at exactly 1-second intervals from receipt of the sync command (within the limitations of the clock crystal, typically 1.5 PPM).
Sync is good until power is interrupted to either transmitter or receiver. Sync will drift due to clock error, typically accumulating errors at one to two meters per hour.
New commanded syncs can be done at any time and any interval to keep clocks synced. ROVL operation is interrupted for about 3 seconds each time a sync is commanded.
Operating and accuracy considerations
Like all sonar systems, the ROVL system is affected by multipath. Reflections from the ROV body, the surface and bottom of the water body, environmental objects, launching platform body, thermoclines, etc. all can degrade accuracy and can cause ghost solutions. Multipath often manifests itself as random spurious solutions interspersed with good solutions. Spurious solutions can sometimes be filtered out.
Aquatic vegetation between the system elements can and will cause severe signal attenuation and phase disturbance of the signals.
sources of multipath
transmitter & receiver data/power connector wiring
Data and power are connected to Transmitter connector J1, or Receiver connector J2
The connector is a JST-GH 4-pin connector. Pins are wired as follows:
- V-in power
- Serial-RX (from host, to ROVL)
- Serial-TX (from ROVL, to host)
- Ground (for power and serial)
Pinout is the same for both Transmitter and Receiver
Both units are supplied with a 4-conductor cable with a JST GH 4-pin connector on the unit end, suitable to connect to:
Blue Robotics BLUART USB to Serial and RS485 Adapter
transmitter wiring notes
For the transmitter, the simplest configuration is just supplying power to the transmitter. In operating scenarios, serial communication is only used for commanding sync and the serial data lines can be left unconnected.
simple wiring for either transmitter or receiver
SIMPLE ROV WIRING FOR EITHER TRANSMITTER OR RECEIVER
Standard cable supplied with units
math for computing remote latitude/longitude
Receiver & GPS at Topside and Transmitter Deepside
This configuration is best used when there is no tether between the topside and deepside, or when the ROV Locator is not integrated electronically into the tether.
latitude_rx :: from GPS co-located with receiver (in degrees that include minutes and seconds)
longitude_rx :: from GPS co-located with receiver (in degrees that include minutes and seconds)
bearing :: true bearing (not compass bearing) from $USRTH message
elevation :: elevation from $USRTH message
slant_range :: slant range from $USRTH message
depth (best, if available) :: from ROV depth sensor (minus depth of receiver unit)
depth (use if ROV depth sensor not available) = abs( sin(elevation) x slant_range ) [note 1]
map_radius = cos(elevation) x slant_range
CE = 40,074,000 m // Circumference of earth in meters
long_m_per_deg = CE / 360 // meters per degree of longitude
lat_m_per_deg = long_m_per_deg x cos(latitude_rx) // meters per degree of latitude [note 1]
latitude_tx = latitude_rx + (sin(bearing) x map_radius / lat_m_per_deg) [note 1, 2]
longitude_tx = longitude_rx + (cos(bearing) x map_radius / long_m_per_deg [note 1, 2]
Note 1: remember, most computer functions require you to convert degrees to radians
Note 2: the signs are needed in the computations
Note 3: longitude degrees that are West are negative, East are positive. Latitude degrees that are North are positive, South are negative.
Transmitter & GPS Topside and Receiver Deepside
In the case where the transmitter is topside with a co-located GPS, and the receiver is deepside, and the GPS data can be downlinked to the deepside system, the location of the receiver can be computed. The process is almost identical to the above case, with the positions inverted. The changes to the above case look like this:
latitude_tx :: from GPS co-located with transmitter (in degrees that include minutes and seconds)
longitude_tx :: from GPS co-located with transmitter (in degrees that include minutes and seconds)
lat_m_per_deg = long_m_per_deg x cos(latitude_tx) // meters per degree of latitude [note 1]
latitude_rx = latitude_tx + (sin(bearing + 180°) x map_radius / lat_m_per_deg) [note 1, 2]
longitude_rx = longitude_tx + (cos(bearing + 180°) x map_radius / long_m_per_deg [note 1, 2]
ROV-locator window application
Cerulean Sonar provides a simple Windows application for the ROV-Locator that can be used to test your devices and to install firmware updates.
Connection and Configuration
The ROV-Locator app assumes the transmitter is connected to the deepside unit, and the deepside unit is supplying power to but may not be communicating with the transmitter. It also assumes the receiver is topside and is optionally co-located with a GPS unit.
The ROV-Locator application assumes the Receiver is connected to the Windows computer using an FTDI TTL 5V USB adaptor. The Blue Robotics BLUART device is equivalent to the FDI cable.
Either the BLUART or the FTDI cable will register with a PC when initially connected, and thereafter will try to always use the same COM port it was initially assigned. To be clear, the COM port assignment associates with the specific FTDI cable or BLUART board, not with the receiver. Keep track of the COM port number; it will make your life just a little easier.
Compatible GPS Devices
The ROV-Locator app is compatible with any GPS that:
- plugs into a PC,
- emulates a COM port
- sends at 115,200 baud, 8 data bits, 1 stop bit
- outputs the standard $GPRMC NMEA-0183 sentence
We have tested the GPS/GLONASS U-blox7 (115,200 baud) with the ROV-Locator application.
We have tested the GlobalSat BU-353S4 USB GPS Receiver (4800 baud) with the ROV-Locator application.
We have tested the VK-162 G-Mouse USB GPS Dongle (115,200 baud) with the ROV-Locator application.
Many other GPS units should also suitable.
The GPS is optional and is only used for the Map display. If no GPS is available, ROV-Locator map display assumes the receiver is located at (0,0) latitude-longitude and that the receiver does not move.
Known Points Database
If a GPS is used, you can load a database of known points into the ROV-Locator and known points will display on the map along with the receiver and transmitter location if they are with the bounds of the current map display. ROV-Locator finds the database by looking for the file “Known Points.txt” on the desktop, and if found, automatically loads it.
ROV-Locator Main Panel
ROV-Locator Map Display
The MAP display is a simple interface that shows the geographic relationship of the transmitter to the receiver. The display shows the receiver icon at the center of the dial (small blue square) and the relationship to the transmitter icon (purple square). The small red circles are the trail of the receiver. The lat/long of the transmitter (in degrees) is shown below the transmitter icon.
If no GPS is connected the receiver is assumed to be at lat/long (0,0). If a GPS is connected the center of the dial is the current GPS location. As the GPS moves (or the fix drifts), the display will show its trail as small blue circles.
Objects in the known points database described earlier will appear on the display if they are in range.