symforce-org/symforce

Fast symbolic computation, code generation, and nonlinear optimization for robotics

解決的問題

SymForce 解決了開發高性能機器人軟體時面臨的挑戰,即符號數學的靈活性與手寫優化 C++ 程式碼的執行速度之間通常存在權衡。它消除了對易出錯的手寫導數(Jacobians)的需求,並減少了原型設計程式碼與生產程式碼之間的邏輯重複。

工作原理

SymForce 提供了一個三部分系統來彌合數學與生產環境之間的差距:

  1. Symbolic Toolkit:擴展了 SymPy API,提供用於幾何、相機與 Lie 群微積分的專用類型,允許使用者對複雜的機器人問題進行符號建模。
  2. Code Generator:將這些符號表達式轉換為高度優化的、無分支的 C++ 或其他目標語言執行時程式碼。它利用計算扁平化與稀疏性等策略,實現比標準自動微分更顯著的加速。
  3. Optimization Library:一個基於因子圖的快速切空間(tangent-space)優化函式庫,專為即時機器人應用而設計。它可以直接將生成的函式用作非線性優化的因子。

適用對象

專為從事 SLAM(即時定位與地圖構建)、捆綁調整(bundle adjustment)、標定與稀疏非線性 MPC(模型預測控制)等任務的機器人工程師與研究人員設計。

亮點

  • 自動 Jacobian 計算:自動計算切空間 Jacobian,無需手動推導。
  • 高性能:生成嵌入式友好的 C++ 程式碼(使用 Eigen),實現零動態記憶體配置。
  • 奇異性處理:在執行時評估期間,使用專門的基於 epsilon 的系統來處理數學奇異點(如 0,0 處的 atan2)。
  • 無縫工作流:實現 Python 中的快速原型設計,並提供通往生產級 C++ 程式碼的直接路徑。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案