x86上通过docker编译s100需要编译dnn_node吗?可以把dnn_node的CMakeList贴出来吗

wget -c ftp://oeftp@sdk.d-robotics.cc/oe_v3.2.0/ai_toolchain_ubuntu_22_s100_cpu_v3.2.0.tar --ftp-password=Oeftp~123$%
–2026-05-12 10:44:01-- ftp://oeftp@sdk.d-robotics.cc/oe_v3.2.0/ai_toolchain_ubuntu_22_s100_cpu_v3.2.0.tar
=> ‘ai_toolchain_ubuntu_22_s100_cpu_v3.2.0.tar’
Resolving sdk.d-robotics.cc (sdk.d-robotics.cc)… 139.129.17.229
Connecting to sdk.d-robotics.cc (sdk.d-robotics.cc)|139.129.17.229|:21… connected.
Logging in as oeftp … Logged in!
==> SYST … done. ==> PWD … done.
==> TYPE I … done. ==> CWD (1) /oe_v3.2.0 … done.
==> SIZE ai_toolchain_ubuntu_22_s100_cpu_v3.2.0.tar … done.

==> PASV … done. ==> RETR ai_toolchain_ubuntu_22_s100_cpu_v3.2.0.tar …
No such file ‘ai_toolchain_ubuntu_22_s100_cpu_v3.2.0.tar’.

你好,@ximenqin

抱歉,这个 FTP 链接已经过期/文件名已变更。社区帖子 28035 中的资源确实如帖子所述"可能落后于主线版本"。


:white_check_mark: 当前可行的获取方案

方案 1:尝试新版 FTP 路径

# 尝试 3.7.0 版本 (对应系统 4.0.x)
wget -c ftp://oeftp@sdk.d-robotics.cc/oe_v3.7.0/s100-3.7.0-oe-package.tgz --ftp-password=Oeftp~123$%

# 或者尝试这个路径
wget -c ftp://oeftp@sdk.d-robotics.cc/oe_v3.7.0/ai_toolchain_ubuntu_22_s100_cpu_v3.7.0.tar --ftp-password=Oeftp~123$%

方案 2:从 RDK DOC 直接下载

访问官方文档的资源下载页面:

https://developer.d-robotics.cc/rdk_doc/rdk_s/Quick_start/install_os/rdk_s100

页面内通常有最新的 OE 工具链包下载链接(含 Docker 镜像)

方案 3:使用 Docker Pull(最简单)

# 尝试直接拉取(无需下载大文件)
docker pull registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_22_s100_cpu:v3.7.0

如果 pull 太慢,可以配置 Docker 镜像加速器。

方案 4:在社区帖子留言请求更新

28035 帖子下回复:

“求更新 S100 OE 3.7.0 的 FTP 下载链接,3.2.0 的文件已不存在”

官方维护者 CauchyKesai 通常会更新链接。


:bulb: 建议优先顺序

优先级 方案 原因
1 Docker Pull 最快,无需手动下载大文件
2 RDK DOC 下载 官方维护,链接最新
3 社区留言 官方会回复有效链接
4 旧版 FTP 可能已失效

:question: 请确认你的板端系统版本

sudo cat /etc/version
  • 如果是 4.0.x → 需要 OE 3.7.0
  • 如果是 3.2.x → 可以用 OE 3.2.0(但 FTP 链接需更新)

需要我帮你在社区帖子 28035 下留言请求官方更新链接吗?或者你可以直接联系官方技术支持 support@d-robotics.cc 索取最新下载链接。

本人想用docker搭建s100的交叉编译环境,pc用的是ubuntu22.04,有文档吗?我想要确定具体的镜像文件以及代码的分支、版本. 谢谢。然后编译dnn_node,看了下CMakelist.txt 好像s100并没有适配,请问这个该如何解决,谢谢

你好,@ximenqin

针对你搭建 S100 交叉编译环境的需求,官方文档已提供完整指引。以下是基于 OE 3.7.0 版本(对应板端系统 4.0.5)的详细步骤:


:link: 官方文档入口

RDK S100 算法工具链开发指南


:clipboard: 关键信息汇总

1. 版本对应关系

组件 版本 说明
OE 工具链 3.7.0 对应板端系统 4.0.5
Docker 镜像 v3.7.0 包含交叉编译工具链和依赖
系统确认 cat /etc/version 板端执行确认系统版本

2. Docker 镜像获取(两种方式)

方式 A:在线拉取(推荐)
# 1. 登录地瓜 Registry 服务器
docker login -u "ccr$deliver-ronly" registry.d-robotics.cc -p 'VLaeatrjF9yGf6I44trT74zKhUpZSVlr'

# 2. 拉取 CPU 版本镜像
docker pull registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_22_s100_s600_cpu:v3.7.0

# 3. 拉取 GPU 版本镜像(如需 GPU 加速)
docker pull registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_22_s100_s600_gpu:v3.7.0
方式 B:离线下载(网络不佳时)
# CPU 版本
wget https://d-robotics-aitoolchain.oss-cn-beijing.aliyuncs.com/oe/3.7.0/ai_toolchain_ubuntu_22_s100_s600_cpu_v3.7.0.tar

# GPU 版本
wget https://d-robotics-aitoolchain.oss-cn-beijing.aliyuncs.com/oe/3.7.0/ai_toolchain_ubuntu_22_s100_s600_gpu_v3.7.0.tar

# 加载镜像到 Docker
docker load -i ai_toolchain_ubuntu_22_s100_s600_cpu_v3.7.0.tar

3. 代码仓库与分支

  • hobot_dnn 仓库GitHub - D-Robotics/hobot_dnn · GitHub
  • 分支选择:使用 main 分支或 s100_develop 分支(如有)
  • robot_dev_config:用于 TROS 工程配置,包含 .repos 文件

:computer: 交叉编译环境搭建步骤

步骤 1:启动 Docker 容器

# 以 CPU 版本为例,挂载本地工作空间
docker run -it --rm \
    -v /path/to/your/workspace:/root/tros_ws \
    registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_22_s100_s600_cpu:v3.7.0 \
    bash

步骤 2:准备 TROS 工作空间

cd /root/tros_ws
mkdir -p src

# 克隆 robot_dev_config(获取 .repos 文件)
git clone https://github.com/D-Robotics/robot_dev_config.git

# 导入源码(根据 .repos 文件拉取 hobot_dnn 等依赖)
vcs-import src < ./robot_dev_config/ros2_release.repos

步骤 3:编译 dnn_node(关键步骤)

# 安装依赖(首次编译需要)
rosdep update
rosdep install --from-paths src --ignore-src -y

# 编译 dnn_node(指定 S100 平台)
source /opt/tros/humble/setup.bash
colcon build --packages-select dnn_node --cmake-args -DPLATFORM_S100=ON

:question: 关于 CMakeLists.txt 的 S100 适配问题

核心结论:不需要修改 CMakeLists.txt 文件,S100 适配是通过 CMake 参数 控制的。

原因说明

  • dnn_nodeCMakeLists.txt 中已内置多平台支持逻辑
  • 通过 -DPLATFORM_S100=ON 参数激活 S100 特定的编译配置
  • 底层依赖库(libhb_dnn.so)由 Docker 镜像提供,已包含 S100 支持

验证编译结果

# 检查生成的库文件
ls -l install/dnn_node/lib/dnn_node/
# 应包含 S100 架构的可执行文件或库

:bulb: 常见问题排查

问题现象 解决方案
Docker 拉取失败 检查网络,或使用离线 tar 包方式
编译报错 “PLATFORM_S100 not found” 确认 colcon build 命令中包含 --cmake-args -DPLATFORM_S100=ON
板端运行报错 确认板端系统版本与 OE 工具链版本匹配(4.0.5 对应 OE 3.7.0)
代码仓库拉取失败 检查 Git 网络配置,或尝试使用镜像源

:link: 相关资源

  1. OE 用户手册https://toolchain.d-robotics.cc/
  2. hobot_dnn GitHubGitHub - D-Robotics/hobot_dnn · GitHub
  3. 社区资源汇总帖地瓜算法工具链OpenExplore包Docker等发布下载

