具身智能操作任务挑战赛 | 乐聚机器人·北京通用人工智能研究院 | [2025/09 2026/03]
本仓库基于 Lerobot 开发,结合乐聚 Kuavo(夸父)机器人,提供 数据格式转换(rosbag → parquet)、模仿学习(IL)训练、仿真器测试以及真机部署验证的完整示例代码。
关键词:具身智能 · 工业制造 · 阿里云天池竞赛
- 使用本仓库代码熟悉 Kuavo 机器人数据格式,完成模仿学习模型的训练与测试。
- 围绕主办方设定的机器人操作任务,开发具备感知与决策能力的模型。
- 最终目标及评价标准以赛事官方说明文档为准。
- 数据格式转换模块(rosbag → Lerobot parquet)
- IL 模型训练框架 (diffusion policy, ACT)
- Mujoco 模拟器支持
- 真机验证与部署
- 系统:推荐 Ubuntu 20.04(22.04 / 24.04 建议使用 Docker 容器运行)
- Python:推荐 Python 3.10
- ROS:ROS Noetic + Kuavo Robot ROS 补丁(支持 Docker 内安装)
- 依赖:Docker、NVIDIA CUDA Toolkit(如需 GPU 加速)
推荐 Ubuntu 20.04 + NVIDIA CUDA Toolkit + Docker。
详细步骤(展开查看),仅供参考
sudo apt update
sudo apt upgrade -y
ubuntu-drivers devices
# 测试通过版本为 535,可尝试更新版本(请勿使用 server 分支)
sudo apt install nvidia-driver-535
# 重启计算机
sudo reboot
# 验证驱动
nvidia-smi
在docker镜像中使用nvidia-smi加速时,需要加载nvidia runtime 库,因此需要安装NVIDIA Container Toolkit
sudo apt install curl
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 apt-get update
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-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}
sudo apt update
sudo apt install git
sudo apt install docker.io
# 配置docker中的 NVIDIA Runtime
nvidia-ctk
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo docker info | grep -i runtime
# 输出中应包含 "nvidia" Runtime
kuavo mujoco 仿真与真机运行均基于 ROS Noetic环境,由于真机kuavo机器人是ubuntu20.04 + ROS Noetic(非docker),因此推荐直接安装 ROS Noetic,若因ubuntu版本较高无法安装 ROS Noetic,可使用docker。
a. 系统直接安装 ROS Noetic(推荐)
- 官方指南:ROS Noetic 安装
- 国内加速源推荐:小鱼ROS
安装示例:
wget http://fishros.com/install -O fishros && . fishros
# 菜单选择:5 配置系统源 → 2 更换源并清理第三方源 → 1 添加ROS源
wget http://fishros.com/install -O fishros && . fishros
# 菜单选择:1 一键安装 → 2 不更换源安装 → 选择 ROS1 Noetic 桌面版
测试 ROS 安装:
roscore # 新建终端
rosrun turtlesim turtlesim_node # 新建终端
rosrun turtlesim turtle_teleop_key # 新建终端
b. 使用 Docker 安装 ROS Noetic
- 首先最好是换个源:
sudo vim /etc/docker/daemon.json
- 然后在这个json文件中写入一些镜像源:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://docker.1ms.run",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
]
}
- 然后保存文件并退出后,重启docker服务:
sudo systemctl daemon-reload && sudo systemctl restart docker
- 现在开始创建镜像,首先建立Dockerfile:
mkdir /path/to/save/docker/ros/image
cd /path/to/save/docker/ros/image
vim Dockerfile
然后在Dockerfile文件中写入如下内容:
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g' /etc/apt/sources.list && \
sed -i 's|http://security.ubuntu.com/ubuntu/|http://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g' /etc/apt/sources.list
RUN apt-get update && apt-get install -y locales tzdata gnupg lsb-release
RUN locale-gen en_US.UTF-8
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
# 设置ROS的debian源
RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 添加ROS的Keys
RUN apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# 安装ROS Noetic
# 设置键盘布局为 Chinese
RUN apt-get update && \
apt-get install -y keyboard-configuration apt-utils && \
echo 'keyboard-configuration keyboard-configuration/layoutcode string cn' | debconf-set-selections && \
echo 'keyboard-configuration keyboard-configuration/modelcode string pc105' | debconf-set-selections && \
echo 'keyboard-configuration keyboard-configuration/variant string ' | debconf-set-selections && \
apt-get install -y ros-noetic-desktop-full && \
apt-get install -y python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential && \
rm -rf /var/lib/apt/lists/*
# 初始化rosdep
RUN rosdep init
写入完毕后保存退出。执行ubuntu20.04 + ROS Noetic镜像的构建:
sudo docker build -t ubt2004_ros_noetic .
构建完成后进入镜像即可,初次启动容器加载镜像:
sudo docker run -it --name ubuntu_ros_container ubt2004_ros_noetic /bin/bash
# 或 GPU 启动(推荐)
sudo docker run -it --gpus all --runtime nvidia --name ubuntu_ros_container ubt2004_ros_noetic /bin/bash
# 可选,挂载本地目录路径等
# sudo docker run -it --gpus all --runtime nvidia --name ubuntu_ros_container -v /path/to/your/code:/root/code ubt2004_ros_noetic /bin/bash
之后每次加载:
sudo docker start ubuntu_ros_container
sudo docker exec -it ubuntu_ros_container /bin/bash
进入镜像后,初始化ros环境变量,然后启动roscore
source /opt/ros/noetic/setup.bash
roscore
无误的话,ubuntu20.04 + ros noetic的docker配置方式就结束了。
# SSH
git clone --depth=1 [email protected]:LejuRobotics/kuavo_data_challenge.git
# 或者
# HTTPS
git clone --depth=1 https://github.com/LejuRobotics/kuavo_data_challenge.git
更新third_party下的lerobot子模块:
```bash
cd kuavo_data_challenge
git submodule init
git submodule update --recursive
使用 conda (推荐)或 python venv 创建虚拟环境(推荐 python 3.10):
conda create -n kdc python=3.10
conda activate kdc
或:先安装python3.10,再使用venv创建虚拟环境
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.10 python3.10-venv python3.10-dev
python3.10 -m venv kdc
source kdc/bin/activate
查看和确保安装正确:
python # 查看python版本,看到确认输出为3.10.xxx(通常是3.10.18)
# 输出示例:
# Python 3.10.18 (main, Jun 5 2025, 13:14:17) [GCC 11.2.0] on linux
# Type "help", "copyright", "credits" or "license" for more information.
# >>>
pip --version # 查看pip对应的版本,看到确认输出为3.10的pip
# 输出示例:pip 25.1 from /path/to/your/env/python3.10/site-packages/pip (python 3.10)
安装依赖:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 建议首先换源,能加快下载安装速度
pip install -r requirements_ilcode.txt # 无需ROS Noetic,但只能使用kuavo_train模仿学习训练代码,kuavo_data(数转)及 kuavo_deploy(部署代码)均依赖ROS
# 或
pip install -r requirements_total.txt # 需确保 ROS Noetic 已安装 (推荐)
如果运行时报ffmpeg或torchcodec的错:
conda install ffmpeg==6.1.1
# 或
pip uninstall torchcodec
将 Kuavo 原生 rosbag 数据转换为 Lerobot 框架可用的 parquet 格式:
python kuavo_data/CvtRosbag2Lerobot.py \
--config-path=../configs/data/ \
--config-name=KuavoRosbag2Lerobot.yaml \
rosbag.rosbag_dir=/path/to/rosbag \
rosbag.lerobot_dir=/path/to/lerobot_data
说明:
rosbag.rosbag_dir
:原始 rosbag 数据路径rosbag.lerobot_dir
:转换后的lerobot-parquet 数据保存路径,通常会在此目录下创建一个名为lerobot的子文件夹configs/data/KuavoRosbag2Lerobot.yaml
:请查看并根据需要选择启用的相机及是否使用深度图像等
使用转换好的数据进行模仿学习训练:
python kuavo_train/train_policy.py \
--config-path=../configs/policy/ \
--config-name=diffusion_config.yaml \
task=your_task_name \
method=your_method_name \
root=/path/to/lerobot_data/lerobot \
training.batch_size=128 \
policy_name=diffusion
说明:
task
:自定义,任务名称(最好与数转中的task定义对应),如pick and place
method
:自定义,方法名,用于区分不同的训练,如diffusion_bs128_usedepth_nofuse
等root
:训练数据的本地路径,注意加上lerobot,与1中的数转保存路径需要对应,为:/path/to/lerobot_data/lerobot
training.batch_size
:批大小,可根据 GPU 显存调整policy_name
:使用的策略,用于策略实例化的,目前支持diffusion
和act
- 其他参数可详见yaml文件说明,推荐直接修改yaml文件,避免命令行输入错误
完成训练后可启动mujoco仿真器并调用部署代码并进行评估:
a. 启动mujoco仿真器:详情请见readme for simulator
b. 调用部署代码
-
配置文件位于
./configs/deploy/
:kuavo_sim_env.yaml
:仿真器运行配置kuavo_real_env.yaml
:真机运行配置
-
请查看yaml文件,并修改下面的
# inference configs
相关的参数(模型加载)等。 -
启动自动化推理部署:
bash kuavo_deploy/eval_kuavo.sh
-
按照指引操作,一般最后请选择
"8. 仿真中自动测试模型,执行eval_episodes次:
,这步操作详见kuavo deploy
步骤同3中a部分,更换指定配置文件为 kuavo_real_env.yaml
,即可在真机上部署测试。
仿真环境:
话题名 | 功能说明 |
---|---|
/cam_h/color/image_raw/compressed |
上方相机 RGB 彩色图像 |
/cam_h/depth/image_raw/compressedDepth |
上方相机深度图 |
/cam_l/color/image_raw/compressed |
左侧相机 RGB 彩色图像 |
/cam_l/depth/image_rect_raw/compressedDepth |
左侧相机深度图 |
/cam_r/color/image_raw/compressed |
右侧相机 RGB 彩色图像 |
/cam_r/depth/image_rect_raw/compressedDepth |
右侧相机深度图 |
/gripper/command |
仿真rq2f85夹爪控制命令 |
/gripper/state |
仿真rq2f85夹爪当前状态 |
/joint_cmd |
所有关节的控制指令,包含腿部 |
/kuavo_arm_traj |
机器人机械臂轨迹控制 |
/sensors_data_raw |
所有传感器原始数据 |
真机环境:
话题名 | 功能说明 |
---|---|
/cam_h/color/image_raw/compressed |
上方相机 RGB 彩色图像 |
/cam_h/depth/image_raw/compressedDepth |
上方相机深度图,realsense |
/cam_l/color/image_raw/compressed |
左侧相机 RGB 彩色图像 |
/cam_l/depth/image_rect_raw/compressedDepth |
左侧相机深度图,realsense |
/cam_r/color/image_raw/compressed |
右侧相机 RGB 彩色图像 |
/cam_r/depth/image_rect_raw/compressedDepth |
右侧相机深度图,realsense |
/control_robot_hand_position |
灵巧手关节角控制指令 |
/dexhand/state |
灵巧手当前关节角状态 |
/leju_claw_state |
乐聚夹爪当前关节角状态 |
/leju_claw_command |
乐聚夹爪关节角控制指令 |
/joint_cmd |
所有关节的控制指令,包含腿部 |
/kuavo_arm_traj |
机器人机械臂轨迹控制 |
/sensors_data_raw |
所有传感器原始数据 |
outputs/
├── train/<task>/<method>/run_<timestamp>/ # 训练模型与参数
├── eval/<task>/<method>/run_<timestamp>/ # 测试日志与视频
KUAVO_DATA_CHALLENGE/
├── configs/ # 配置文件
├── kuavo_data/ # 数据处理转换模块
├── kuavo_deploy/ # 部署脚本(模拟器/真机)
├── kuavo_train/ # 模仿学习训练代码
├── lerobot_patches/ # Lerobot 运行补丁
├── outputs/ # 模型与结果
├── third_party/ # Lerobot 依赖
└── requirements_xxx.txt # 依赖列表
└── README.md # 说明文档
该目录包含对 Lerobot 的兼容性补丁,主要功能包括:
- 扩展
FeatureType
,支持 RGB 与 Depth 图像 - 定制
compute_episode_stats
与create_stats_buffers
,用于图像与深度数据的统计量统计,min,max,mean,std等 - 修改
dataset_to_policy_features
,确保 Kuavo RGB + Depth的FeatureType正确映射
需要使用基于lerobot的定制设计如深度数据、新的FeatureType、归一化方式等,可自行添加,并在使用时在入口脚本(如kuavo_train/train_policy.py等训练文件代码)的最开头一行引入:
import lerobot_patches.custom_patches # Ensure custom patches are applied, DON'T REMOVE THIS LINE!
本项目基于 Lerobot 扩展而成。 感谢 HuggingFace 团队开发的开源机器人学习框架,为本项目提供了重要基础。