From PaparazziUAV
Revision as of 14:28, 15 March 2021 by Pietro (talk | contribs) (added ekf2 section on INS)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

INS subsystem

The INS (Inertial Navigation System) subsystem specifies which position and velocity estimation algorithm you are using.

Most of the INS filters are only providing position and speed, and they need to be used together with an AHRS (Attitude and Heading Reference System) filter for attitude. Currently, only the experimental invariant filter is a full INS.

Currently possible INS subsystem types are:

Type Point Type Firmwares Notes
ekf2 floating all external
alt_float floating fixedwing
gps_passthrough all
xsens all external
xsens700 all external
no_type all
Horizontal Filter Float (hff) floating
extended floating? all
vectornav all external
float_invariant floating all

e.g. for the extended filter:

File: conf/airframes/myplane.xml
  <firmware name="fixedwing or rotorcraft">
    <subsystem name="ins" type="extended"/>



ekf2 is an Extended Kalman Filter based on the Estimation and Control Library (ECL) from PX4. This filter is able to estimate at best:

  • Quaternion defining the rotation from North, East, Down local earth frame to X, Y, Z body frame
  • Velocity at the IMU - North, East, Down (m/s)
  • Position at the IMU - North, East, Down (m)
  • IMU delta angle bias estimates - X, Y, Z (rad)
  • IMU delta velocity bias estimates - X, Y, Z(m/s)
  • Earth Magnetic field components - North, East, Down (gauss)
  • Vehicle body frame magnetic field bias - X, Y, Z (gauss)
  • Wind velocity - North, East (m/s)

More information on the filter can be found at:

Compatible sensors

The most complete INS available on Paparazzi can be interfaced with a high number of sensors, to increase robustness and accuracy. Messages that can be fused in the filter are obtained from:

  • AGL sensor (e.g. mateksys_3901_l0x)
  • Barometer (e.g. MS5611 (SPI))
  • IMU (e.g. MPU6000)
  • Magnetometer (e.g. ST IST8310)
  • GPS (e.g. Ublox)
  • Optical Flow (e.g. mateksys_3901_l0x)

Optical Flow

Optical flow interface allows for robust and velocity estimation when the necessary conditions are met (close to ground, good lighting, good texture, no excessive speed etc.). Optical flow usage is ideal in combination with GPS as it takes over inaccurate dead reckoning when GPS signal is lost. To be sure that optical flow fusion is enabled when the sensor can perform optimally, the user can set several parameters that match the specifications of the used sensor. These parameters are:

File: conf/airframes/myplane.xml
  <firmware name="any">
    <subsystem name="ins" type="ekf2">
      <define name="INS_SONAR_MIN_RANGE"   value="0.08" description="AGL sensor minimum range in meters"/>
      <define name="INS_SONAR_MAX_RANGE"   value="3"    description="AGL sensor maximum range in meters"/>
      <define name="USE_RANGE_AID"         value="1"    description="If enabled uses radar sensor as primary AGL source, if possible"/>
      <define name="INS_FLOW_SENSOR_DELAY" value="0"    description="flow/radar message delay in ms"/>
      <define name="INS_MIN_FLOW_QUALITY"  value="110"  description="Minimum quality of the optical flow message accepted [0 to 255]"/>
      <define name="INS_MAX_FLOW_RATE"     value="0"    description="Maximum flow rate the sensor can perceive [in rad/sec]"/>

Additional information for a correct sensor reading from the module are:


Filters altitude and climb rate for fixedwings.

A 2-state Kalman filter that estimates vertical position and vertical velocity from GPS and barometric data.

When USE_BAROMETER is defined to TRUE:

  • GPS horizontal position and horizontal velocity is directly passed through
  • GPS vertical position sets the altitude for the barometric reference pressure (QFE)
  • Vertical position and velocity is a filtered based on barometric pressure with respect to the reference pressure and GPS vertical velocity readings.

When USE_BAROMETER is not defined, FALSE or 0:

  • GPS velocity is directly passed through to the vehicle's state.
  • GPS horizontal position is directly passed through.
  • Altitude is filtered based on GPS height and vertical velocity data.


USE_BAROMETER - Enables the use of barometric data

DEBUG_ALT_KALMAN - Enables debug messages from the subsystem (Default: not defined)

e.g. to use with barometer:

File: conf/airframes/myplane.xml
  <firmware name="fixedwing">
    <subsystem name="ins" type="alt_float">
      <define name="USE_BAROMETER" value="TRUE"/>

GPS passthrough (gps_passthrough)

"dummy" INS that does no filtering whatsoever. It directly passes GPS position and velocity through.

File: conf/airframes/myplane.xml
  <firmware name="fixedwing or rotorcraft">
    <subsystem name="ins" type="gps_passthrough"/>


XSens Mti-G

File: conf/airframes/myplane.xml
    <subsystem name="ins" type="xsens">
      <configure name="XSENS_UART_NR" value="0"/>
      <configure name="XSENS_UART_BAUD" value="B115200"/>


XSens Mti-G

File: conf/airframes/myplane.xml
    <load name="ins_xsens_MTiG_fixedwing.xml">
      <configure name="XSENS_UART_NR" value="0"/>


Vertical filter (in float) estimating altitude, vertical velocity and accelerometer bias.

If USE_GPS, horizontal position and velocity is set directly by GPS.

File: conf/airframes/myplane.xml
  <subsystem name="ins"/>

Horizontal Filter Float (hff)

simple with float vertical and horizontal filters for INS

File: conf/airframes/myplane.xml
  <firmware name="fixedwing or rotorcraft">
    <subsystem name="ins" type="hff"/>


Extended vertical filter (in float).

A 4-state Kalman filter that estimates:

  • vertical position
  • vertical speed
  • accelerometer bias
  • barometric offset
File: conf/airframes/myplane.xml
  <firmware name="fixedwing or rotorcraft">
    <subsystem name="ins" type="extended"/>


INS_PROPAGATE_FREQUENCY - Defines the frequency (Hz) of the propagation model (Default: PERIODIC_FREQUENCY)


Driver for the Vectornav VN-200 INS, see also Sensors/imu#Vectornav_VN-200.


A full INS estimating attitude, velocity, position and biases via invariant filter