1. 项目概述
春晚舞蹈机器人复刻项目是一个基于Isaac Sim仿真平台和RTX 4090显卡的具身机器人开发实践。这个项目旨在通过视频分析、姿态提取和运动控制等技术,实现机器人对舞蹈动作的复现。作为一名长期从事机器人开发的工程师,我记录下这次尝试的完整过程,包括环境配置、依赖安装、问题排查等关键环节。
项目核心使用了Isaac Sim 5.1仿真环境和IsaacLab-2.3.2工具包,硬件平台为配备24GB显存的RTX 4090显卡。整个流程涉及视频处理、人体姿态估计、运动轨迹生成和机器人控制等多个技术模块。虽然最终未能完全复现原项目效果,但过程中积累的经验对类似机器人开发项目具有重要参考价值。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与配置
2.1 基础环境搭建
首先需要搭建Python虚拟环境,我选择了conda作为环境管理工具。创建名为"phmr"的虚拟环境:
bash复制conda create -n phmr python=3.10
conda activate phmr
选择Python 3.10版本是因为它能够很好地兼容项目中使用的各种深度学习库。环境创建完成后,需要配置pip的镜像源以加速依赖安装:
bash复制pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
对于Git仓库的克隆,也建议配置代理加速:
bash复制git config --global url."https://ghproxy.com/https://github.com/".insteadOf "https://github.com/"
2.2 项目代码获取
项目代码托管在GitHub上,使用以下命令克隆主仓库:
bash复制git clone https://github.com/datawhalechina/every-embodied.git
cd every-embodied/07-机器人操作、运动控制/Locomotion/video2robot
项目依赖几个关键的第三方库,需要单独克隆:
bash复制cd third_party
git clone --depth 1 https://github.com/taeyoun811/GMR.git GMR
git clone --depth 1 https://github.com/taeyoun811/PromptHMR.git PromptHMR
cd ..
克隆完成后,需要应用项目提供的补丁文件:
bash复制git apply patches/main.patch
git -C third_party/PromptHMR apply ../../patches/prompthmr.patch
git -C third_party/GMR apply ../../patches/gmr.patch
3. 依赖安装与配置
3.1 Conda环境配置
项目提供了两个conda环境配置文件:gmr.yml和phmr.yml。首先尝试创建gmr环境:
bash复制conda env create -f envs/gmr.yml
如果遇到"video2robot==0.1.0"找不到的错误,这是正常现象,可以继续配置phmr环境。需要先修改phmr.yml文件,指定环境路径:
yaml复制prefix: /root/gpufree-data/conda_envs/phmr
然后添加conda环境路径并创建环境:
bash复制conda config --add envs_dirs /root/gpufree-data/conda_envs
conda env create -f envs/phmr.yml
3.2 Python依赖安装
激活phmr环境后,安装项目核心依赖:
bash复制conda activate phmr
pip install -e .
pip install loop-rate-limiters smplx imageio mink rich imageio[ffmpeg]
对于计算机视觉相关功能,还需要安装detectron2和segment-anything:
bash复制git clone https://github.com/facebookresearch/detectron2.git
cd detectron2
pip install -e . --no-build-isolation
git clone https://github.com/facebookresearch/segment-anything-2.git
cd segment-anything-2
pip install -e . --no-build-isolation
3.3 CUDA与PyTorch配置
项目中遇到的最常见问题就是CUDA版本与PyTorch不兼容。如果出现类似"CUDA version (12.8) mismatches the version that was used to compile PyTorch (13.0)"的错误,需要重新安装匹配的PyTorch版本:
bash复制pip uninstall torch torchvision -y
pip install torch==2.4.0 torchvision==0.19.0 --index-url https://download.pytorch.org/whl/cu121
验证安装是否成功:
bash复制python -c "import torch; print(torch.__version__, torch.version.cuda)"
4. 第三方库编译与安装
4.1 lietorch编译
lietorch是一个用于李群操作的Python库,需要从源码编译安装:
bash复制mkdir -p python_libs
cd python_libs
git clone https://github.com/princeton-vl/lietorch.git
cd lietorch
git submodule update --init --recursive
python setup.py install
cd ../..
编译过程中可能会遇到"droid_backends_intr"模块缺失的错误,这需要先编译droidcalib:
bash复制export CPATH="$CONDA_PREFIX/include/eigen3:${CPATH:-}"
cd third_party/PromptHMR/pipeline/droidcalib
python setup.py install
cd ../../../..
4.2 chumpy安装
chumpy是一个用于处理numpy数组的库,需要单独安装:
bash复制mkdir -p python_libs
git clone https://github.com/Arthur151/chumpy python_libs/chumpy
python -m pip install -e python_libs/chumpy --no-build-isolation
4.3 其他依赖处理
安装xformers和torch-scatter等扩展库:
bash复制python -m pip install -U xformers
pip install torch-scatter -f https://data.pyg.org/whl/torch-2.4.0+cu121.html --no-index
5. 模型文件准备
5.1 模型下载与配置
项目需要使用SMPL人体模型,由于直接从原地址下载可能失败,建议使用备用链接:
bash复制mkdir -p data/body_models/smpl
wget -O data/body_models/smpl/smpl.zip https://download.is.tue.mpg.de/SMPL_python_v.1.1.0.zip
unzip data/body_models/smpl/smpl.zip -d data/body_models/smpl/
下载完成后需要整理模型文件结构:
bash复制mv data/body_models/smpl/SMPL_python_v.1.1.0/smpl/models/*.pkl data/body_models/smpl/
5.2 预训练权重获取
舞蹈动作识别模型需要从Hugging Face下载预训练权重:
bash复制git lfs install
git lfs clone https://hf-mirror.com/Datawhale/spring-festival-wushu-robot-replication-model
如果下载失败,可以尝试手动下载并放置到对应目录。
6. 项目运行与测试
6.1 环境变量配置
运行前需要设置必要的环境变量:
bash复制echo 'export PYTHONPATH=$PYTHONPATH:/root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR' >> ~/.bashrc
source ~/.bashrc
6.2 可视化界面启动
项目提供了基于FastAPI的Web可视化界面:
bash复制conda activate phmr
python -m pip install -U fastapi "uvicorn[standard]" jinja2 python-multipart
export VISER_FIXED_PORT=8789
python -m uvicorn web.app:app --host 0.0.0.0 --port 8000
启动后可以通过浏览器访问可视化界面,上传视频并测试动作提取功能。
6.3 动作提取测试
对上传的视频进行姿态提取测试:
bash复制python scripts/extract_pose.py --project data/video_008
如果运行成功,会在项目目录下生成包含姿态数据的文件。
7. 常见问题与解决方案
7.1 CUDA版本不匹配
这是最常见的问题,表现为运行时出现CUDA版本错误。解决方案是:
- 确认显卡驱动支持的CUDA版本:
nvidia-smi - 安装匹配的PyTorch版本
- 清理旧版本并重新安装:
bash复制pip uninstall torch torchvision torch-scatter torch-sparse torch-geometric -y
pip cache purge
pip install torch==2.4.0 torchvision==0.19.0 --index-url https://download.pytorch.org/whl/cu121
7.2 模型文件下载失败
当从Hugging Face或Google Drive下载失败时:
- 尝试使用镜像站点(如hf-mirror.com)
- 手动下载后放置到正确目录
- 检查文件权限和路径是否正确
7.3 依赖冲突
多个库依赖不同版本的相同包时:
- 创建新的干净虚拟环境
- 按照项目要求的顺序安装依赖
- 使用
pip check验证依赖关系
7.4 编译错误
编译第三方库时出错:
- 确保安装了正确的开发工具链(gcc, make等)
- 检查环境变量(特别是CUDA_HOME和PATH)
- 查看库的文档获取特定平台的编译指南
8. 项目经验总结
通过这次复现尝试,我总结了以下几点关键经验:
-
环境隔离至关重要:为每个项目创建独立的conda环境,可以避免大多数依赖冲突问题。建议在环境创建时就指定Python版本,并记录所有安装的包及其版本。
-
版本匹配是成功关键:特别是CUDA、PyTorch和各种扩展库之间的版本关系。在开始前就应该确认好兼容的版本组合,而不是遇到问题后再解决。
-
大型文件预先准备:像SMPL模型这样的大型文件,最好提前下载好并放置到正确位置,避免因网络问题导致流程中断。
-
分步验证:不要期望一次性完成所有配置。每完成一个关键组件的安装,就应该进行简单测试,确保它能正常工作。
-
文档记录:详细记录每个步骤和遇到的问题,这不仅有助于自己后续参考,也能帮助其他开发者少走弯路。
虽然最终没有完全复现原项目的所有功能,但这个过程让我对机器人动作控制系统的各个组件有了更深入的理解,特别是在环境配置和问题排查方面积累了宝贵经验。这些经验可以直接应用到未来的机器人开发项目中。