如果需要进一步协助(如具体编译报错分析),请提供详细信息!

  1. ROS包 开发叫编译环境参考
    5.1.1 环境准备 | RDK DOC

2.BPU 模型量化参考

  1. dnn_node 适配S100 ,建议仔细看下Cmakelist
    hobot_dnn/dnn_node/CMakeLists.txt at 6efaaf394d5fc6eca22669e9b50a4b53f1cce5eb · D-Robotics/hobot_dnn · GitHub

在x86上交叉编译s100,拉取的是develop分支tros_2.5.2版本,s100可以编译通过。

编译x86,会提示缺少ament等的包,这些包我可以自行拉取吧?

后续烧录到s100,版本是没问题的吧? 帮忙解答下,谢谢

你好,@ximenqin

针对你的三个问题,逐一解答:


:white_check_mark: 问题 1:S100 交叉编译通过

结论:编译通过是好的开始,但需要注意版本匹配。

组件 你使用的版本 官方推荐版本 风险
TROS 2.5.2 (develop) 3.x / 4.x 可能存在 API 差异
OE 工具链 未明确 3.7.0 (对应系统 4.0.x) 需确认
板端系统 未明确 4.0.5 需确认

建议:先确认板端系统版本:

# 在 S100 板端执行
sudo cat /etc/version

:white_check_mark: 问题 2:x86 编译缺少 ament 包

结论不建议自行拉取,原因如下:

编译目标 环境要求 ament 包来源
S100 (交叉编译) S100 Docker 镜像 镜像内预置 (/opt/tros/)
x86 (本地编译) 原生 ROS2 环境 apt install ros-humble-ament-*

关键说明

  1. 交叉编译时:应在 S100 Docker 容器内编译,ament 包已由镜像提供
  2. x86 本地编译:生成的二进制是 x86 架构,无法在 S100 (ARM64) 上运行
  3. 自行拉取风险:可能导致版本不匹配,编译出的库无法与板端 TROS 兼容

正确做法

# 在 S100 Docker 容器内编译(不要在本机 x86 编译)
docker run -it --rm \
    -v /path/to/workspace:/root/tros_ws \
    registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_22_s100_s600_cpu:v3.7.0 \
    bash

# 容器内执行
cd /root/tros_ws
source /opt/tros/humble/setup.bash
colcon build --packages-select dnn_node --cmake-args -DPLATFORM_S100=ON

:white_check_mark: 问题 3:烧录到 S100 版本是否有问题

结论存在版本不匹配风险,需验证以下对应关系:

板端系统版本 推荐 OE 版本 推荐 TROS 版本
4.0.x 3.7.0 3.x / 4.x
3.2.x 3.2.0 2.5.x
3.0.x 2.6.x 2.0.x

潜在问题

  • 如果板端是 4.0.x 系统,使用 TROS 2.5.2 编译的包可能API 不兼容
  • libhb_dnn.so 库版本不匹配可能导致运行时崩溃
  • ROS2 消息类型可能发生变化

验证步骤

# 1. 确认板端系统版本
sudo cat /etc/version

# 2. 确认板端 TROS 版本
ros2 pkg prefix dnn_node

# 3. 部署后测试运行
ros2 launch dnn_node_example dnn_node_example.launch.py

:bulb: 最终建议

优先级 建议 原因
1 升级 TROS 到 3.x/4.x 与官方文档和 OE 3.7.0 匹配
2 在 Docker 内编译 避免 x86/ARM64 架构问题
3 不要自行拉取 ament 包 使用镜像预置环境
4 先小范围测试 部署后先运行官方 demo 验证环境

:link: 参考文档


请补充以下信息以便进一步协助

  1. 板端系统版本 (sudo cat /etc/version)
  2. 具体编译报错信息(如果有)
  3. 部署后是否遇到运行时错误

有其他问题欢迎继续提问!

不推荐交叉编译进行开发

缺少的包自行补全即可,应该跟烧录无关?编译也只是ros包。