symforce

写符号公式,自动生成机器人实时优化代码

开源 🏷️完全免费 ✅ 目前可打开 基础设施 🍴 复刻 184 🐛 待处理 157 👀 关注 43
访问官网 ↗ GitHub ↗
GitHub 星标 ★ 1656
维护状态 活跃
是否开源 开源
定价模式 🏷️完全免费 开源免费(Apache-2.0),官网提供文档与下载入口

项目预览

symforce 项目界面预览图
图片来源:项目官网

项目数据

分类基础设施
开发团队symforce-org
定价模式🏷️完全免费
价格说明开源免费(Apache-2.0),官网提供文档与下载入口
访问状态✅ 目前可打开
是否开源是
开源协议Apache-2.0
主要语言C++
技术栈/模型autonomous-vehicles,code-generation,computer-vision,cpp,motion-planning,optimization,python,robotics,slam,structure-from-motion,symbolic-computation
GitHub 星标★ 1656
上线时间2022-01-05 00:00:00
代码更新2026-10-30
仓库体积16.4 MB
本站数据更新2026-11-05
维护状态活跃
收录时间2026-09-14
浏览次数1

项目介绍

SymForce 是面向机器人、自动驾驶与 SLAM 场景的开源符号计算与非线性优化框架。它把符号表达式自动生成高效的 C++ 与 Python 代码,让开发者用接近数学公式的方式描述残差、约束与运动模型,再一键导出可实时运行的数值代码,从而解决机器人领域手工推导雅可比矩阵易错、优化求解器接入繁琐的问题。核心能力包括:符号微分与自动代码生成、稀疏非线性最小二乘优化、李群/流形(如旋转、位姿)支持、与常见求解器集成,以及相机模型、位姿图等机器人常用组件。相比纯数值库,它兼顾开发效率与运行性能,适合需要反复迭代模型又要求实时性的工程团队。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-09-14 · 当前星标 ★ 1656

使用教程

难度:进阶 约 10 分钟 部署方式:库/依赖 4 步

环境要求

  • Python 环境,可直接使用 pip 安装包
  • Linux 或 macOS 系统(pip wheel 提供预编译 C++ 组件)
  • 若需编译 C++ SymForce 类型(如 sym::Optimizer),需从源码构建
  • 生成 C++ 代码时目标工程需要 Eigen

安装与启动步骤

  1. 1安装 SymForce

    在已配置好的 Python 环境中用 pip 安装官方发布的 symforce 包,会自动带上 Linux/macOS 预编译 C++ 组件。

    pip install symforce
  2. 2验证符号类型可用

    运行 README 给出的导入与实例化语句,能正常创建 Rot3 即说明 Python 符号部分可用。

    python -c "import symforce.symbolic as sf; print(sf.Rot3())"
  3. 3检查符号后端

    确认符号计算后端为 symengine,并确认能导入预编译的 cc_sym 扩展;两者任一异常通常说明安装损坏。

    python -c "import symforce; print(symforce.get_symbolic_api()); from symforce import cc_sym"
  4. 4生成 C++ 运行时代码

    先定义好符号残差函数 bearing_residual,再用 Codegen 配置为 CppConfig,并对 pose 参数做高斯牛顿线性化后生成函数。

    from symforce.codegen import Codegen, CppConfig
    
    codegen = Codegen.function(bearing_residual, config=CppConfig())
    codegen_linearization = codegen.with_linearization(
        which_args=["pose"]
    )
    metadata = codegen_linearization.generate_function()
    print(open(metadata.generated_files[0]).read())

关键配置

配置项必填说明示例
CppConfig()否Codegen 的目标语言配置,此处用于生成 C++ 运行时代码CppConfig()

如何确认成功

执行 python -c "import symforce; print(symforce.get_symbolic_api())" 输出 symengine,且能成功 from symforce import cc_sym。

常见问题

Q:get_symbolic_api() 返回 'sympy' 而不是 'symengine' 怎么办?

A:按 README 说明,这通常表示安装已损坏,建议到 GitHub Issues 页面提交问题。

Q:无法 import cc_sym 怎么办?

A:同样属于安装可能损坏的情况,README 建议到项目 Issues 提交问题反馈。

Q:想使用 C++ 的 sym::Optimizer 等类型怎么办?

A:pip 安装的 wheel 不含 C++ 头文件,需要按 README 的 build from source 小节从源码构建。

Q:生成的 C++ 代码需要哪些依赖?

A:生成的 BearingFactor 等函数只依赖 Eigen,把公共子表达式合并到了一个扁平函数里。

Q:还能生成别的语言吗?

A:可以,SymForce 也能生成仅依赖 numpy 的 Python 运行时代码,且代码生成使用可插拔的 jinja 模板便于扩展后端。

注意事项

  • pip 安装会附带 Linux 和 Mac 的预编译 C++ 组件,但不包含 C++ 头文件。
  • 自动生成的 C++ 文件头部已注明“Do not modify by hand”,不要手工修改生成结果。
  • README 示例中的 bearing_residual 等符号函数需自行定义后再调用 Codegen。
  • README 提到的 TypeScript、CUDA、PyTorch 后端目前只是候选方向,尚未内置。

核心亮点

  • 符号表达式自动生成 C++/Python 代码,省去手写雅可比与求导
  • 内置李群/流形运算,处理旋转与位姿优化更自然
  • 面向实时性能设计,生成代码可嵌入机器人/车载系统

不足之处

  • 学习曲线偏陡,需理解符号计算与代码生成流程
  • 生态与社区规模相对较小,文档/社区待观察

适用场景

  • SLAM 中的位姿图与因子图优化
  • 自动驾驶多传感器标定与轨迹优化
  • 机器人运动规划与状态估计的残差建模

替代项目

Ceres Solver、g2o

上一篇:WilmerAI

下一篇:anti-api

同类项目推荐

satoriDB 开源

把向量搜索嵌进你的应用,本地跑,快又省。

High performance embedded vector database

★ 245 2026-08-09
FlagGems 开源

用 Triton 写 LLM 算子,一套代码跑多种 GPU

FlagGems is an operator library for large language models implemented in the Triton ···

★ 1167 2026-09-15
CodeProject.AI-Server 开源

给应用一键接入本地 AI 视觉能力,无需云服务

CodeProject.AI Server is a self contained service that software developers can inclu···

★ 985 2026-08-09
Comfyui-zhenzhen 开源

在 ComfyUI 里拖节点调用平价 AI 生成接口

https://ai.t8star.org/register?aff=dP7j Comfyui的各种平价API调用节点,支持seedance2.···

★ 756 2026-10-30
sndr_core_engine 开源

消费级显卡上榨干大模型性能,推理速度翻倍

SNDR Core Engine (Genesis) — vLLM runtime patch-overlay for Qwen3.6 + Gemma4 on con···

★ 133 2026-08-09
aiops-modules 开源

把 AWS 上 AI 基建打包成积木,快速搭建和运维

AIOps modules is a collection of reusable Infrastructure as Code (IaC) modules for M···

★ 104 2026-08-09
FreeQwenApi 开源

把 Qwen 网页版变成免费 API,本地部署即用

Локальный API-прокси для Qwen AI с поддержкой сохра···

★ 342 2026-08-09
os-moda 开源

跟服务器说人话,AI 替你干活,改坏了秒回滚

An operating system built for AI agents — talk to your NixOS server instead of SSH-···

★ 120 2026-08-09
M365-Copilot2API 开源

把 M365 Copilot 变成 OpenAI 接口,客户端零改动直接调

Microsoft 365 Copilot → OpenAI / Anthropic 兼容 API 网关。

★ 613 2026-10-23