symforce 是基础设施领域的开源项目,由 symforce-org 开发,2022 年首次发布。
在全站 12,753 个收录项目中,它的 GitHub 星标数(1,642)位列前 30%,在基础设施分类中处于中上游。
项目保持着较活跃的维护节奏,最近一次代码更新于 2026-09-16。开源免费(Apache-2.0),官网提供文档与下载入口。
它主要面向的使用场景是:SLAM中的位姿图与因子图优化。同类可对比的替代方案包括 Ceres Solver、g2o。

写符号公式,自动生成机器人实时优化代码
SymForce 是面向机器人、自动驾驶与 SLAM 场景的开源符号计算与非线性优化框架。它把符号表达式自动生成高效的 C++ 与 Python 代码,让开发者用接近数学公式的方式描述残差、约束与运动模型,再一键导出可实时运行的数值代码,从而解决机器人领域手工推导雅可比矩阵易错、优化求解器接入繁琐的问题。核心能力包括:符号微分与自动代码生成、稀疏非线性最小二乘优化、李群/流形(如旋转、位姿)支持、与常见求解器集成,以及相机模型、位姿图等机器人常用组件。相比纯数值库,它兼顾开发效率与运行性能,适合需要反复迭代模型又要求实时性的工程团队。
1安装 SymForce
在已配置好的 Python 环境中用 pip 安装官方发布的 symforce 包,会自动带上 Linux/macOS 预编译 C++ 组件。
pip install symforce2验证符号类型可用
运行 README 给出的导入与实例化语句,能正常创建 Rot3 即说明 Python 符号部分可用。
python -c "import symforce.symbolic as sf; print(sf.Rot3())"3检查符号后端
确认符号计算后端为 symengine,并确认能导入预编译的 cc_sym 扩展;两者任一异常通常说明安装损坏。
python -c "import symforce; print(symforce.get_symbolic_api()); from symforce import cc_sym"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 模板便于扩展后端。
Ceres Solver、g2o
symforce 是基础设施领域的开源项目,由 symforce-org 开发,2022 年首次发布。
在全站 12,753 个收录项目中,它的 GitHub 星标数(1,642)位列前 30%,在基础设施分类中处于中上游。
项目保持着较活跃的维护节奏,最近一次代码更新于 2026-09-16。开源免费(Apache-2.0),官网提供文档与下载入口。
它主要面向的使用场景是:SLAM中的位姿图与因子图优化。同类可对比的替代方案包括 Ceres Solver、g2o。
freebuff-proxy
开源
聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。
OpenAI-compatible gateway for FreeBuff coding models. Token pool, session lifecycle,···
microduck
开源
用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。
A Tiny biped duck robot
soperator
开源
用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。
Run Slurm in Kubernetes
ollama
开源
一条命令本地跑起大模型,免费、私密、不卡顿
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···