Driver for NMEA0183 depth transducers, which interface with the computer via RS232.
This project is licensed under the MIT License - see the LICENSE file for details
Dartmouth Reality and Robotics Lab
Authors: Alberto Quattrini Li - Dartmouth College.
After configuring the hardware, the following will set the environment to make the ROS driver running.
nmea_depth_transducer
has been tested under ROS kinetic and Ubuntu 16.04, and ROS melodic and Ubuntu 18.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.
-
Robot Operating System (ROS) (middleware for robotics),
-
pynmea2 Library for NMEA 0183 protocol. E.g., in Ubuntu,
sudo apt install python-nmea2
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/dartmouthrobotics/nmea_depth_transducer.git
cd ../
catkin_make
You can run the node with (the default values are for the serial)
roslaunch nmea_depth_transducer nmea_depth_transducer.launch
Currently, this package has been tested with a CruzPro ATU120AT interfaced with a serial to USB.
See:
Publishes depth and temperature measurements of the depth transducer.
-
<sensor_name>/nmea_raw
([nmea_msgs/Sentence])NMEA0183 raw message.
-
<sensor_name>/depth
([sensor_msgs/Range])Depth values in meters.
-
<sensor_name>/temperature
([sensor_msgs/Temperature])Temperature in Celsius.
With socat
a virtual serial port can be created and messages can be sent.
First create the two serial ports:
socat -d -d pty,raw,echo=0,b4800 pty,raw,echo=0,b4800
Run the node:
rosrun nmea_depth_transducer nmea_depth_transducer_node _serial_port:=<port1 path created by socat>
Write a NMEA0183 message to the serial port, e.g., for depth
echo "\$SDDBT,008.8,f,002.7,M,001.4,F*0" > <port2 path created by socat>
or for temperature
echo "\$SDMTW,025.5,C*36" > <port2 path created by socat>