We present SymForce, a fast symbolic computation and code generation library for robotics applications like computer vision, state estimation, motion planning, and controls. SymForce combines the development speed and flexibility of symbolic mathematics with the performance of autogenerated, highly optimized code in C++ or any target runtime language. SymForce provides geometry and camera types, Lie group operations, and branchless singularity handling for creating and analyzing complex symbolic expressions in Python, built on top of SymPy. Generated functions can be integrated as factors into our tangent space nonlinear optimizer, which is highly optimized for real-time production use. We introduce novel methods to automatically compute tangent space Jacobians, eliminating the need for bug-prone handwritten derivatives. This workflow enables faster runtime code, faster development time, and fewer lines of handwritten code versus the state-of-the-art. Our experiments demonstrate that our approach can yield order of magnitude speedups on computational tasks core to robotics. Code is available at https://github.com/symforce-org/symforce .
翻译:我们介绍SymForce(一个快速象征性计算和代码生成库),用于计算机视觉、国家估计、运动规划和控制等机器人应用。SymForce(SymForce)将符号数学的发展速度和灵活性与自动生成的、高度优化的C+++或任何目标运行时间语言的代码的性能结合起来。SymForce(SymForce)提供几何和相机类型、 Lie Group 操作和无分支的单数处理,用于创建和分析位于SymPymPy之上的Python的复杂符号表达。生成的功能可以作为各种因素纳入我们的正切的空间非线性优化优化器,用于实时生产。我们引入了新颖的方法,自动计算相近的空间雅各人,从而消除了对易出现错误的手写衍生物的需求。这种工作流程使得运行时间代码更快,开发时间更快,手写代码的线比艺术更短。我们的实验表明,我们的方法可以在计算任务核心上给机器人带来数量级加速速度的顺序。代码可在 https://githththforth-org/sforce/sforceforce。