Manifold Geometry with Fast Automatic Derivatives and Coordinate Frame Semantics Checking in C++
This library addresses the need for rapid and error-free development in computer vision and robotics, offering incremental improvements in efficiency and reliability for developers working with pose estimation.
The authors tackled the problem of time-consuming and error-prone development of real-time computer vision and robotics algorithms on the SE(3) manifold by introducing wave_geometry, a C++ library that provides automatic differentiation with minimal runtime overhead and compile-time coordinate frame semantics checking.
Computer vision and robotics problems often require representation and estimation of poses on the SE(3) manifold. Developers of algorithms that must run in real time face several time-consuming programming tasks, including deriving and computing analytic derivatives and avoiding mathematical errors when handling poses in multiple coordinate frames. To support rapid and error-free development, we present wave_geometry, a C++ manifold geometry library with two key contributions: expression template-based automatic differentiation and compile-time enforcement of coordinate frame semantics. We contrast the library with existing open source packages and show that it can evaluate Jacobians in forward and reverse mode with little to no runtime overhead compared to hand-coded derivatives. The library is available at https://github.com/wavelab/wave_geometry .