Skip to content

nschang/mr-dvl

Repository files navigation

WaterLinked DVL A50 Integration Manual

This repository contains information about the integration, setup and operation of a WaterLinked DVL A50 on a BlueROV2.

Content:

The file 'dvl-history.md' is the main working doc. The other folders in this repo are:

  • dvl-a50-data: contains Communication protocol setup and DVL output in various settings of vehicle (json format only)
  • dvl-a50-ros: ROS-related setup and output of dvl-a50 ROS Node
  • dvl-a50-future-work: includes current and future work on DVL A50 and BlueROV
  • dvl-a50-logs: includes logs generated by various applications (QGC, Companion, MAVLink) for troubleshooting
  • bluerov-repo: includes packages developed by BlueRobotics for ROS integration (not updated for a while)

for Hardware integration, as well as other introductory content, go to Wiki of this repo.

Waterlinked DVL A50 - Quick Start

Follow the steps below to start using DVL with BlueROV:

Hardware integration

Connection

  • DVL 8-pin connector
  • Connect landside terminal to BlueROV through Fathom-X Tether Interface (FXTI)
  • Make Sure BlueROV is set up correctly and running

A50 DVL configuration

The DVL must be configured with a static IP address of 192.168.2.95. Follow Water Linked's instructions here.

DVL Status Check

The LED on the side should be flashing (loonking for bottomlock) or fixed green light (bottomlocked). when running dry on land, it is recommended to add additional cooling to DVL by water or wind.

A50 DVL configuration

The DVL must be configured with a static IP address of 192.168.2.95. Follow Water Linked's instructions here.

Open WebUI for monitoring

In browser, go to http://192.168.2.95, check for active data or error messages. In another tab, go to http://192.168,2.2:2770/waterlinked for management page.

Reading Data from DVL (json)

DVL data can be read in the following ways. For more detils on reading DVL data, go to dvl-a50-data.

json format:

to read data in terminal: nc 192.168.2.95 16171

to read data and save to text file: nc 192.168.2.95 16171 > out.txt

The output of a single TCP report will look like this:

Example of TCP report. (invalid)

{"time":126.04666137695312,"vx":0.009757072664797306,"vy":0.002016076585277915,"vz":-0.0002864645794034004,"fom":0.00016600292292423546,"altitude":1.8710078001022339,
"transducers":[{"id":0,"velocity":-0.002349231392145157,"distance":2.041400194168091,"rssi":30.97574806213379,"nsd":19.906816482543945,"beam_valid":true},
{"id":1,"velocity":-0.0034521492198109627,"distance":1.9942001104354858,"rssi":38.42657470703125,"nsd":30.263219833374023,"beam_valid":true},
{"id":2,"velocity":0.00183798186480999,"distance":2.0886001586914062,"rssi":31.835567474365234,"nsd":22.06237030029297,"beam_valid":true},
{"id":3,"velocity":0.0029014351312071085,"distance":2.041400194168091,"rssi":37.41792678833008,"nsd":23.786922454833984,"beam_valid":true}],"velocity_valid":true,"status":0,"format":"json_v1"}

for more info on the format and meaning of variables, go to dvl-a50-data

dvl-python

In companion, type:

  $ pip install crcmod pyserial
  $ cd /home/pi/
  $ git clone https://github.com/waterlinked/dvl-python.git
  $ cd ~/dvl-python
  $ pip install -e .
  $ python
    >>>  from wldvl import WlDVL
    >>>  dvl = WlDVL("/dev/ttyUSB0")
    >>>  report = dvl.read()
    >>>  print(report)
    # the output should look like this
        {'fom': 0.002, 'time': 40.57, 'vy': 0.004, 'vz': -0.002, 'vx': -0.003, 'valid': True, 'altitude': 0.14}
    # Show data
    >>>  print("Velocity ", report['vx'], report['vx'], report['vz'])
    >>>  print("Altitude ", report['altitude'])
    >>>  print("Valid measurement ", "Yes" if report['valid'] else "No")

DVL ROS messages

To run the publisher that listens to the TCP port and sends the data to ROS

  rosrun waterlinked_a50_ros_driver publisher.py _ip:=192.168.2.95

where _IP is replaced by the IP of the DVL, in our case 192.168.2.95. You can also display the raw DVL data in the terminal by specifying the argument "do_log_data":

To run the publisher that listens to the TCP port, displays the raw data in the DVL and sends the data to ROS

  rosrun waterlinked_a50_ros_driver publisher.py _ip:=192.168.2.95 _do_log_data:=true

To run a subscriber node that listens to the DVL topic. Helpful for debugging or checking if everything is running as it should be. Choose between "subscriber_gui.py" and "subscriber.py". The non-GUI version is used here due to limitations of companion pi with commandline interface.

  rosrun waterlinked_a50_ros_driver subscriber.py

for more info on DVL ROS setup, please go to dvl-a50-ros

Operation within QGC

For Position Hold (UNDER CONSTRUCTION)

  1. go to http://192.168.2.2:2770/waterlinked
  2. the "Status" field in the Waterlinked page should read Running....
  3. QGC will announce "EKF3 IMU0 STARTED RELATIVE AIDING" and then "EKF3 IMU0 FUSING ODOMETRY" (This means the DVL input is being fused.)
  4. switch to POSHOLD mode

For Deadreckoning (track ROV position in QGC map view): (UNDER CONSTRUCTION)

The DVL data is sent by the VISION_POSITION_DELTA mavlink message.

  1. go to http://192.168.2.2:2770/waterlinked
  2. place the pin in the starting position
  3. click Set New Origin.

BlueROV2 QGC Setup Documentation

BlueROV2 Software Setup

About

DVL A50 Integration and Operation manual for use on BlueROV2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors