源码与 GitHub Release .deb¶
本页说明技术栈组件何时使用 GitHub Releases 上的预编译 .deb,何时从源码编译。
这些包没有发布到 Debian / ROS apt 软件源(packages.ros.org 或 Ubuntu apt)。sudo apt install ros-jazzy-ocs2 在那些源中找不到它们。
可用的 GitHub Release .deb 包¶
软件包 |
|
GitHub Releases |
用途 |
|---|---|---|---|
OCS2 |
|
MPC 库 |
|
通用描述包 |
|
夹爪 / 灵巧手 / 传感器 / |
|
arms_ros2_control |
|
控制器(可选) |
大多数用户推荐: 在 open-deploy-ws 或 fa-deploy-ws 中运行 ./init_repo.sh,并为需要的模块选 d(deb)。要切换已有模块(包括 OCS2)的源码/deb,用菜单 2) 切换模块安装方式 — 不要把手改 apt 列表或跑 dpkg 当作主路径。Deb 模式通过 scripts/install_core_debs.sh 下载这些发行资源。
决策矩阵¶
场景 |
建议 |
|---|---|
快速入门 / 学习 |
GitHub Release |
生产部署 |
GitHub Release |
控制器开发 |
源码编译 |
OCS2 开发 |
源码编译 |
自定义机器人集成 |
源码描述文件,OCS2 使用 GitHub Release |
为本技术栈做贡献 |
源码编译 |
OCS2:Deb 与源码¶
GitHub Release .deb¶
主路径: 在部署工作空间运行 ./init_repo.sh,给 OCS2 选 d(菜单 1),或不经 Git 安装/更新(菜单 3):
./init_repo.sh
# 1) init → ocs2_ros2: d (deb)
# or 3) 仅安装/更新核心 deb
./scripts/install_core_debs.sh --only ocs2
这会从 GitHub Releases 下载匹配的 .deb。包名是 ros-jazzy-ocs2;它不在 ROS apt 索引中。
手动回退
从 ocs2_ros2 Releases 下载匹配资源(ros-jazzy-ocs2_*_<arch>.deb),然后 sudo dpkg -i ros-jazzy-ocs2_*.deb;需要时再 sudo apt-get install -f。
优点:
安装迅速
经过测试且稳定
无需编译时间
缺点:
无法修改 OCS2 代码
锁定在发行资源文件的版本
源码编译¶
在 ./init_repo.sh(菜单 1)给 OCS2 选 s,或用菜单 2 切换已有 deb 安装。脚本会把 src/ocs2_ros2 克隆到 ros2 分支。然后 colcon build --packages-up-to ocs2。
优点:
可完整访问源码
可以修改和调试
最新功能
缺点:
编译时间较长
需要更多磁盘空间
必须手动管理更新
混合使用源码与 Deb¶
可以混合使用源码树与 GitHub Release .deb 包,但需注意版本冲突。
推荐组合¶
OCS2 |
描述文件 |
arms_ros2_control |
说明 |
|---|---|---|---|
Deb |
来源 |
来源 |
常规开发( |
来源 |
来源 |
来源 |
全栈开发 |
Deb |
Deb |
Deb |
安装最快;三者均来自 GitHub Releases |
版本跟踪¶
deb_versions.conf¶
open-deploy-ws 包含 deb_versions.conf,列出 install_core_debs.sh 使用的包前缀、GitHub 仓库和发行标签:
# package prefix | release tag | GitHub repo
ros-jazzy-ocs2|latest|legubiao/ocs2_ros2
ros-jazzy-robot-descriptions-common|latest|fiveages-sim/robot-descriptions-common
ros-jazzy-arms-ros2-control|latest|fiveages-sim/arms_ros2_control
检查已安装版本¶
# Check installed .deb version
dpkg-query -W -f='${Package} ${Version}\n' ros-jazzy-ocs2
# Check source version (if available)
cd src/ocs2_ros2 && git describe --tags
在两者之间切换¶
主路径: ./init_repo.sh 菜单 2) 切换模块安装方式。脚本探测当前 dpkg / 源码目录状态,按模块在 源码 ↔ deb 之间切换(清理冲突源码或卸载对应 deb),然后重新同步。
./init_repo.sh
# choose 2) 切换模块安装方式
同一脚本的相关菜单项:
3) 不经 Git 安装/更新 deb:
./scripts/install_core_debs.sh --only ocs24) 卸载:
./scripts/uninstall_core_debs.sh --only ocs2
然后照常 colcon build。
手动回退
手删 src/ocs2_ros2、sudo apt-get remove ros-jazzy-ocs2 或 sudo dpkg -i 只用于 init 菜单覆盖不到的情况。优先用菜单 2,让可见性、子模块和 .core_module_mode 保持一致。
init_repo.sh 选项¶
初始化脚本按模块处理这一选择(d = GitHub Release .deb,s = 源码;回车使用默认值):
./init_repo.sh
# Prompts:
# 核心模块安装方式(d=deb, s=source)
# ocs2_ros2 default: d (GitHub Release .deb)
# arms_ros2_control default: s (source)
# robot-descriptions/common default: s (source)
选择 d 会通过 scripts/install_core_debs.sh 从 GitHub Releases 下载预编译 .deb。它不会从 packages.ros.org 安装。
故障排除¶
符号 / ABI 错误¶
如果出现未定义符号或 ABI 不匹配错误:
检查版本兼容性
彻底清理后重新编译:
rm -rf build install colcon build
确保源码/Deb 选择一致
安装后找不到软件包¶
这些 .deb 文件不在 ROS apt 索引中。sudo apt update 不会让 ros-jazzy-ocs2 出现。
# Confirm the package is installed
dpkg-query -W ros-jazzy-ocs2
# If missing, re-run ./init_repo.sh menu 2 or 3
./scripts/install_core_debs.sh --only ocs2
安装冲突¶
用 ./init_repo.sh 菜单 2 让工作空间干净切换。检查残留:
ros2 pkg list | grep ocs2