S100能用docker的方式来编译吗,这一块有什么介绍文档吗,包括bootloader/kernel的编译,以及上层ros应用的编译

你好,@TonyYan!

关于 S100 使用 Docker 进行编译的问题,社区已有明确方案和官方文档支持。核心结论如下:

:white_check_mark: 核心结论

可以,官方推荐使用 Docker 进行 S100 的交叉编译。

但需区分编译对象:

  1. 上层 ROS/TROS 应用:完全支持 Docker,这是官方推荐的标准开发流程(在 PC x86 环境交叉编译)。
  2. Bootloader / Kernel:官方文档未提供 Docker 镜像,通常建议在 Ubuntu 主机直接搭建环境编译,或自行封装 Docker。

1. TROS/ROS 应用编译(Docker 方式):white_check_mark:

这是最成熟、文档最全的部分。官方提供了预置好工具链的 Docker 镜像。

:pushpin: 操作步骤(基于最新文档 v4.0.5)

第一步:下载并加载 Docker 镜像

根据你的 Ubuntu 版本选择镜像:

# Ubuntu 22.04 主机
wget http://archive.d-robotics.cc/TogetheROS/cross_compile_docker/pc_tros_ubuntu22.04_v1.0.0.tar.gz
sudo docker load --input pc_tros_ubuntu22.04_v1.0.0.tar.gz

# Ubuntu 24.04 主机 (Jazzy)
wget http://archive.d-robotics.cc/TogetheROS/cross_compile_docker/pc_tros_ubuntu24.04_v1.0.1.tar.gz
sudo docker load --input pc_tros_ubuntu24.04_v1.0.1.tar.gz

第二步:启动容器并获取源码

# 启动容器,挂载本地工作目录
sudo docker run -it --entrypoint="/bin/bash" \
  -v ~/s100_ws:/mnt/ws \
  <IMAGE_ID>  # 替换为 docker images 查到的实际 ID

# --- 以下在容器内执行 ---
cd /mnt/ws
mkdir -p tros_ws/src
cd tros_ws

# 获取编译配置 (S100 通常使用 develop 或 jazzy 分支)
git clone https://github.com/D-Robotics/robot_dev_config.git -b develop

# 拉取源码
vcs-import src < ./robot_dev_config/ros2_release.repos

第三步:执行交叉编译

# 在容器内的 /mnt/ws/tros_ws 目录下
bash ./robot_dev_config/build.sh -p S100

编译产物在 install 目录,拷贝到 S100 的 /opt/tros 即可使用。

:open_book: 完整文档: TROS 交叉编译指南


2. Bootloader / Kernel 编译 :warning:

这部分属于系统底层开发,官方目前未提供专用的 Docker 镜像。

  • 现状:Bootloader (U-Boot) 和 Kernel 编译依赖特定的 BSP SDK,通常需要在 Ubuntu 主机上直接安装交叉编译工具链(如 gcc-aarch64-linux-gnu)。
  • 建议方案:
    1. 首选:按照官方 BSP 文档在 Ubuntu 主机搭建环境编译。
    2. 进阶:如果你熟悉 Docker,可以自行构建包含底层工具链的镜像(基于 Ubuntu + 交叉编译工具链 + SDK 源码),但这需要你自己维护镜像。
    3. 社区参考:

3. 板端运行 Docker(非编译)

如果你是想在 S100 板子上跑 Docker 容器(部署应用):

  • 可行,但必须使用 ARM64 架构 的基础镜像(如 arm64v8/ubuntu)。
  • 关键点:需映射 BPU 设备节点(--privileged 或 -v /dev/bpu:/dev/bpu)。
  • :open_book: 参考讨论:s100 开发板能用 docker 部署 ros2 么

总结建议

编译对象 是否推荐 Docker 说明
TROS/ROS 应用 :white_check_mark: 强烈推荐 官方提供镜像,环境隔离,避免污染主机
Bootloader/Kernel :cross_mark: 不推荐 官方无现成镜像,建议直接在 Ubuntu 主机编译
板端部署运行 :warning: 可行 需 ARM64 镜像,注意设备映射和性能开销

建议先按官方文档完成 TROS 应用的 Docker 交叉编译流程,底层编译如有需要再单独搭建环境。遇到具体报错欢迎贴日志!