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.
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
---
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
---
...