This repository contains information about the integration, setup and operation of a WaterLinked DVL A50 on a BlueROV2.
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.
Follow the steps below to start using DVL with BlueROV:
- DVL 8-pin connector
- Connect landside terminal to BlueROV through Fathom-X Tether Interface (FXTI)
- Make Sure BlueROV is set up correctly and running
The DVL must be configured with a static IP address of 192.168.2.95. Follow Water Linked's instructions here.
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.
The DVL must be configured with a static IP address of 192.168.2.95. Follow Water Linked's instructions here.
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.
DVL data can be read in the following ways. For more detils on reading DVL data, go to dvl-a50-data.
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:
{"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
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")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.95where _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:=trueTo 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.pyfor more info on DVL ROS setup, please go to dvl-a50-ros
- go to http://192.168.2.2:2770/waterlinked
- the "Status" field in the Waterlinked page should read Running....
- QGC will announce "EKF3 IMU0 STARTED RELATIVE AIDING" and then "EKF3 IMU0 FUSING ODOMETRY" (This means the DVL input is being fused.)
- switch to POSHOLD mode
The DVL data is sent by the VISION_POSITION_DELTA mavlink message.
- go to http://192.168.2.2:2770/waterlinked
- place the pin in the starting position
- click
Set New Origin.