コンピュータービジョン、状態推定、動作計画、制御などのロボット工学アプリケーション向けの高速シンボリック計算およびコード生成ライブラリであるSymForceを紹介します。 SymForceは、記号数学の開発速度と柔軟性を、C++または任意のターゲットランタイム言語で自動生成された高度に最適化されたコードのパフォーマンスと組み合わせます。 SymForceは、SymPy上に構築された、Pythonで複雑なシンボリック式を作成および分析するための、ジオメトリとカメラタイプ、リー群操作、およびブランチレス特異性処理を提供します。生成された関数は、リアルタイムの生産使用のために高度に最適化された接空間非線形オプティマイザーに要素として統合できます。接空間ジャコビアンを自動的に計算する新しい方法を紹介し、バグが発生しやすい手書きの導関数の必要性を排除します。このワークフローにより、最新のワークフローと比較して、実行時コードの高速化、開発時間の短縮、手書きコードの行数の削減が可能になります。私たちの実験は、私たちのアプローチがロボット工学の中核となる計算タスクで桁違いのスピードアップをもたらすことができることを示しています。コードはhttps://github.com/symforce-org/symforceで入手できます。
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 .