LPMS Control: Sensor Filter Settings
The LPMS Control page (sidebar, under Devices, one entry per LPMS Sensor node) configures the processing that runs inside the sensor. This page lists every filter-related setting the page exposes, what it does, which sensor families have it, and when a change takes effect. It replaces the YAML configuration file of the classic LpmsControl application: everything that file could set is available here, interactively, while the sensor streams.
Two layers of processing can be configured:
- On-chip filtering in the accelerometer and gyroscope chips: output data rate and low-pass (and, on the Epson gyro, high-pass) filters. These shape the raw data before the sensorās processor sees it.
- The on-board orientation fusion (Kalman or DCM filter) with its tuning parameters, plus the orientation offset.
Setting names below are the labels shown in LPMS Control. The command IDs in brackets are the LPBus commands behind them, for use with the Raw Command Interface or your own software (see the LPMS3 Command List and the LPMS-IG1 User Manual).
Sensor families
| Family | Sensors | Accelerometer / gyroscope chips | Orientation fusion |
|---|---|---|---|
| LPMS-IG1 | LPMS-IG1, LPMS-IG1P (RS232, RS485, CAN, CANopen) | ICM20600 or ICM42670 (accelerometer and second gyro), Epson XV7011 (primary gyro) | LPFUSION 2019 library |
| LPMS3 | LPMS-CURS3, LPMS-CANAL3, LPMS-U3, LPMS-AL3, LPMS-NAV3 | LSM6DSR (NAV3 additionally has the Epson XV7011) | LPFUSION 2.x library |
| LPMS-B2 | LPMS-B2 (Bluetooth) | fixed | Only Filter Mode and ranges are configurable; the Filter Tuning tab is not shown |
LPMS Control detects the family from the connected sensor and shows the matching options.
How a change takes effect
Changes apply immediately but are not saved. Every setting is written to the sensor as soon as you change it and the sensor keeps using it until power is cycled. To keep settings across a power cycle, click Save settings to sensor on the Actions tab. To go back to the saved set, power-cycle the sensor.
One exception on the standard LPMS-IG1 firmware: Acc Covariance, LinAcc Comp. and Centripetal Comp. are stored by the sensor but only loaded into the running filter at start-up. On the IG1, change them, click Save settings to sensor, and power-cycle to see the effect. On LPMS3 sensors and for all other settings on the IG1 the change is live.
The sensorās internal processing (filter update) runs at 500 Hz on both families regardless of the stream frequency.
General tab
| Setting | Options | Factory default | Effect |
|---|---|---|---|
| Stream Frequency [34/35] | 5 to 500 Hz (B2: 5 to 800 Hz) | 100 Hz | Rate at which samples are sent to the host. Decimates the 500 Hz internal result; does not change the filtering. |
| Filter Mode [90/91] | Gyro only, Kalman (Gyro+Acc), Kalman (Gyro+Acc+Mag), DCM (Gyro+Acc), DCM (Gyro+Acc+Mag) | Kalman (Gyro+Acc) | Selects the orientation filter, see below. B2 offers the first three. |
| Output Format [36/37] | Degrees, Radians | Degrees | Unit of Euler angles and angular velocity in the stream. |
| Static Shutdown [92/93] | Disabled, Enabled | IG1: Disabled, LPMS3: Enabled (firmware default) | When the gyroscope autocalibration judges the sensor to be at rest, the orientation filter is frozen so the orientation cannot drift while standing still. Rotations slower than the autocalibration thresholds are then not tracked. |
| Gyro Autocal [64/65] | Disabled, Enabled | Enabled | Lets the sensor estimate the gyroscope bias whenever it is at rest. |
| Acc Range [50/51] | 2, 4, 8, 16 g | 4 g | Full-scale range of the accelerometer. |
| Gyro Range [60/61] | IG1: 400, 1000, 2000 dps. B2: 125 to 2000 dps | IG1: 400 dps, CURS3: 2000 dps, NAV3: 500 dps | Full-scale range. On the IG1 this also selects the gyro that feeds the fusion: 400 dps uses the Epson gyro, 1000 and 2000 dps use the ICM gyro. |
| Mag Range [70/71] | 2 to 30 Gauss | sensor dependent | Full-scale range of the magnetometer. |
| Transmit Data Register [30/31] | checkboxes per channel | sensor dependent | Which channels the sensor streams. Does not change processing. |
Filter modes
- Gyro only: integrates the gyroscope. Pitch, roll and yaw all drift; useful to judge the raw gyro quality.
- Kalman (Gyro+Acc): gyroscope integration corrected by the accelerometerās gravity direction. Pitch and roll are stable, yaw drifts. This is the factory setting.
- Kalman (Gyro+Acc+Mag): additionally references yaw to the magnetometer. Needs a magnetometer calibration (Actions tab) and a clean magnetic environment.
- DCM (Gyro+Acc) and DCM (Gyro+Acc+Mag): a complementary filter with fixed proportional and integral gains (Kp, Ki) instead of the Kalman gain. Simpler to tune, less adaptive to motion.
Filter Tuning tab: on-chip filters
The accelerometer and gyroscope chips filter their own output before the sensor processor reads it at 500 Hz. A lower cutoff gives quieter raw data and a smoother orientation at the price of latency; a higher cutoff passes vibration through to the fusion. The chip output data rate (ODR) above 500 Hz brings no extra information to the fusion; below 500 Hz each chip sample is used several times.
LPMS-IG1
| Card | Setting | Options | Factory default |
|---|---|---|---|
| Accelerometer (on-chip) | Output Data Rate [360/361] | ICM20600: 3.91 Hz to 1000 Hz. ICM42670: 1.56 Hz to 1600 Hz | 100 Hz |
| Accelerometer (on-chip) | Low-pass Bandwidth [362/363] | ICM20600: 5, 10, 21, 45, 99, 218, 420 Hz. ICM42670: Bypass, 16, 25, 34, 53, 73, 121, 180 Hz | 10 Hz (ICM20600), 16 Hz (ICM42670) |
| Gyroscope ICM (on-chip) | Output Data Rate [368/369] | as the accelerometer | 100 Hz |
| Gyroscope ICM (on-chip) | Low-pass Bandwidth [370/371] | ICM20600: 5, 10, 20, 41, 92, 176 Hz. ICM42670: Bypass, 16 to 180 Hz | 10 Hz (ICM20600), 16 Hz (ICM42670) |
| Gyroscope Epson (on-chip) | Output Data Rate [364/365] | FS (about 13.8 kHz) down to FS/128 (about 108 Hz) | FS |
| Gyroscope Epson (on-chip) | High-pass Cutoff [366/367] | Off, 0.01, 0.03, 0.1, 0.3, 1, 3, 10 Hz | Off |
| Gyroscope Epson (on-chip) | Low-pass Order [366/367] | 2nd, 3rd, 4th | 4th |
| Gyroscope Epson (on-chip) | Low-pass Cutoff [366/367] | 10, 35, 45, 50, 70, 85, 100, 140, 175, 200, 285, 345 Hz | 10 Hz |
The three Epson settings share one command; LPMS Control combines them. The Epson high-pass removes slow drift from the gyro signal and should stay off for orientation tracking. Which chip generation an IG1 has is read from the sensor; the dropdowns show the matching value set.
LPMS3 family (CURS3, CANAL3, U3, AL3, NAV3)
| Card | Setting | Options | Factory default |
|---|---|---|---|
| Accelerometer (on-chip) | Output Data Rate [360/361] | 12.5, 26, 52, 104, 208, 416, 833 Hz, 1.66, 3.33, 6.66 kHz | 416 Hz |
| Accelerometer (on-chip) | Low-pass (LPF2) [362/363] | Off, ODR/4, ODR/10, ODR/20, ODR/45, ODR/100, ODR/200, ODR/400, ODR/800 | ODR/45 (about 9 Hz at 416 Hz) |
| Gyroscope (on-chip) | Output Data Rate [368/369] | 12.5 Hz to 1.66 kHz | 416 Hz |
| Gyroscope (on-chip) | Low-pass (LPF1) [370/371] | Off, settings 0 (widest) to 7 (narrowest) | 3 (NAV3: 5) |
The LSM6DSR accelerometer low-pass is defined as a fraction of its output data rate, so changing the ODR also moves the cutoff. The gyroscope LPF1 bandwidth for each setting depends on the ODR as well; see the LSM6DSR datasheet table āGyroscope LPF1 bandwidth selectionā for the exact values. The NAV3 additionally shows the Epson gyro card described above.
Filter Tuning tab: Kalman filter parameters
These tune the gyro+acc (and gyro+acc+mag) Kalman modes. The filter trusts the accelerometer less, and therefore corrects pitch and roll more slowly, when the measurement covariance is larger. Per sample the covariance is
R = Acc Covariance + LinAcc Comp. x (|a| - 1 g)^2 + Centripetal Comp. x |gyro|
so the correction is weak while the sensor accelerates or rotates and strong when it is still.
| Setting | Meaning | IG1 default | LPMS3 default |
|---|---|---|---|
| Acc Covariance [384/385] | Base accelerometer covariance. Larger: slower tilt correction, smoother orientation. Smaller: faster correction, more accelerometer noise in the orientation. | 0.1 | 0.1 |
| LinAcc Comp. [386/387] | Weight of the squared deviation of the acceleration magnitude from 1 g. Larger: stronger rejection of linear acceleration (braking, shaking), slower recovery afterwards. | 2000000 | 100000 |
| Centripetal Comp. [388/389] | Weight of the angular rate. Larger: less tilt correction while rotating. The IG1 measures the rate in rad/s (sum of the three axes), LPMS3 sensors in deg/s (norm), so the same number means different strengths. | 100000 | 100 |
| AMOD Avg Weight [382/383] | Low-pass weight (0 to 1) on the acceleration magnitude deviation used by LinAcc Comp. 0 uses each sample as is; values near 1 average over many samples. | 0 | 0 |
| Mag Covariance [390/391] | Base magnetometer covariance for the Gyro+Acc+Mag modes. Larger: slower yaw correction from the magnetometer. | 1000 | 1000 |
Both families use the same filter structure; the IG1 defaults reject linear acceleration about 20 times more strongly than the LPMS3 defaults and are correspondingly slower to re-level after motion. Remember the IG1 exception above: Acc Covariance, LinAcc Comp. and Centripetal Comp. need a save and power cycle on the IG1.
Filter Tuning tab: DCM filter parameters
| Setting | Meaning | Default |
|---|---|---|
| Kp (Prop. Gain) [400/401] | Proportional gain of the DCM modes. Larger: faster pull toward the accelerometer (and magnetometer) direction. | 3.0 |
| Ki (Int. Gain) [402/403] | Integral gain, compensates a constant gyro bias. 0 disables the integral term. | 0.0 |
Filter Tuning tab: gyroscope motion threshold
Motion Threshold [66/67] (deg/s): when every gyroscope axis is below this value the gyroscope reading is treated as zero before fusion, which suppresses slow drift at rest at the cost of ignoring very slow rotations. The factory value 0 disables it. The gyroscope autocalibration itself is configured on the LPMS Sensor node (Properties panel) and runs in FusionHub; the sensorās own autocalibration is the Gyro Autocal switch on the General tab.
Actions tab
- Set orientation offset [38]: captures an orientation offset from the current pose, in one of three modes. Object zeroes the full orientation. Heading zeroes only the heading and keeps pitch and roll. Alignment levels pitch and roll and keeps the heading. Reset orientation [39] clears the offset. The offset is part of the saved settings.
- Calibrate gyroscope: measures and stores the gyroscope bias; keep the sensor still for a few seconds.
- Start / stop mag calibration: records the magnetometer while you rotate the sensor through all orientations and stores the hard and soft iron correction. Required before using a Gyro+Acc+Mag mode.
- Save settings to sensor: writes the current settings to the sensorās flash.
- Raw Command Interface: sends any LPBus GET or SET command (u32 or f32) by its ID, for settings that have no dedicated control.
Suggested workflow for experiments
- Keep the sensor connected and streaming; open the Plots tab in a second browser tab to watch the effect.
- Change one setting at a time. Chip filters and most fusion parameters react within a few samples.
- On the IG1, after changing Acc Covariance, LinAcc Comp. or Centripetal Comp., click Save settings to sensor and power-cycle the sensor.
- When the result is right, click Save settings to sensor. Until then a power cycle brings the sensor back to its last saved state.
To compare several Kalman parameter sets at the same time without touching the sensor, the upcoming LPMS-IG1 Firmware Fusion filter node runs the IG1ās on-board orientation fusion on the host; several instances with different settings can be fed from one sensor node.