具身智能(1):Docker、nvidia-ctk、OpenExplorer环境搭建

前言:

现在具身智能领域最近蓬勃发展,从2025年春节宇树机器人上春晚到今年2026年松延动力、宇树科技《武 BOT》、魔法原子、银河通用等4家机器人再上春晚,而且宇树机器人1年内展现了非常高的迭代效率。而机器人大脑芯片方面,除了英伟达,现在就是地瓜机器人的RDK S100(800/128TOPS(int8))。那么如何搭个环境来开发机器人呢?这里有一个基础的环境搭建。

Docker容器部署基础步骤:

1、Docker安装

1.1 如没有使用 GNOME,必须安装以启用从 Docker Desktop 访问终端:

复制代码
sudo apt install gnome-terminal

1.2在Ubuntu上安装Docker Desktop

Ubuntu |Docker 文档

复制代码
 sudo apt-get update
 sudo apt install ./docker-desktop-amd64.deb(提前下载)

Docker Desktop默认安装于:/opt/docker-desktop

Docker Desktop 安装程序还安装了一个包含云集成功能的 Docker CLI 二进制文件,本质上是 Compose CLI 的封装器。符号链接确保包装器能够访问经典的Docker CLI。 /usr/local/bin/com.docker.cli ``/usr/bin/docker ``/usr/bin/docker ``/usr/local/bin/com.docker.cli

启动 Linux Docker Desktopke可打开terminal终端并运行:

复制代码
 systemctl --user start docker-desktop

Docker Desktop 启动后,其内嵌的 Docker Engine 会在 docker version 的 Server 段明确标注版本号。

复制代码
docker version

若需确认已安装的 .deb 包版本:

复制代码
dpkg -l | grep docker-desktop

若执行 docker version 提示无法连接守护进程,需先启动 Docker Desktop(图形界面启动或运行 systemctl --user start docker-desktop)。docker --version 仅显示 Docker CLI 版本,不包含 Docker Desktop 版本,需以 docker version 的 Server 段为准。

以下面指令进行测试,注意nvdia-smi是否可用

复制代码
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi

2、Ubuntu下安装 NVIDIA 容器工具包

复制代码
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
   ca-certificates \
   curl \
   gnupg2

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update

export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.18.2-1
  sudo apt-get install -y \
      nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

配置方法1:通过以下命令配置容器运行时:

复制代码
sudo nvidia-ctk runtime configure --runtime=docker

重启 Docker 守护进程

复制代码
sudo systemctl restart docker

配置方法2:以无根模式运行的 Docker 容器运行时:

复制代码
nvidia-ctk runtime configure --runtime=docker --config=$HOME/.config/docker/daemon.json

重启无根 Docker 守护进程:

复制代码
systemctl --user restart docker

通过以下命令进行配置:

复制代码
sudo nvidia-ctk config --set nvidia-container-cli.no-cgroups --in-place

配置方法3:配置containerd,通过以下命令配置容器运行时

复制代码
sudo nvidia-ctk runtime configure --runtime=containerd

重启容器:

复制代码
sudo systemctl restart containerd

3、Docker用户组

完成Docker基础环境安装后,还需将无root权限的用户添加到Docker用户组中:

复制代码
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart

4、Docker离线镜像加载

先下载离线镜像(区分CPU和GPU版本,gpu就是带3090等nvdia网卡,地瓜算法工具链OpenExplore包Docker等发布下载 - 应用开发 / 算法工具链 - 地瓜机器人论坛https://forum.d-robotics.cc/t/topic/28035),并使用命令将镜像加载到本地。这个提供了包含完整开发环境的Docker镜像,大大简化了开发环境的部署过程。

复制代码
docker load -i ai_toolchain_ubuntu_22_s100_xxx.tar
如
docker load -i ai_toolchain_ubuntu_22_s100_gpu_v3.2.0.tar

5、OE包下载启动及启动

接下来,可在OE包一级目录下直接运行以下脚本启动当前OE版本所对应的Docker容器(data 为评测数据集文件夹路径,需提前创建好后再运行命令,数据集可从如下链接下载:

数据集下载 - OpenExplorerhttps://toolchain.d-robotics.cc/guide/appendix/dataset_link.html

复制代码
sh run_docker.sh data/

问题:

没能找到英伟达驱动

  • 如用vmware虚拟机,默认不直通物理 GPU,上述 GPU 配置无法生效。需要修改驱动参数解除虚拟化限制:
复制代码
  # 编辑 grub 配置
  sudo nano /etc/default/grub
  # 将 GRUB_CMDLINE_LINUX_DEFAULT 改为:
  GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia.NVreg_OpenRmEnableUnsupportedGpus=1"
  # 保存后更新 grub 并重启
  sudo update-grub && sudo reboot

或者在原生ubuntu下使用gpu版本的。

6、模型量化

推荐在浮点模型训练完成后优先选择简单易用的PTQ量化方案,只在精度问题确实无法解决时再切换到QAT量化方案。

7、模型部署

当模型完成量化转换后,即可将编译好的模型部署在开发板环境推理运行。

hrt_model_exec成功编译后,将生成的output_shared_s100_aarch64拷贝到开发板的可写路径,运行如下script中的脚本即可使用该工具。

相关推荐
风止何安啊12 小时前
用 APP 背单词太无聊?我用 Trae Solo 移动端写个小游戏来准备 6级
前端·人工智能·trae
石榴树下的七彩鱼12 小时前
AI图像修复技术深度解析:超分辨率、去模糊与上色原理详解(附论文精读+实践指南)
人工智能·深度学习·计算机视觉·超分辨率·石榴智能·ai图像修复
OceanBase数据库官方博客12 小时前
OceanBase seekdb-cli:专为 AI Agent 设计的数据库接口
数据库·人工智能·oceanbase
MatrixOrigin12 小时前
什么是AI Native的组织,它该具备什么样的特点
人工智能·ai·opc
xiaoxiaoxiaolll12 小时前
金属结构疲劳寿命预测与健康监测技术
人工智能·算法·机器学习
AI视觉网奇12 小时前
3d部件拆分PartCrafter
人工智能·大模型
Ether IC Verifier12 小时前
CPU/GPU/NPU/DPU功能详解与AI应用分析
网络·人工智能·网络协议·tcp/ip·计算机网络·dpu
2601_9494999412 小时前
芯瑞科技800G VR8 OSFP光模块,解决智算中心高速互连四大难题
人工智能·科技
清风lsq13 小时前
大模型-vllm 投机解码实现
人工智能·vllm·大模型推理
2601_9583529013 小时前
拆解 EN-46:一块 15mA 的 DSP 芯片如何实现 50dB 降噪
人工智能·语音识别·信号处理·嵌入式开发·音频降噪·双麦波束成形·硬件拆解