Supported Platforms | |
Platform | Duro Inertial |
Firmware | ≥ 2.1.21 |
Overview
Duro Inertial is a ruggedized version of Swift Navigation’s Piksi® Multi dual-frequency Real real-time kinematics (RTK) GNSS receiver, including inertial sensor fusion algorithm, which combines GNSS and inertial measurements into an unified solution. The combination of GNSS and inertial measurements allows Duro Inertial to provide highly accurate, continuous position solutions during brief GNSS outages and to deliver robust precision navigation solutions in harsh GNSS environments.
This document describes Duro Inertial with firmware version 3.0. The INS settings and IMU sensors alignment process have significantly changed between firmware versions 2.4 and 3.0. For the older firmware, use Duro Inertial User Manual v1 (UM-110008-01).
About this Manual
Every effort has been taken to ensure the accuracy of the contents of this manual. This manual is based on Duro Inertial firmware version 3.0.11. In case of differences between the manual and the product, use the information from the product.
Prerequisites
This document describes the installation, configuration, and operation of features specific to Duro Inertial. Users should be familiar with the information contained in the Duro User Manual before following this guide.
System Architecture
Typical Duro Inertial system setup is shown on the diagram depicted below. The product is able to combine real time GNSS observables from a base and a rover as well as motion sensed by the MEMS IMU in the product into one Fused RTK GNSS + INS position, velocity, attitude, and time solution (PVAT).
Installation
For proper Duro Inertial operation, it is essential to mount both the Duro Inertial and the GNSS antenna securely and firmly to the vehicle body. During operation, the antenna and Duro Inertial must remain in the same position relative to each other (i.e., both must be mounted on the same frame).
GNSS Antenna Mounting
For the best signal reception, mount the GNSS antenna on a stable structure located away from other antennas and devices.
The GNSS antenna should be mounted completely externally. Do not place the GNSS antenna inside, or partially inside, of a housing or vehicle.
The GNSS antenna should have the best achievable sky view, in all directions, down to the horizon. Do not shield orocclude any portion of the antenna. The GNSS antenna is sensitive to its environment. Since producing high-accuracy GNSS position solutions requires tracking carrier phase information from satellites, it is much more sensitive to obstructions than standard consumer GNSS receivers (like those found in smartphones and handhelds). All antenna offset measurements should be taken to the phase center of the GNSS antenna.
Duro Inertial Mounting
In order to properly detect motion, Duro Inertial must be securely and firmly mounted to the vehicle. Mounting Duro Inertial on the vehicle centerline is recommended.
To maximize sensor sensitivity, mounting Duro Inertial in an orientation orthogonal to the vehicle body is recommended. This means that Duro Inertial should be mounted with all three axes forming angles in multiples of 90° (0°, 90°, 180°, 270°), with respect to the primary direction of vehicle motion. For easier installation and setup, it is recommended to align the X axis direction of the Duro Inertial with the primary direction of vehicle motion.
Duro Inertial must be rigidly mounted to the body of the vehicle. Any vibration which is not directly related to vehicular motion will degrade the quality of the inertial data. Installing Duro Inertial on a flexible vehicle rooftop, engine cover, or fender – where the mounting surface can flex and vibrate independently of the vehicle body – should be avoided. Similarly, placing the sensor on plush seating of a vehicle with the antenna on the rigid part of the vehicle will yield poor results. Ensure that the Duro Inertial enclosure is on the same rigid body as the GNSS antenna. Some suspension systems may isolate the chassis from the cab and if the antenna moves when the Duro Inertial does not it will degrade results. When installing the device inside a vehicle, directly mounting it to the vehicle chassis is recommended. Ideally, Duro Inertial should be mounted rigidly to the vehicle’s inertial mass, directly above the center of rotation (i.e the pivot point).
A straightforward approach to installing Duro Inertial is to mount it on a rigid surface, located on the top of the vehicle, with the GNSS antenna attached to the receiver using an included bracket. This approach is demonstrated in Figure 2. Mounting the GNSS antenna directly on the top of the receiver improves performance and makes setup easier. In this configuration, there is no need to measure the antenna lever arm – the default antenna offset settings can be used.
If it is impractical to mount the entire Duro Inertial system on the top of a vehicle, mounting the Duro Inertial enclosure and GNSS antenna to the same rigid body, while minimizing the distance between them, is recommended. Ideally, the GNSS antenna should be mounted directly above Duro Inertial – with the antenna and enclosure both mounted on the vehicle centerline. On passenger vehicles, practical mount points for the Duro Inertial enclosure may include: the spare tire bay, the seat support rails, and the floor of the vehicle chassis.
Antenna Offset
After installing the GNSS antenna and Duro Inertial on the vehicle, the antenna offset needs to be measured. The antenna offset consists of X, Y, and Z components which should be measured along Duro Inertial’s X, Y, and Z axes (i.e. within the device frame) from Duro to the antenna. The “Device Frame” is the reference frame aligned with the markings on the Duro Inertial enclosure. These values will need to be provided to the device firmware settings during the configuration step.On Duro Inertial, the device frame reference point is the intersection of the reference mark from the top of the enclosure and the bottom surface of Duro Inertial (see Figure 3). The orientation of the device frame is shown in Figure 4. Note, the Z-axis is defined to be in the “down” direction.
Distance value in the marked direction of the axis will have a positive sign. The value in the opposite direction will have a negative sign. Distances should be measured in meters, with 1 cm accuracy, from the Duro Inertial reference point to the phase center of the GNSS antenna.
The phase center of the GPS500 GNSS mini-survey antenna included in the Duro Inertial Starter Kit is located at the center of the antenna, 50 mm above the bottom of the antenna mount (middle point between L1 and L2 phase centers).
Use the Duro Inertial Vehicle Profile Worksheet provided in Appendix C to write down antenna offset measurements taken on the vehicle for future reference.
Vehicle Frame Orientation
In addition to the antenna offset, the vehicle frame orientation should be measured. Entering proper orientation to the Duro Inertial firmware settings is essential for a correct navigation output.\ To obtain yaw, pitch, and roll angles for the orthogonal mounting, refer to Appendix B – Duro Inertial Orientations, and use the values which match your installation. One way to think of the vehicle frame orientation is the rotations required to make the axis of the vehicle frame align with the axis marked on Duro. Use the Duro Inertial Vehicle Profile Worksheet provided in Appendix C to record vehicle frame orientation values for future reference. The vehicle frame, and the pitch roll and yaw orientation directions, are defined according to the diagram below, where z is defined into the page (down).
Configuration
For proper operation, and the best performance, Duro Inertial firmware needs to be configured correctly. Duro Inertial has all applicable settings for Piksi Multi and Duro in addition to the Duro Inertial specific settings in the “ins” (inertial navigation system) settings grouping. Follow the instructions below to setup Duro Inertial firmware.
Firmware Version
Duro Inertial requires Piksi Multi firmware v2.1.21 or newer. The latest firmwa re can be downloaded from the Carnegie Robotics Support portal (https://carnegierobotics.com/support).
Default Configuration
By default, Duro Inertial is configured to be used with the Swift GNSS mini-survey antenna mounted directly to the DuroInertial enclosure and with X axis pointing forward. However, the INS fusion output is disabled by default to avoid outputting position solutions from a possibly incorrectly configured system.
To view IMU and INS configuration:
- Connect to Duro Inertial via Swift Console
- Select the Settings tab
- Locate the IMU and INS settings group
Firmware Settings
There are a number of firmware settings which directly affect the behavior of Duro Inertial. These are detailed in the tables below. Device settings can be configured via Swift Console on the Settings tab or directly via SBP messages.
IMU Settings
IMU settings control range and output rate from inertial sensors.
Settings Group: IMU | ||||
Name | Units | Accepted Values | Default Value | Description |
acc_range | g | 2, 4, 8, 16 | 8 | Acceleration sensor range |
gyro_range | deg/s | 125, 250, 500, 1000, 2000 | 125 | Angular rate sensor (gyroscope) range |
imu_rate | Hz | 25, 50, 100, 200 | 100 | IMU raw output data rate |
imu_rate_output | n/a | True, False | False | Enable/Disable IMU raw data output |
Notes
- Gyroscope and Accelerometer ranges (acc_range, gyro_range) should be adjusted for the dynamics of your application. In order to maintain the highest resolution of measurements, choose the smallest range which encompasses the dynamics of your application. However, keep in mind that your application may involve sudden, maximum dynamic changes which may not be typical or anticipated. These maximums should be used when selecting a scale for both accelerometer and gyroscope ranges.
- Duro Inertial does not use the magnetometer sensor and therefore, the mag_raw_output and mag_rate parameters do not need to be set.
- In order to use inertial navigation, imu_raw_output must be enabled and imu_rate must be set to 100 Hz.
- Remember to click the Save on Device button on the Swift Console Settings tab to store new values on the device.
INS Settings
INS settings control inertial navigation sub-system operation.
Settings Group: INS | ||||
Name | Units | Accepted Values | Default Value | Description |
antenna_offset_x |
m |
0 |
Distance along Duro Inertial X-axis from the reference point to the antenna phase center | |
antenna_offset_y |
m |
0 |
Distance along Duro Inertial Y-axis from the reference point to the antenna phase center | |
antenna_offset_z |
m |
-0.127 |
Distance along Duro Inertial Z-axis from the reference point to the antenna phase center | |
antenna_offset_deviation |
m |
> 0 |
0.05 |
Standard deviation of antenna lever arm measurement. Must be greater than 0. This value should overestimate the actual expected error. |
Settings Group: INS | ||||
Name | Units | Accepted Values | Default Value | Description |
dr_duration_max | s | >= 0 | 600 | Sets the maximum duration for which the inertial system will dead reckon |
dr_timeout_pos_stddev |
m |
> 0 |
20 |
Maximum estimated standard deviation of the INS position for which the inertial system will dead reckon |
fused_soln_freq |
Hz |
1, 2, 5, 10, 20 |
10 |
Fusion engine output data rate. This value can be different from the GNSS output rate (soln_freq). |
output_mode |
Disabled, Loosely Coupled |
Disabled |
Sets the operation mode of the inertial navigation system. Use “Loosely Coupled” mode to enable INS operation. | |
vehicle_frame_pitch |
deg |
-180 .. 180 |
0 |
Pitch angel representing rotation from vehicle frame to device frame. Rotations are performed extrinsically in the order roll, pitch, then yaw. |
vehicle_frame_roll |
deg |
-180 .. 180 |
0 |
Roll angle representing rotation from vehicle frame to device frame. Rotations are performed extrinsically in the order roll, pitch, then yaw. |
vehicle_frame_yaw |
deg |
-180 .. 180 |
0 |
Yaw angle representing rotation from vehicle frame to device frame. Rotations are performed extrinsically in the order roll, pitch, then yaw. |
vehicle_frame_deviation |
deg |
> 0 |
1.0 |
Standard deviation of misalignment measurement. Must be greater than 0. This value should overestimate the actual expected error. |
Notes:
- Enter antenna_offset_x/y/z and vehicle_frame_yaw/pitch/roll as they were measured after installation. The worksheet in Appendix C is a useful tool for determining these values.
- It is required to restart the device after changing INS output_mode (Click the Save on Device button on the Swift Console Settings tab to store new value before restarting).
- In addition to the basic settings described above, the INS group contains several advanced settings that can be used to tune the INS solution for the specific application.
- The INS settings have significantly changed between firmware v2.4 and 3.0. For the older firmware use Duro Inertial User Manual v1 (UM-110008-01).
- Remember to click the Save on Device button on the Swift Console Settings tab to store new values on the device.
Other Settings
All other Duro Inertial settings (like ports, protocols, rates, etc.) are the same as a standard Duro GNSS-only receiver. Refer to the Duro User Manual for details about configuring data ports, protocols, message rates, etc.
RTK Corrections
For the most precise and accurate position output, Duro Inertial should operate in RTK mode. Select and configure an RTK correction source in the same manner as a GNSS-only Duro. Refer to the Duro User Manual and support articles onthe Carnegie Robotics Support Portal (https://carnegierobotics.com/support) for details.
Operation
With the INS system enabled, Duro Inertial will provide enhanced position output, including Dead Reckoning (DR) mode. Additionally, the contents of several messages will include status information about the INS. Duro Inertial requires a valid GNSS solution to initialize (align) the inertial subsystem. After the first valid GNSS solution, Duro Inertial needs to be driven forward to perform the IMU alignment before it’s able to aid GNSS in precise positioning through challenging environments (like tree foliage and urban canyons) and to provide navigation solutions during brief GNSS outages (such as overpasses and short tunnels). Since the inertial sensors output drifts over time, resulting in decreased position accuracy, the DR mode operation is time-limited by the dr_duration_max and dr_timeout_pos_stddev setting (see settings in the section above).
Alignment Process
The Duro Inertial needs to perform an alignment procedure before it can provide positioning assistance to the system. The alignment process will begin once the following conditions are met:
- The position standard deviation reported by the GNSS Engine is less than 30 m
- The velocity standard deviation reported by the GNSS Engine is less than 1 m/s
- Straight-line forward movement occurs at a speed above 5 m/s (18 km/h, or 12 MPH) Alignment should typically complete within a distance of 20 to 50 m if the sky visibility remains good during the initialization phase.
Notes:
- The alignment and calibration constants are not retained through power cycles. Alignment process is required after each device power up or reset.
- The v3.0 firmware requires alignment to be performed while driving forward. The INS fusion will produce an incorrect output if alignment is done while driving in reverse direction.
- The minimum alignment speed is configurable by the alignment_cog_min_speed_meters_per_second setting. Lowering the value decreases alignment accuracy so it should be kept as high as possible.
LED Indicators
Duro Inertial uses front panel LEDs to indicate when the INS is operational and the output position is computed using both GNSS and inertial subsystem. Purple lights for the POS LED indicate that INS is in use. Refer to the LED description table below for detailed information.
Note: After power up, POS, LINK, and MODE LEDs will blink white, indicating the boot-up process has completed.
Device Data Output
Duro Inertial is capable of providing output in Swift Binary Protocol (SBP) and industry standard NMEA 0183 protocol over UART and Ethernet ports. When INS is enabled, messages in both protocols will provide additional data described below.
SBP Messages
The subset of Swift Binary Protocol messages directly related to Duro Inertial operation are highlighted in the tables below. When using Duro Inertial, you may need to adjust the enabled_sbp_messages setting for the interfaces you use to communicate with the device. This setting is a comma-separated list of message IDs (in decimal) that will be emitted on each interface. By default, the enabled_sbp_messages setting does not include any of the inertial-specific messages. The following position mode values are reported in the “Fix Mode” field in the Status Flags (refer to the SBP protocol specification for more information):
- 0 No fix
- 1 Single Point Position (SPP)
- 2 Differential GNSS (DGNSS)
- 3 Float RTK
- 4 Fixed RTK
- 5 Dead Reckoning
- 6 SBAS
Additionally, the “Inertial Navigation Mode” field will contain INS status:
- 0 INS was not used to compute position
- 1 INS was used to compute position
Position Messages | ||
Message | Message ID | Notes |
SBP_MSG_POS_LLH | 522 | |
SBP_MSG_POS_LLH_COV | 529 | Message is not enabled by default. |
SBP_MSG_POS_ECEF | 521 | Message is not enabled by default. |
SBP_MSG_POS_ECEF_COV | 532 | Message is not enabled by default. |
SBP_MSG_POS_LLH_ACC | 536 | Message is not enabled by default. |
Velocity Messages | ||
Message | Message ID | Notes |
SBP_MSG_VEL_NED | 526 | |
SBP_MSG_VEL_NED_COV | 530 | Message is not enabled by default. |
SBP_MSG_VEL_ECEF | 525 | Message is not enabled by default. |
SBP_MSG_PVEL_ECEF_COV | 533 | Message is not enabled by default. |
Orientation Messages | ||
Message | Message ID | Notes |
SBP_MSG_ORIENT_EULER | 545 | Message is not enabled by default. Only produced when INS is enabled. |
Status Messages | ||
Message | Message ID | Notes |
SBP_MSG_INT_STATUS | 65283 | Message is not enabled by default. Only produced when INS is enabled. |
Refer to the SBP protocol specification for message content details.
NMEA Messages
Following NMEA 0183 messages contain Dead Reckoning status information. NMEA messages do not contain orientation nor other INS specific information.
NMEA 0183 Messages | |
Message | Notes |
GGA |
Quality Indicator:
0 – No fix 1- Single Point Position (SPP) 2 – DGNSS or SBAS 4 – Fixed RTK 5 – Float RTK 6 – Dead Reckoning |
GLL RMC VTG |
Mode Indicator:
N – No fix A – Autonomous fix D – DGNSS or SBAS E – Dead Reckoning (Estimated) F – Float RTK R – Fixed RTK |
Known Issues
- Position Valid (PV, pin 17 on the AUX connector) does not go high during Dead Reckoning.
Appendix A – Identifying Duro Inertial
Duro Inertial receivers can be identified in following ways:
- Duro Inertial has a product name and part number located on the bottom of the enclosure.
Product Duro® Inertial Duro® Part Number 00759-01 and 00759-02 00522-01 product_id “Duro Inertial” “Duro” - The product_id read-only setting reflects the product ID. This setting exists in the system_info group in the settings interface that can be accessed via the Swift Binary Protocol API or the Swift Console program
Appendix B – Duro Inertial Orientations
Use the pictures below to determine Duro Inertial orientation angles in your vehicle installation. Angles are in degrees.
Appendix C – Duro Inertial Installation Worksheet
Print and use this form to record Duro Inertial installation details and measurements. Antenna offset and vehicle frame rotation need to be entered to firmware settings for proper system operation.
General | |
Date | |
Vehicle Name | |
Duro Inertial S/N |
Antenna Offset (measured along X/Y/Z axis of Duro after installation, from Duro to antenna) | ||
X | Degrees | |
Y | Degrees | |
Z | Degrees | |
Deviation | Degrees |
Vehicle Frame Rotation | ||
Yaw (Z) | Degrees | |
Pitch (Y) | Degrees | |
Roll (X) | Degrees | |
Deviation | Degrees |
Appendix D – Device and Vehicle Frames
The three Euler-angle settings for configuring the Device frame orientation with respect to the vehicle frame orientation represent three extrinsic rotations in the order roll, pitch, and yaw. For example, a rotation matrix that can be used to rotate a vector from the device frame (i.e a velocity in the Duro Inertial frame X-direction) to the Vehicle Frame, can be represented as follows:
Extrinsic rotations are defined as rotations about the body where the body does not move. Similarly, the Quaternion and Euler angle output from the device describe the orientation of the Vehicle Body Frame with respect to the Navigation frame in real time. The euler rotations should be applied intrinsically in the order yaw, pitch, and roll in order to rotate from a frame aligned with the local-level NED frame to the vehicle body frame. Mathematically, it can be shown that this description of the real time Euler angles is equivalent to an Extrinsic rotation in the order roll, pitch, yaw to rotate the vehicle frame into the local level NED frame. The equations below can be used to relate the Euler angles reported in MSG_ORIENT_EULER to the Body velocities reported in MSG_VEL_BODY, to the Navigation velocities reported in MSG_VEL_NED. The vehicle body frame is defined according to Figure 6.
Glossary | |
Term | Description |
Antenna Offset | Three-dimensional distance between Duro Inertial and GNSS Antenna |
Device Frame | The reference frame aligned with the XYZ axis markings on Duro Inertial |
DR | Dead Reckoning |
Dead Reckoning | Position computation method where the current position is computed based on a prior known position and an estimated movement |
Firmware | Embedded software running on electronic device |
Fix | Valid position |
DGPS, DGNSS | Differential GPS/GNSS |
GNSS | Global Navigation Satellite System mainly including GPS, GLONASS, BeiDou (BDS), and Galileo satellite systems |
IMU | Inertial Measurement Unit |
INS | Inertial Navigation System |
Lever Arm | Three-dimensional distance between Duro Inertial reference point and GNSS antenna phase center |
Loosely Coupled | Navigation technique that takes GNSS position data and combines it with inertial sensor measurements for a unified output |
MPH | Miles Per Hour |
Phase Center | Point inside the GNSS antenna for which position is calculated |
Piksi Multi | Swift Navigation RTK GNSS receiver module included in Duro Inertial |
RTK | Real Time Kinematic |
SBAS | Satellite-Based Augmentation System |
SBP | Swift Binary Protocol – Swift Navigation’s proprietary protocol |
SPP | Single Point Position |
Swift Console |
Graphic User Interface (GUI) program providing visual representation of what’s happening inside GNSS receivers. Console displays information and allows the user to adjust the settings on the hardware. Available for Windows, MacOS, and Linux |
Tracking | Receiving signals from GNSS satellites |
Vehicle Frame | The reference frame is aligned with the XYZ axis of the vehicle. X-axis is usually facing forward, Y to the right, and Z down. |
Additional References | |
Name / Link | Notes |
Swift Binary Protocol | The fundamental API and communication interface of Swift receivers is SBP |
Swift Console | The Swift Console has helpful desktop software for evaluation and configuration of the receiver |
Duro User Manual & Duro Specifications | The features of the Duro Inertial Enclosure (dimensions, drawings, connectors, interfaces) are shared with the Duro and are documented in the Duro User Manual. |
FAQ
- Q: Can I use the Duro Inertial with older firmware versions?
- A: For firmware versions prior to 3.0, refer to the older user manual v1 (UM-110008-01) for correct INS settings and IMU sensors alignment process.
Documents / Resources
![]() |
Swift Navigation Duro Inertial Is a Ruggedized Version [pdf] User Manual Duro Inertial, Duro Inertial Is a Ruggedized Version, Duro Inertial, Is a Ruggedized Version, Ruggedized Version, Version |