Standalone C++ driver for Novatel GNSS system. Refactored from Baidu's Apollo code.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
conf Fixed a typo, corrected baud rate. Aug 26, 2017
launch Initial commit. Aug 24, 2017
proto Messages aren't being generated, but everything compiles. Almost there. Aug 25, 2017
src Added heading to odometry messages. Nov 26, 2017
.gitignore Initial commit. Aug 24, 2017
CMakeLists.txt Corrected typos in README and updated package version number. Sep 7, 2017
nodelets.xml Initial commit. Aug 24, 2017



This is a port of the Apollo GNSS driver to pure ROS. We removed dependencies on the protocol buffer messaging infrastructure used by Apollo.

This driver has been tested to work with a Novatel ProPak 6 on the University of Nevada, Reno's MKZ platform from AutonomouStuff.

This work was supported by the Nevada Governor's Office of Economic Development and the State of Nevada's Knowledge Fund.


  • Integrate Apollo's framework into the ROS framework through remove of protocol buffer dependencies for messages and instead use the ROS message framework to publish and subscribe to sensor topics.
  • Publish, subscribe, and log gnss data including gps, imu, ins, and wheel encoder.
  • Stream RTK correction to the GPS receiver if available.


This GNSS driver has two nodelets: a data stream nodelet and a parser nodelet. The stream nodelet communicates between the host PC and the device and grabs the RTK data from a NTRIP caster. The parser nodelet subscribes the raw data from the stream nodelet, parses the data, and publishes ROS messages.


  • GPS data, e.g. velocity latency, position and velocity and their standard deviations
  • INS data, e.g. position, linear and angular velocity and covariance
  • IMU pose data, e.g. orientation, velocity, & acceleration


  • data stream status
  • gnss status
  • ins status
  • imu data
  • localization data


We use protocol buffers to store the driver configuration. The configuration file is stored in path share/gnss_driver/conf/ which is quoted by gnss_driver.launch. File gnss_driver.launch is stored in path share/gnss_driver/launch/. When using the gnss_driver, the following should be checked before deployment:

  • To use the location with UTM projection, check the zone id configuration in gnss_driver.launch.
  • Check the the lever arm distance.
  • Confirm the imu install method, as this affects the vehicle's frame and orientation compute.