Supported Sensors

Swift Navigation Piksi Multi


Supported hardware versions

The driver interface communicates with the-Swift Navigation Piksi Multi-through the serial interface. SwiffNav supplies a console interface that can be used to set its IP address, change device settings and perform firmware updates.

Manufacturer Swift Navigation
Hardware ID Driver supports Piksi V1
Firmware version(s) supported Firmware: v1.0.A
SDK version supported N/A

Sensor requirements and background

Piksi Multi’s high-precision RTK GNSS provides the unprecedented flexibility to tailor features to specific uses—like automated vehicle heading—providing improved monitoring accuracy and more effective robotics systems control. Standard GPS solutions provide accuracy of 2m which is not sufficient for autonomous vehicle safety. Piksi Multi delivers the centimeter-level accuracy you require.

Sensor notes

Hardware requirements

  • 12V power requirements
    • Piksi Multi GNSS Module: 5 to 15 V DC
    • Piksi Multi Evaluation Board: 8 to 42 V DC
    • Swift Navigation recommends variety of consumer products that are both widely available and convenient for powering the device
  • An ECU with a serial port or a USB to Serial Adapter
  • ECU with PolySync Core installed

Configuring the sensor

If you sensor is powered and connected you should see Tracking C/N0 data.

Swift Console initial screen

Set a static IP address (optional)

  • Follow the network configuration step to set a static IP address for the ECUs NIC
  • Connect to the Swift Navigation Piksi Multi using console as described in the Configuring the sensor section
  • Select the settings tab
    • click ip addreess
    • In the right pane enter your IP address in the Value field

Swift Console

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 Swift Navigation Piksi Multi ‘Node Interface’ name is swiftnav-piksi-multi.

Configuration parameters

The only parameter that needs to be set is the Serial Device 0 Name in the SDF Configurator IO Configuration section.

Default configuration

The values in the default configuration are set by the sensors firmware.

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 checklist to ensure the sensor is properly configured.

Set up checklist

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

  1. Ensure you can connect to the sensor’s serial port with console as described in the Configuring the sensor section

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 the serial port, 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 data is placed in a ps_gps_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
-h No Show the help message N/A
-o No Reserved N/A
-w No Disable the hardware interface(s), allowing the node to run without hardware connected - also known as replay mode N/A
-r <N> No SDF runtime configuration key that specifies the domain to operated under, the default domain is used otherwise Runtime configuration key, [0-65536]
-n <N> Yes SDF node configuration identifier for the node SDF node ID from the Configurator, [0-65536]
-i <> No Use provided PAL interface file instead of what is stored in the SDF Path to the dyanmic driver interface PAL shared object library
-e No export a JSON support string describing the interface, used by the SDF configuration tool N/A
-u No Allow updates to the SDF configuration during the normal runtime if needed (does not exit) N/A
-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 Update the node SDF configuration and exit N/A
-O No check the node SDF configuration for required updates and exit option (returns exit status zero if no change required) N/A
-d No enable additional debugging output in the interface 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 serial port 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 Swift Navigation Piksi Multi dynamic driver node outputs the following message types to the bus.

Message API Docs Notes
Publishes pre-defined ‘ps_gps_msg’ Sensor Data Model

By default the ps_gps_msg is published to the bus when you create a new Swift Navigation Piksi Multi node. You can enable and disable the publishing of specific message types in the Configurator.

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

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.

Useful Swift Navigation Resources