Config
SentiNAV Standalone uses a YAML configuration system.
Naming conventions
SentiNAV Standalone fuses GNSS and IMU data. In the config we use the following naming convention
moving_base: This is the main GNSS receiver which should transmitPosition,Fix,DOPandRFISTATUS.rover: Secondary GNSS receiver. Used to calculate heading. Should transmitRELPOS(relative position inNEDtomoving_base). Requiresmounting:r_ob_roverto be set (and be very accurate)imu: IMU unit.
Config parameters
use_full_ins: Use the full version of the INS filter (if false unfiltered GNSS data is used)extract_geoid_params: Extracts geoide parameters from the files "egm96_lat_data.csv", "egm96_lon_data.csv" and "egm96grid_data.csv". If true, those files must be in the same directory as the SentiNAV executable and this allows SentiNAV to estimate height over mean sea level.time_resolution: nanosecond/microsecond/millisecond/hundredsecond time resolution used in the nmea output of the filtermax_roll_deg: Maximum legal roll of the vehicle. If the filter estimates roll above this threshold it assumes something is wrong and re-initializes.max_pitch_deg: Maximum legal pitchmax_vertical_velocity: maximum vertical (z-direction) velocity [m/s]max_covariance_norm: Maximum norm of the position covariance in dead reckogning before re-initialising the filter.alignment_ned_velocity_threshold: For velocities under this threshold the vehicle can be assumed to be at rest. [m/s]alignment_ars_angular_velocity_threshold: Unusedfix_time_until_exit_idle: Required time with fix before initializing the filter [s]gnss_message_timeout: Time with no GNSS messages before assuming fix is lost [s]origin_local_ned_lat_lon_hei: origin of the local reference frame which some position estimates are relative to. See SentiProto for the output messagesimu_data_rate: IMU data rate. This is currently used to integrate the IMU measurements. Will be removed in a future release [hz]mounting: Specify mounting parameters for the sensors. SentiNAV expects:r_ob_rover,r_ob_mb,r_ob_imu. Those are the vectors from the sensors to the Center of Origin (CO) of the veihcle [m]-
tuning: The following are tuning parameters for SentiNAVacc_noise_density: [m/s/sqrt(s)]acc_vibration_scaling: []acc_bias_instability: [m/s²]acc_bias_scaling: []acc_misalignment_err: [rad]acc_scale_factor_err: [per cent decimal 0-1]T_bias_acc: [s]gyro_bias_init: [rad/s]gyro_noise_density: [rad/sqrt(s)]gyro_vibration_scaling: []gyro_bias_instability: [rad/s]gyro_bias_scaling: []gyro_misalignment_err: [rad]gyro_scale_factor_err: [per cent decimal 0-1]T_bias_gyro: [s]gyro_bias_init: [rad/s]
-
message_subscription_port: Here you must specify the local UDP port receveing the sensor data either fromSentiBoard 2.0orSentiUtils. message_outputs: Here you specify the desired outputs from SentiNAV. SentiNAV has three timers which schedules outputs. At1Hz,10Hzand100Hz. You can schedule a set of predefined output messages with one of the timers. Each message must also have a list of recipients specifed as[ip_address, port]. Supported output messages are:states:INSStatesinSentiProtoall_states:INSAllStatesinSentiProtocovariance:INSCovarianceinSentiProtopos_states:INSPosStatesinSentiProtovel_states:INSVelStatesinSentiProtorotvel_states:INSRotVelStatesinSentiProtorfi_states:INSRfiStatesinSentiProtoacc_states:INSAccStatesinSentiProtoatt_states:INSAttStatesinSentiProtonmea_gga: see Trimble for information onnmea-0183message formatnmea_zdanmea_rotnmea_hdtnmea prdidnmea_ins: custom nmea message with fields listed in nmea_insmavlink: Outputs navigation data asmavlinkpackages.
Tuning and mounting
To achieve the best possible performance from SentiNAV it is of the utmost importance that the configured mounting lever arms, IMU orientation parameters, and the IMU tuning parameteres match the actual mounting and IMU used on the vehicle.
A wrongly configured lever arm is just as detriemental to the navigtation estimate output that a badly synchronized data stream will be, hence you should either use CAD models or calibration software to accurately deteremine these config parameters.
Tip
For the IMUs listed in the Plug-and-Play parsing sections of SentiUtils we have available pre-set tuning parameters. Reach out to your SentiSystems Point-of-Contact for more information or help with determining your IMU's tuning parameters.
Example Config
This example config file can also be accessed here: config/sentinav_example_config.yaml
## SentiNAV configuration file
# EKF INS filter parameters
sentinav:
use_full_ins: true # Use full EKF INS. False = INS MVP
extract_geoid_params: true # Extract geoid params from files
time_resolution: microsecond
max_roll_deg: 30 # Max allowable roll (re-init if exceeded)
max_pitch_deg: 30 # Max allowable pitch
max_vertical_velocity: 3 # Max vertical velocity [m/s]
max_covariance_norm: 8000 # Max norm during dead reckoning
alignment_ned_velocity_threshold: 0.5 # Threshold for ALIGNMENT state
alignment_ars_angular_velocity_threshold: 0.5 # Threshold for ALIGNMENT
fix_time_until_exit_idle: 3
gnss_message_timeout: 10
gnss_mb_sensor_id: 0 # SensorID of MovingBase GNSS
imu_data_rate: 100 # Estimated IMU rate [Hz]
## Mounting
mounting:
r_ob_rover: [-4.854, 0.775, 0.0] # Lever arm from CO to rover antenna
r_ob_mb: [4.854, 0.775, 0.0] # Lever arm from CO to moving base
r_ob_imu: [-4.854, 0.0, 0.0] # Lever arm from CO to IMU
imu: [0, 180, 0] # IMU orientation relative body frame
## Tuning
tuning:
attitude_vector_measurement_scaling: 1.2
acc_noise_density: [0.001166667, 0.001166667, 0.001166667]
acc_vibration_scaling: 5
acc_bias_instability: [0.000490332, 0.000490332, 0.000490332]
acc_bias_scaling: 1.10
acc_misalignment_err: 0.0012
acc_scale_factor_err: 0.0002
T_bias_acc: 3600
acc_bias_init: [0.068646550, 0.068646550, 0.068646550]
gyro_noise_density: [0.000043633, 0.000043633, 0.000043633]
gyro_vibration_scaling: 5
gyro_bias_instability: [0.000001454, 0.000001454, 0.000001454]
gyro_bias_scaling: 1.10
gyro_misalignment_err: 0.0012
gyro_scale_factor_err: 0.0005
T_bias_gyro: 3600
gyro_bias_init: [0.001745329, 0.001745329, 0.001745329]
## Message Subscription Port
message_subscription_port: 3001
## Message Outputs
message_outputs:
- timer1hz:
- all_states:
- [127.0.0.1, 3000]
- imu_bias_states:
- [127.0.0.1, 3000]
- nmea_gga:
- [127.0.0.1, 40002]
- nmea_zda:
- [127.0.0.1, 40005]
- timer100hz:
- states:
- [127.0.0.1, 40000]
NMEA_INS
ID: $STINS
Field:
- UTC timestamp (same format as NMEA_GGA)
- Latitude
- Latitude direction (N/S)
- Longitude
- Longitude direction (E/W)
- GPS Quality indicator - same format as GGA
- Number of satellites in use - same format as GGA
- HDOP - same format as GGA
- Surge velocity
- Sway velocity
- Surge acceleration
- Sway acceleration
- Heading
- Rate of turn
- Roll angle
- Pitch angle
- Checksum