具身智能(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中的脚本即可使用该工具。

相关推荐
DeepModel4 分钟前
机器学习非线性降维:局部线性嵌入 LLE
人工智能·机器学习
lUie INGA10 分钟前
rust web框架actix和axum比较
前端·人工智能·rust
新缸中之脑32 分钟前
HDRI-Generator: 环境贴图生成AI
人工智能·贴图
网安情报局37 分钟前
企业押注Agentic SOC:AI重塑安全运营新范式
人工智能·网络安全
夜幕下的ACM之路39 分钟前
一、基础知识学习(Transformer + 上下文窗口 + Token 计算 + Embedding 向量)
人工智能·学习·transformer·embedding
东离与糖宝39 分钟前
LangChain4j vs Spring AI:最新对比,Java企业级Agent开发
java·人工智能
私人珍藏库43 分钟前
[Windows] 绘画工具 Krita v5.3.1
人工智能·windows·媒体·工具·软件·多功能
前端摸鱼匠1 小时前
【AI大模型春招面试题13】残差连接(Residual Connection)与层归一化(Layer Norm)在Transformer中的作用?
人工智能·深度学习·语言模型·面试·transformer·求职招聘
重生之我要成为代码大佬1 小时前
HuggingFace生态实战:从模型应用到高效微调
人工智能·python·大模型·huggingface·模型微调