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

你好,@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_node 的 CMakeLists.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 GitHub:GitHub - D-Robotics/hobot_dnn · GitHub
  3. 社区资源汇总帖:地瓜算法工具链OpenExplore包Docker等发布下载

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