Supported Sensors

OxTS RT3000 Series

oxts-rt
V2.0.5-pr.5
Ethernet
320

Supported hardware versions

The driver interface communicates directly with the OXTS RT3000.

Manufacturer OXTS
Hardware RT3000

Sensor background and requirements

The RT3000 has three independent directions. By using 3 accelerometers and 3 angular rate sensors the RT3000 measures all aspects of motion. RT3000 is a Strapdown 6-axis Inertial Navigation System, meaning:

  • 3 linear accelerometers
  • 3 linear angular rate sensors (gyros)
  • Measures the complete motion, no assumptions
  • Strapdown: Inertial sensors do not rotate compared to the RT3000 case
  • Can be used on any type of vehicle
  • Can operate correctly at any orientation
  • GPS is used to “aid” the inertial measurements and prevent drift

Sensor Notes

  • The sensor must be mounted and calibrated before it’s connected to PolySync Core
  • PolySync Core requires the RT3000 to be configured in accordance with the RT 3000 user guide.

Hardware requirements

  • 12V power supply
  • Gigabit Ethernet connection to an ECU, or network switch
    • It’s strongly recommended to provide a direct connection from the GPS/IMU to the ECU
  • ECU with PolySync Core installed
  • CAN interface on the ECU, compatible with linuxcan or socketcan hardware drivers
  • For setup and calibration

Configuring the sensor

Install and calibrate the sensor per the OEM requirements.

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 GPS/IMU’s IP address is known, set a static IP address for the ECUs NIC in the same IP subnet range as the GPS/IMU.

For example if the GPS/IMU’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 OXTS RT 3000 ‘Node Interface’ name is oxts-rt.

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 GSP/IMU sensor.

  1. Ensure you can ping the sensor at the static IP address
    • Get the IP address from the Configurator node entry, static IP address set in the preparing a sensor section
      • $ ping xxx.xxx.xxx.xxx
      • 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=64 time=0.030 ms
      • ...

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 an 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 GPS/IMU 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
-e No Export a JSON support string describing the interface, used by the SDF configuration tool
-h No Show the help message
-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
-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
-u No Allow updates to the SDF configuration during the normal runtime if needed (does not exit)
-U No Update the node SDF configuration and exit
-w No Disable the hardware interface(s), allowing the node to run without hardware connected - also known as replay mode
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 OXTS RT3000 dynamic driver node outputs the following message types to the bus.

Message API Docs Notes
Publishes pre-defined ps_platform_motion_msg Sensor Data Model Published to the PolySync Core bus by default
Publishes pre-defined ps_imu_msg Sensor Data Model Not published to the PolySync Core bus by default
Publishes pre-defined ps_gps_msg Sensor Data Model Not published to the PolySync Core bus by default
Publishes pre-defined ps_imu_accuracy_msg Sensor Data Model Published to the PolySync Core bus by default
Publishes pre-defined ps_gps_accuracy_msg Sensor Data Model Published to the PolySync Core bus by default

Platform motion message 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] Yes
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

IMU message 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] Yes

GPS message 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 320.

You can find all sensor descriptor values in this article.

Useful OXTS RT3000 Resources

Sensor overview and user manuals