The TANGO-VIO safety filter at a glance
In vision-aided navigation and visual-inertial odometry, the quality of triangulated three-dimensional feature positions is a fundamental prerequisite for state estimation accuracy. Triangulation becomes ill-conditioned or even impossible when a camera undergoes pure rotation without translation, or when the observed bearing vectors provide insufficient parallax. Even though visual-inertial odometry has been extensively studied, the active maintenance of feature-observability during navigation has not been sufficiently addressed in the literature. To address this gap, this study presents TANGO-VIO, a triangulation-aware navigation framework that embeds a log-determinant metric of the feature-wise stacked-bearing matrix into a control barrier function. The observability guarantee is established in the feature-geometric sense by enforcing a lower bound on the aggregate triangulation-information metric through a nominal-direction-weighted minimum-deviation velocity correction. The proposed architecture is evaluated through software-in-the-loop simulations and real flight experiments: the results show improved triangulation conditioning under low-parallax motion, while the flight response closely reproduces the corresponding simulation behavior and confirms the practical realizability of the proposed safety filter.
TANGO-VIO wraps a standard VIO-guided architecture with a navigation-level safety filter. It leaves the nominal velocity command untouched whenever the bearing geometry is informative enough — and applies the minimum weighted correction that generates additional parallax the moment triangulation quality approaches its prescribed lower bound.
figures/generalOverview.png
Online velocity filtering
Triangulation-aware navigation is formulated as an online velocity-filtering problem. Instead of treating feature-observability as a passive byproduct of the executed motion, the framework actively modifies the commanded motion when parallax becomes insufficient for well-conditioned triangulation.
Log-det barrier on triangulation quality
The average log-determinant of the feature-wise stacked-bearing matrices defines a safe set that lower-bounds the aggregate triangulation informativeness over the active camera-pose window — encoded directly as a Control Barrier Function constraint.
Hard & soft operation
A nominal-direction-weighted minimum-deviation safety filter admits both a hard-CBF mode that prioritizes triangulation quality, and a slack-enabled soft-CBF mode that trades triangulation maintenance against fidelity to the nominal command.
From bearing geometry to a certified velocity command
The barrier
Each tracked feature $f_i$, observed from the $n$ poses of the sliding window, contributes a stacked-bearing matrix $\bm{M}_i = \sum_{j=1}^{n}\left(\eta_{i,j}^{2}\bm{I} - \bm{b}_{i,j}\bm{b}_{i,j}^{\top}\right)$ that summarizes its multi-view parallax geometry. Well-distributed bearing rays make $\bm{M}_i$ well-conditioned; nearly parallel rays drive it toward rank deficiency. The barrier lower-bounds the geometric mean of the feature-wise determinants:
The safe set $\mathcal{C}=\{\bm{x}: h(\bm{x})\ge 0\}$ collects all states whose aggregate bearing geometry supports reliable triangulation.
The control-affine CBF condition
Differentiating the barrier through the bearing-rate dynamics $\dot{\bm{b}}_{i,j} = -\tfrac{1}{\rho_{i,j}\eta_{i,j}^{2}}\,\bm{\pi}_{i,j}\bm{R}_{C_j}^{A}\bm{R}_{B}^{C}\bm{v}_{B,j}$ splits its derivative into a drift term from the recorded past-pose velocities and a control term in the current body-frame command $\bm{v}_B$:
Any command satisfying this inequality keeps the triangulation-quality safe set forward invariant — feature-observability is guaranteed, not hoped for.
The closed-form safety filter
The corrected command solves a weighted minimum-deviation QP with slack $\delta_T$ (soft mode) and weighting $\bm{W}_B$ that penalizes lateral redirection more than speed adjustment along the nominal direction. It admits a closed-form solution — no numerical QP solver in the loop:
with residual $\mu = f(\bm{x}) + \bm{g}(\bm{x})^{\top}\bm{v}_{B,\mathrm{nom}} + \gamma h(\bm{x})$ and $S(\bm{x}) = \bm{g}(\bm{x})^{\top}\bm{W}_{B}^{-1}\bm{g}(\bm{x})$. When the nominal command already satisfies the barrier ($\mu\ge0$), it passes through untouched.
Hard CBF — triangulation first
The constraint is enforced without relaxation ($\delta_T = 0$). Maintaining the prescribed log-det threshold takes priority over terminal stopping or exact path tracking: the vehicle keeps generating parallax even if the mission says "hover".
Soft CBF — mission aware
A penalized slack $\delta_T \ge 0$ permits controlled relaxation when strict enforcement conflicts with the mission. The slack value explicitly quantifies the instantaneous conflict between triangulation maintenance and nominal tracking.
figures/bearingVector.png
What the filter does when parallax runs out
TANGO-VIO is evaluated in Gazebo/ArduPilot SITL with OpenVINS providing the sliding-window VIO structure. Two scenarios expose low-parallax motion, terminal stopping, and altitude-dependent triangulation degradation. Three modes are compared: nominal baseline, hard CBF, and soft CBF.
figures/sitl_ss2.png
figures/sitl_ss1.pngAt each update, the active camera-pose window and tracked feature bearings are used to compute the stacked-bearing matrices, the average log-det barrier, and the minimum-deviation body-frame velocity command. The same operating point is used throughout the SITL scenarios below:
| Parameter | Value |
|---|---|
| Update rate | 20 Hz |
| γ (linear class-K∞ gain) | 3 |
| w∥ / w⊥ (tangent / perpendicular weight) | 1 / 10 |
| ℓ̄min (log-det threshold) | −2.5 |
| Velocity-command limit | 10 m/s |
| pT (soft-CBF priority weight, soft cases only) | 5 |
Two representative scenarios are considered: a square trajectory with low-velocity turns and a terminal stop, and a climbing trajectory whose required parallax grows with altitude. For each, the nominal baseline (TANGO-VIO disabled) is compared against the hard-CBF and soft-CBF modes.
Scenario I — Square trajectory
100 m side · 60 m altitude · 3 m/s · terminal stop at start pointThe principal degradation source is the low-velocity turning portions at the corners and the terminal stop, where nominal motion provides little translational baseline. The hard CBF refuses to let the vehicle stop where triangulation would collapse; the soft CBF stays close to the nominal square while still injecting parallax-enhancing motion in the degraded intervals.
figures/SITL/Square/Hard/velocityComparison.png
figures/SITL/Square/Hard/CBFHistory.png
figures/SITL/Square/Hard/3Dtraj.png
figures/SITL/Square/Soft/velocityComparison.png
figures/SITL/Square/Soft/CBFHistory.png
figures/SITL/Square/Soft/3Dtraj.png
figures/SITL/Square/trajComparison.png
figures/SITL/Square/Disabled/featureCount.png
figures/SITL/Square/Hard/featureCount.png
figures/SITL/Square/Soft/featureCount.pngScenario II — Climbing trajectory
3 m/s forward · 1 m/s up · from 30 m altitude · 100 m forward traverseHere the dominant effect is altitude-dependent: as the camera moves away from the scene, a larger translational displacement is needed to produce an informative change in bearing geometry — a constant nominal velocity becomes insufficient beyond a certain altitude, even before the terminal segment.
figures/SITL/Climb/Hard/velocityComparison.png
figures/SITL/Climb/Hard/CBFHistory.png
figures/SITL/Climb/Hard/3Dtraj.png
figures/SITL/Climb/Soft/velocityComparison.png
figures/SITL/Climb/Soft/CBFHistory.png
figures/SITL/Climb/Soft/3Dtraj.png
figures/SITL/Climb/trajComparison.png
figures/SITL/Climb/Disabled/featureCount.png
figures/SITL/Climb/Hard/featureCount.png
figures/SITL/Climb/Soft/featureCount.pngFrom simulation to the field
Real-flight experiments use a custom multicopter with a T-Motor propulsion system, a MATEKSYS flight controller and magnetometer, an NVIDIA Jetson Orin Nano onboard computer, and a downward-facing 80° field-of-view CSI camera. Only the climbing scenario was flown, in nominal and hard-CBF modes.
figures/body_mod.jpg
figures/cam_mod.jpgHard-CBF response in the climbing flight test
The command-level response closely reproduces the corresponding SITL behavior. Early in the climb, available parallax is sufficient and the corrected command stays close to nominal; as altitude increases, the same translational motion produces progressively weaker bearing variation, the barrier approaches its boundary, and the hard CBF becomes increasingly active — concentrated mainly in the forward and vertical velocity components, with the corrected speed rising toward the 10 m/s limit and the barrier regulated near zero once the constraint is active.
figures/Test/Hard/velocityComparison.png
figures/Test/Hard/CBFHistory.png
figures/Test/Hard/3Dtraj.pngResulting visual-information quality
In the nominal flight, newly triangulated features become sparse during the low-parallax interval, followed by a pronounced drop in the persistent SLAM-feature population. Under the hard CBF, the additional parallax-generating motion sustains new feature initialization and keeps the persistent-feature population close to its available maximum over the same interval — using the unmodified SITL parameterization, with no retuning for real sensing, estimation, or vehicle-response effects.
figures/Test/Disabled/featureCount.png
figures/Test/Hard/featureCount.pngBibTeX
@article{sanlan2026tangovio,
title = {{TANGO-VIO}: Triangulation-Aware Navigation with Guaranteed
Feature-Observability for Visual-Inertial Odometry},
author = {{\c{S}}anlan, Abd{\"u}lbaki and Altunkaya, Ege C. and
Ba{\u{g}}c{\i}, Hasan Taha and Koyuncu, Emre and {\"O}zkol, {\.I}brahim},
journal = {Under review},
year = {2026},
note = {Istanbul Technical University}
}