Zero Velocity Update (ZUPT) in OpenVINS
Last updated on November 26, 2023 pm
[TOC]
Overview
The key idea of the zero velocity update (ZUPT) is to allow for the system to reduce its uncertainty leveraging motion knowledge (i.e. leverage the fact that the system is stationary).
This is of particular importance in cases where we have a monocular system without any temporal SLAM features. In this case, if we are stationary we will be unable to triangulate features and thus will be unable to update the system. This can be avoided by either using a stereo system or temporal SLAM features.
One problem that both of these don’t solve is the issue of dynamic environmental objects. In a typical autonomous car scenario the sensor system will become stationary at stop lights in which dynamic objects, such as other cars crossing the intersection, can quickly corrupt the system.
A zero velocity update and skipping feature tracking can address these issues if we are able to classify the cases where the sensor system is at rest.
Zero Velocity Detection
1 |
|
Inertial-based Detection
1 |
|
Residual $\tilde{\mathbf{z}}$
To perform update, we create a synthetic “measurement” which says that the current true acceleration and angular velocity is zero.
if integrated_accel_constraint
(the velocity is zero), then
1 |
|
Measurement Jacobian $H$
1 |
|
Disparity-based Detection
1 |
|
EKF Update
1 |
|