源码与 GitHub Release .deb

本页说明技术栈组件何时使用 GitHub Releases 上的预编译 .deb,何时从源码编译。

这些包没有发布到 Debian / ROS apt 软件源(packages.ros.org 或 Ubuntu apt)。sudo apt install ros-jazzy-ocs2 在那些源中找不到它们。

可用的 GitHub Release .deb 包

软件包

.deb 名称

GitHub Releases

用途

OCS2

ros-jazzy-ocs2

legubiao/ocs2_ros2

MPC 库

通用描述包

ros-jazzy-robot-descriptions-common

fiveages-sim/robot-descriptions-common

夹爪 / 灵巧手 / 传感器 / robot_common_launch

arms_ros2_control

ros-jazzy-arms-ros2-control

fiveages-sim/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 .deb(尤其是 OCS2)

生产部署

GitHub Release .deb

控制器开发

源码编译

OCS2 开发

源码编译

自定义机器人集成

源码描述文件,OCS2 使用 GitHub Release .deb

为本技术栈做贡献

源码编译

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 包,但需注意版本冲突。

版本跟踪

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 ocs2

  • 4) 卸载:./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 不匹配错误:

  1. 检查版本兼容性

  2. 彻底清理后重新编译:

    rm -rf build install
    colcon build
    
  3. 确保源码/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