🤖 AI Summary
Legged robots suffer from severe pose and velocity estimation drift during highly dynamic maneuvers—such as impacts, slips, and rapid rotations. To address this, we propose a tightly coupled visual–inertial–legged odometry framework. Our approach innovatively employs a distributed multi-IMU configuration across robot links, jointly leveraging joint encoders and monocular camera data to model and compensate dominant error sources in proprioceptive odometry. We formulate a sliding-window factor graph optimization that incorporates extended Kalman filter (EKF)-based preintegration of inertial and joint measurements, while unifying visual features, IMU preintegrations, and foot motion constraints as factors for joint optimization. Experimental results demonstrate centimeter-level localization accuracy and significantly reduced drift under high-dynamic tasks, markedly improving state estimation robustness. The corresponding C++ implementation and a large-scale real-world dataset are publicly released.
📝 Abstract
This paper presents a state-estimation solution for legged robots that uses a set of low-cost, compact, and lightweight sensors to achieve low-drift pose and velocity estimation under challenging locomotion conditions. The key idea is to leverage multiple inertial measurement units on different links of the robot to correct a major error source in standard proprioceptive odometry. We fuse the inertial sensor information and joint encoder measurements in an extended Kalman filter, then combine the velocity estimate from this filter with camera data in a factor-graph-based sliding-window estimator to form a visual-inertial-leg odometry method. We validate our state estimator through comprehensive theoretical analysis and hardware experiments performed using real-world robot data collected during a variety of challenging locomotion tasks. Our algorithm consistently achieves minimal position deviation, even in scenarios involving substantial ground impact, foot slippage, and sudden body rotations. A C++ implementation, along with a large-scale dataset, is available at https://github.com/ShuoYangRobotics/Cerberus2.0.