/ros_nmea_depth

ROS node to translate NMEA depth sentences into ROS topics

Primary LanguagePython

NMEA depth to ROS (ros_nmea_depth package)

ROS package to parse NMEA GPS and Depth sentences, obtained from a Lowrance Elite 5-TI side-scanner, into ROS topics. The package currently contains one node, which receives the NMEA sentences via UDP. Four new message types are defined, as there are no standard ROS messages for some of the side-scanner NMEA sentences:

Partly based on code from this ROS node.

Dependencies

Installation

  • Install or resolve dependencies (see above)
  • Clone this repository to your catkin workspace src directory (e.g., $HOME/catkin_ws/src)
  • From your catkin workspace root directory (e.g., $HOME/catkin_ws), run the catkin_ws command

Usage

You can run the UDP node by running a roscore, and then using the rosrun command:

roscore &
rosrun ros_nmea_depth nmea_depth_udp.py

Alternatively, a ROS launch file is provided, where the default parameters (see below) are set as:

  • Frame ID: lowrance
  • IP Address: None (UDP multicast)
  • UDP Port: 12021

Published Topics

All topics are published relative the device's namespace, referred here by the frame_id parameter, and the sensor where the data is obtained. For example, if running the lowrance launch file, the frame_id will be lowrance, and thus the GPS time reference topic will be /lowrance/gps/time_reference.

Parameters

  • ~address (string, default: None)

IP address for source of NMEA sentences. Default is defined by an environment variable called "SONAR", which must be set before running the launch file:

export SONAR=<your_sonar_ip_address>
  • ~port (int, default: 12021)

TCP/UDP port for source of NMEA sentences. Default is a random port, defined by our Lowrance sonar. You must change this parameter to reflect the inbound connection with your device. You can do this either by modifying the ROS launch file or by specifying this parameter when using rosrun. For example, when running the TCP node:

rosrun ros_nmea_depth nmea_depth_tcp.py _port:=<your_port>
  • ~frame_id (string, default: None)

Name or ID of device which produces the NMEA sentences (e.g., lowrance).

  • ~update_rate (int, default: 40)

Rate of publishing NMEA sentences for TCP and UDP nodes. If your sonar transmits NMEA sentences too fast, the TCP/UDP nodes may miss some sentences, and increasing this parameter may prevent these losses. However, be wary of the node's CPU and bandwidth usage, both which may increase with higher publishing frequencies.

Contributors