项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-09-14 · 当前星标 ★ 1656
使用教程
环境要求
- Python 环境,可直接使用 pip 安装包
- Linux 或 macOS 系统(pip wheel 提供预编译 C++ 组件)
- 若需编译 C++ SymForce 类型(如 sym::Optimizer),需从源码构建
- 生成 C++ 代码时目标工程需要 Eigen
安装与启动步骤
-
1安装 SymForce
在已配置好的 Python 环境中用 pip 安装官方发布的 symforce 包,会自动带上 Linux/macOS 预编译 C++ 组件。
pip install symforce -
2验证符号类型可用
运行 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 模板便于扩展后端。
注意事项
- 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
同类项目推荐
satoriDB
开源
把向量搜索嵌进你的应用,本地跑,快又省。
High performance embedded vector database
FlagGems
开源
用 Triton 写 LLM 算子,一套代码跑多种 GPU
FlagGems is an operator library for large language models implemented in the Triton ···
CodeProject.AI-Server
开源
给应用一键接入本地 AI 视觉能力,无需云服务
CodeProject.AI Server is a self contained service that software developers can inclu···
Comfyui-zhenzhen
开源
在 ComfyUI 里拖节点调用平价 AI 生成接口
https://ai.t8star.org/register?aff=dP7j Comfyui的各种平价API调用节点,支持seedance2.···
sndr_core_engine
开源
消费级显卡上榨干大模型性能,推理速度翻倍
SNDR Core Engine (Genesis) — vLLM runtime patch-overlay for Qwen3.6 + Gemma4 on con···
aiops-modules
开源
把 AWS 上 AI 基建打包成积木,快速搭建和运维
AIOps modules is a collection of reusable Infrastructure as Code (IaC) modules for M···
FreeQwenApi
开源
把 Qwen 网页版变成免费 API,本地部署即用
Локальный API-прокси для Qwen AI с поддержкой сохра···
os-moda
开源
跟服务器说人话,AI 替你干活,改坏了秒回滚
An operating system built for AI agents — talk to your NixOS server instead of SSH-···
M365-Copilot2API
开源
把 M365 Copilot 变成 OpenAI 接口,客户端零改动直接调
Microsoft 365 Copilot → OpenAI / Anthropic 兼容 API 网关。
