ROS provides a number of packages that can be used to convert GNSS solution data from the industry-standard NMEA 0183 representation into ROS-standard GNSS messages. Some of them are reviewed below.
nmea_navsat_driver
First, install the package. For example, on Ubuntu the package can be installed as follows (assuming ROS Indigo):
sudo apt-get install ros-indigo-nmea-navsat-driver
Then start the node:
roscore & rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/serial/by-id/usb-Zubax_Robotics_Zubax_GNSS_34FFD305435730343944224300000000-if00
The long path can also be replaced with just TTY name, e.g. /dev/ttyACM0
. Having started the node, open a second terminal and you’ll see the data:
$ rostopic echo /fix header: seq: 14 stamp: secs: 1450103910 nsecs: 61619043 frame_id: /gps status: status: 0 service: 1 latitude: 00.6046158333 longitude: 00.7155701667 altitude: 228.17 position_covariance: [1.2544000000000002, 0.0, 0.0, 0.0, 1.2544000000000002, 0.0, 0.0, 0.0, 5.017600000000001] position_covariance_type: 1 ---
gpsd_client
This package requires that the system has a running gpsd installation. Read this article to see how to use gpsd with Zubax GNSS: Using Zubax GNSS with gpsd.
Having gpsd configured and running, install the ROS package gpsd_client
and try it:
$ roscore & $ rosrun gpsd_client gpsd_client & $ rostopic echo /fix header: seq: 205 stamp: secs: 1450104688 nsecs: 839999914 frame_id: '' status: status: 0 service: 1 latitude: 00.604582 longitude: 00.715618833 altitude: 231.312 position_covariance: [8.121, 0.0, 0.0, 0.0, 10.554, 0.0, 0.0, 0.0, 43.7] position_covariance_type: 2 --- ...