Supported Sensors

Novatel OEM6

novatel-oem6
V2.0.8-pr.8
Ethernet
380

Supported hardware versions

The driver interface communicates directly with the Novatel OEM6 using an Ethernet UDP socket.

Manufacturer Novatel
Model ProPak 6
Firmware version supported OEM6

Sensor background and requirements

The Novatel OEM6 receivers are a set of high end GPS systems with SPAN and RTK capability, with a lower price point than some other competitors. The SPAN on ProPak6 is a fully enclosed system with an OEM6 receiver built by Novatel.

This system integrates easily with an INS sytem to provide filtered GPS positioning which can provide centimeter level precision with RTK or SPAN. This can enable GPS tracking and waypoint following of a high accuracy, and is useful for many high precision applications.

An example use case for this sensor is autonomous waypoint following without any other sensor fusion, within a course that requires low error.

Sensor Notes

  • The following terminology is used throughout the article
    • Novatel kit: The ProPak6 radio, IMU, antennas and supporting hardware for the Novatel GNSS and RTK solution
    • Base station: The stationary Novatel kit
    • Rover: The Novatel kit in the mobile vehicle
    • NVM: Novatel units persistent memory storage for configuration and calibration data
  • By default the PolySync Core driver reconfigures the Novatel sensor parameters on startup, based on the current SDF configuration
    • To configure Core to use the existing configuration on the Novatel sensor, disable the parameter 5508 - Initialize sensor at startup in the SDF Configurator
  • For high precision localization applications it is recommended to incorporate a Kalman filter or other state estimation into the localization code, since the frequency that certain data is output by the sensor is non-deterministic
  • Novatel Connect software allows you to send commands/queries to the Novatel via a COM connection for sensor setup and troubleshooting

Hardware requirements

  • 12V power supply
  • Novatel rover kit
    • Novatel rover radio
    • ProPak 6 compatible IMU sensor
    • 2x Novatel antenna
  • Gigabit Ethernet connection to an ECU, or network switch
    • It’s strongly recommended to provide a direct connection from the sensor to the ECU
  • ECU with PolySync Core installed
  • An ECU with the Windows Operating System, and Novatel Connect software
RTK requirements

These additional steps are required if the Novatel system is setup to use RTK postitioning.

  • 12V power supply
  • Novatel base station kit
    • Novatel base station radio
    • 1x Novatel antenna

Configuring the sensor

Before you can connect the Novatel sensor kit with PolySync Core, each radio must be configured and calibrated based on current mounting positions.

To configure the sensor and complete the following sections you must download and install the Novatel Connect software for the Windows Operating System.

When using Novatel Connect to communicate with a Novatel radio, we recommend you use the serial connection type and a USB (Windows) to Serial (Novatel radio) cable.

Sensor hardware configuration

  • Mount the antennas on the roof of the vehicle, following the Novatel hardware installation manual
    • Antennas can be mounted magnetically, or with a roof rack mount (3D printed) as shown below in grey
    • Novatel Antenna
  • Connect the Novatel sensor to the ECU with PolySync Core using an Ethernet cable
  • Connect a COM port on the back of the Novatel to an IMU unit via RS232
  • Connect the second COM port on the back of the Novatel to a radio for RTK localization via RS232

Configuring SPAN alignment

This step is required in order to properly calculate and configure the antenna location and perform other OEM calibration steps before the system can be used.

  1. Connect to the Novatel system with a micro-USB cable
  2. Startup Novatel Connect and open a New Connection Novatel Connect new connection
  3. Select a USB connection and then select the USB port that the sensor is connected to. If the sensor is properly connected over USB then it should default to the correct port
  4. Open the Wizards tab in the toolbar and select SPAN Alignment Novatel Connect SPAN alignment

The wizard will walk you through setting up antenna distances, IMU orientation and calibration steps.

When you finish, Novatel will ask you to save the configuration, be sure to check the box to save the configuration in NVM (persistent memory).

Configuring radios for Ethernet communication

This step must be executed for both the base station and rover Novatel radios.

  1. Open Novatel Connect and connect to the sensor over the serial port, for connection type select “Serial”
    • Alternative: Use a USB-to-RS232 dongle if your PC doesn’t have a serial port. Connect a null modem cable to the port (cable #01017658 provided by Novatel, or a different null modem cable) to COM1 of the ProPak6
  2. In Novatel Connect send the following commands

    • ETHCONFIG ETHA AUTO AUTO AUTO AUTO

      • Interface: ETHA
      • Speed: Auto-negotiate
      • Duplex: Auto-negotiate
      • Crossover: Auto-negotiate
      • Power mode: Auto-negotiate
    • ICOMCONFIG ICOM1 UDP :2000

      • Virtual port: ICOM1
      • Protocol: UDP
      • Port: 2000
    • IPCONFIG ETHA STATIC 192.168.74.10 255.255.255.0 0.0.0.0

      • Interface: ETHA
      • Address mode: Static
      • Address: 192.168.74.10
      • Netmask: 255.255.255.0
      • Gateway: 0.0.0.0 (connected directly to computer rather than an existing network)
    • SAVECONFIG

      • Saves the configuration to NVM so that it persists across power cycles
    • LOG IPCONFIG ONCE

      • This confirms that the current settings go into effect
  3. Configure the Windows PC to have a static Ethernet IP address on the same subnet as the Novatel sensor.

    • IP: 192.168.74.X (not 192.168.74.10)
    • Netmask: 255.255.255.0
    • Gateway: 0.0.0.0

Configuring the IMU

Connect the IMU DB9 connector to the Novatel’s COM3 port. This example assumes the IMU model is a KVH-1750.

Enter the following commands in the Novatel Connect serial command window. This step is redundant if you have already run through the SPAN alignment wizard.

  • CONNECTIMU COM3 IMU_KVH_1750

Configuring for UDP

This section is included for a convenient reference. This step is also executed in the “Configuring for Ethernet” section above.

  1. Open Novatel Connect and connect to the sensor over the serial port, for connection type select “Serial”
  2. In Novatel Connect enter the following commands to set and verify UDP configuration
    • ICOMCONFIG ICOM1 UDP :2000
    • LOG ICOMCONFIG
    • SAVECONFIG

Configuring radios for RTK

For both the base station and the rover:

  • Connect serial cable between the PC and the radio transceiver
  • Open serial connection with baudrate of 9600, 8 bits, no parity, 1 stop bit
  • Press the CFG button on back of transceiver and apply power
    • Only blue power LED should be lit
    • Serial terminal should say “NO CARRIER OK”
  • Type ATS102=0 and press Enter
    • ATS102=0 - sets the baudrate to 230400bps
  • Type ATS103=3 and press Enter
    • ATS103=3 - sets RF rate to 230400bps

For the base station kit (Tx):

  • Type AT&F6 and press Enter
    • AT&F6 - configures the radio as the transmitter
  • Type AT&WA and press Enter
    • AT&WA - saves the configuration to NVM and goes online
  • Red Tx LED should be lit

For the rover kit (Rx):

  • Type AT&F7 and press Enter
    • AT&F7 - configures the the radio as the receiver
  • Type AT&WA and press Enter
    • AT&WA - saves the configuration to NVM and go online
  • Green Rx LED should be lit
  • Blue RSSI LEDs should be lit, meaning it and the transmitter are connected
Configuring the base station for RTK
  1. Connect the radio to the COM2 port
  2. Open Novatel Connect and connect to the sensor over the serial port, for connection type select “Serial”
  3. In Novatel Connect enter the following commands

    • FIX POSITION [LAT] [LON] [HEIGHT]
      • Ensure position is fixed properly by issuing the command LOG BESTPOS ONCE and ensuring it returns SOL_COMPUTED, and not INVALID_FIX
        • An invalid fix will prevent RTK corrections from being transmitted
      • The latitude, longitude, and height are reported within Novatel Connect
    • SERIALCONFIG COM2 230400 N 8 1 N ON
    • INTERFACEMODE COM2 NONE NOVATELX OFF
    • LOG COM2 NOVATELXOBS ONTIME 1
    • SAVECONFIG

To verify the unit is sending valid correction information you can check that the red Tx light on the transceiver blinks roughly every 1 second.

Configuring the rover for RTK
  1. Connect the radio to the COM2 port
  2. Open Novatel Connect and connect to the sensor over the serial port, for connection type select “Serial”
  3. In Novatel Connect enter the following commands

    • SERIALCONFIG COM2 230400 N 8 1 N ON
    • INTERFACEMODE COM2 NOVATELX NONE OFF
    • SAVECONFIG

To verify the unit is sending valid correction information you can check that the red Tx light on the transceiver blinks roughly every 1 second.

You may also enter the command below to check the status. If the rover is working in RTK mode you expect to see SOL_COMPUTED - LOG RTKPOS ONCE

Configuring the ECU

Linux network set up

The Ethernet network must be properly configured before PolySync can communicate with the sensor on the target ECU.

It’s highly recommended to use point-to-point Ethernet communication between the sensor and the ECU to lower the latency. You may connect the sensor to a switch but may be prone to high latency.

Setting the ECUs static IP address

Once the sensors IP address is known, set a static IP address for the ECUs NIC in the same IP subnet range as the sensor.

For example if the sensor’s IP address is 192.168.2.201, it’s said to be on the 192.168.2 subnet, and the ECU should be configured with IP address 192.168.2.X.

Configuring the PolySync driver

The default PolySync Configurator configuration has shown to work out of the box on most systems.

Adding the sensor to the SDF

Using the Configurator tool, add a sensor node to the SDF.

The Novatel OEM6 ‘Node Interface’ name is novatel-oem6.

Validating the sensor is properly configured

If you’re approaching a new PolySync system or need to validate an existing configuration you can use the following check to ensure the sensor is properly configured.

Set up checklist

If the sensor passes this checklist then the PolySync dynamic driver will likely be able to communicate with the sensor.

  1. Ensure you can ping the sensor at the static IP address
    • Get the IP address from the Configurator node entry
      • $ ping xxx.xxx.xxx.xxx
      • 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=64 time=0.030 ms
      • ...
  2. Ensure you can receive valid data using Novatel Connect
  3. Run the dynamic driver test interface

Starting the PolySync driver

The configuration set in the Configurator is loaded from the SDF when the dynamic driver starts. It connects to the sensor through Ethernet socket, requests the data, and waits for confirmation that the sensor configuration is valid.

When the dynamic driver receives the first packet of data, it begins processing and abstracting the data from the OEM data structure in a high-level hardware agnostic message type. In this case the data is placed in a ps_platform_motion_msg.

  1. Power the sensor and ECU on
  2. Optionally follow the set up checklist
  3. Start the PolySync Core manager
    • $ sudo service polysync-core-manager start
  4. Start the dynamic driver process

Starting the node manually on the command line

To start a dynamic driver node on the command line, the node must first be defined in the SDF using the Configurator application.

Each node defined in the Configurator has a unique node ID which points to the nodes configuration. This article explains how to find the node ID.

Command line flags and usage

Once the node ID is known (substitute for X), the dynamic driver node for the supported sensor can be started with the base command:

$ polysync-core-dynamic-driver -n X

Each sensor supports an array of command line arguments. To see a full list of command line arguments, pass the -h help flag:

$ polysync-core-dynamic-driver -n X -h  |  less

There’s a lot of output so we recommend you pipe the output to less, but it’s not required.

Flag Required Description Arguments
-d No Print debug information and raw sensor data to stdout
-e No Export a JSON support string describing the interface, used by the SDF configuration tool N/A
-h No Show the help message N/A
-i <pal.so> No Use provided PAL interface file instead of what is stored in the SDF Path to the dyanmic driver interface PAL shared object library
-n <N> Yes SDF node configuration identifier for the node SDF node ID from the Configurator, [0-65536]
-o No Reserved N/A
-O No Check the node SDF configuration for required updates and exit option, returns exit status zero if no changes are required
-p <file.plog> No Use provided logfile in Record and Replay operations instead of the default File path to a PolySync plog logfile
-s <psync.sdf> No Use provided SDF instead of the default File path to an SDF file
-t No Run through the test interface to validate the configuration, the node will return after running the test
-u No Allow updates to the SDF configuration during the normal runtime if needed (does not exit) N/A
-U No Update the node SDF configuration and exit N/A
-w No Disable the hardware interface(s), allowing the node to run without hardware connected - also known as replay mode N/A
DTC codes and common fixes
DTC value DTC name Fault description Notes
304 DTC_NOINTERFACE Interface not available Activated when the sensor is not reachable at the IP address set in the Configurator; activated when the sensor becomes unreachable during runtime

Accessing sensor data

When the dynamic driver node is operating in an OK state then data is being published to the global PolySync bus, and any node can subscribe to the high-level message type(s) output by the dynamic driver node.

There are several tools that PolySync provides to quickly validate that data exists on the bus.

Access sensor data with PolySync nodes that subscribe to the sensor’s output message types.

Input / output message types

The Novatel OEM6 dynamic driver node outputs the following message types to the bus.

Message API Docs Notes
Publishes the ps_gps_msg Sensor Data Model This message type is not published to the PolySync bus by default, but can be enabled in the SDF. It provides the best GPS estimate of vehicle position using the native PDPPOS message type
Publishes the ps_imu_msg Sensor Data Model This message type is not published to the PolySync bus by default, but can be enabled in the SDF. It provides the best IMU estimate of vehicle pose from the native message INSPVAS. It typically published at a much higher frequency then the fused ps_platform_motion_msg
Publishes the ps_platform_motion_msg Sensor Data Model This message is published by default and provides longitude, latitude, heading, position and orientation. It is a fused estimate from BESTPOS based on the Novatel GPS and IMU unit as well as some other native messages including BESTXYZ for position. This is typically the only message type necessary, but is published at a lower frequency than ps_imu_msg

ps_platform_motion_msg fields

Data type Name Description Message field populated by this sensor
ps_msg_header header PolySync message header. Yes
ps_sensor_descriptor sensor_descriptor Sensor descriptor. Yes
ps_timestamp timestamp Sample timestamp. Yes
ps_native_timestamp native_timestamp Native timestamp for the motion data sample. Provided by some devices. Check ps_native_timestamp.format for meaning. Format value PSYNC_NATIVE_TIMESTAMP_FORMAT_INVALID means not available. Yes
DDS_double position [3] Position. Value PSYNC_POSITION_NOT_AVAILABLE means given axis component not available. [xyz meters] Yes
DDS_double orientation [4] Orientation quaternion. Value PSYNC_ORIENTATION_NOT_AVAILABLE means given axis component not available. [xyzw quaternion] Yes
DDS_double rotation_rate [3] Rotation rate. Value PSYNC_ROTATION_RATE_NOT_AVAILABLE means given axis component not available. [xyz radians/second] Yes
DDS_double velocity [3] Velocity. Value PSYNC_VELOCITY_NOT_AVAILABLE means given axis component not available. [xyz meters/second] Yes
DDS_double acceleration [3] Acceleration. Value PSYNC_ACCELERATION_NOT_AVAILABLE means given axis component not available. [xyz meters/second^2] No
DDS_double heading Heading angle, 0 radians equals North. Value PSYNC_HEADING_NOT_AVAILABLE means not available. [radians] Yes
DDS_double latitude Latitude. Value PSYNC_LATITUDE_NOT_AVAILABLE means not available. [radians] Yes
DDS_double longitude Longitude. Value PSYNC_LONGITUDE_NOT_AVAILABLE means not available. [radians] Yes
DDS_double altitude Longitude. Value PSYNC_ALTITUDE_NOT_AVAILABLE means not available. [meters] Yes

ps_imu_msg fields

Data type Name Description Message field populated by this sensor
ps_msg_header header PolySync message header. Yes
ps_sensor_descriptor sensor_descriptor Sensor descriptor. Yes
ps_timestamp timestamp Sample timestamp. Yes
ps_native_timestamp native_timestamp Native timestamp for the motion data sample. Provided by some devices. Check ps_native_timestamp.format for meaning. Format value PSYNC_NATIVE_TIMESTAMP_FORMAT_INVALID means not available. Yes
DDS_double orientation [4] Orientation quaternion. Value PSYNC_ORIENTATION_NOT_AVAILABLE means given axis component not available. [xyzw quaternion] Yes
DDS_double rotation_rate [3] Rotation rate. Value PSYNC_ROTATION_RATE_NOT_AVAILABLE means given axis component not available. [xyz radians/second] Yes
DDS_double velocity [3] Velocity. Value PSYNC_VELOCITY_NOT_AVAILABLE means given axis component not available. [xyz meters/second] Yes
DDS_double acceleration [3] Acceleration. Value PSYNC_ACCELERATION_NOT_AVAILABLE means given axis component not available. [xyz meters/second^2] No

ps_gps_msg fields

Data type Name Description Message field populated by this sensor
ps_msg_header header PolySync message header. Yes
ps_sensor_descriptor sensor_descriptor Sensor descriptor. Yes
ps_timestamp timestamp Sample timestamp. Yes
ps_native_timestamp native_timestamp Native timestamp for the motion data sample. Provided by some devices. Check ps_native_timestamp.format for meaning. Format value PSYNC_NATIVE_TIMESTAMP_FORMAT_INVALID means not available. Yes
DDS_double heading Heading angle. Zero radians equals North. Value PSYNC_HEADING_NOT_AVAILABLE means not available. [radians] Yes
DDS_double latitude Latitude. Value PSYNC_LATITUDE_NOT_AVAILABLE means not available. [radians] Yes
DDS_double longitude Longitude. Value PSYNC_LONGITUDE_NOT_AVAILABLE means not available. [radians] Yes
DDS_double altitude Longitude. Value PSYNC_ALTITUDE_NOT_AVAILABLE means not available. [meters] Yes
DDS_double speed Speed over ground. Value PSYNC_VELOCITY_NOT_AVAILABLE means not available. [meters] Yes
octet satellite_count Number of satellites. Yes
ps_gps_fix_kind fix Fix kind. Value GPS_FIX_NONE means no fix. Yes

Filtering incoming data for this sensor

An application that subscribes to a given message type is able to see data from more than one sensor or source.

Applications can filter for specific sensors and data sources in the message callback in C applications, or the messageEvent in C++ applications.

Filter incoming messages for this sensor with ps_sensor_kind value 380.

You can find all sensor descriptor values in this article.

Resources and configuration tools

This section has supporting resources and tools that are referenced throughout the article.

Novatel Connect

To configure the sensor you must download and install the Novatel Connect software for the Windows Operating System.