Datawhale之春晚机器人跳舞复刻任务目标主要流程租用服务器,开始部署环境新机器复刻GMR环境PromptHMR环境(4090场景)下载模型权重更新模型下载文件写入失败时处理方法Web UI启动 (稳定版)多人轨迹可视化生成多轨机器人动作robot-viser 显示所有轨迹视频导出单机器人多机器人github加速配置全局配置单次git clone加速环境名词前缀修改手动配置方案参考(phmr环境)参考链接任务目标输入文本动作描述或已有视频输出机器人动作robot_motion*.pkl与可视化Web/viser/MuJoCo支持多人轨迹all tracks与多机器人 MuJoCo 录制主要流程Prompt / Video - PromptHMR - SMPL-X - GMR - Robot Motion常用命令:python scripts/generate_video.py --model seedance --action 动作序列角色向前走四步 python scripts/extract_pose.py --project data/video_001 python scripts/convert_to_robot.py --project data/video_001 --all-tracks python scripts/visualize.py --project data/video_001 --robot-viser --robot-all租用服务器,开始部署环境如果大家的电脑算力不够的话可以租用服务器租用服务器连接:算力市场镜像选择isaaclab点击进入jupyterlab新机器复刻在jupyterlab的命令行终端当中输入如下指令cd gpufree-data git clone https://github.com/datawhalechina/every-embodied.git cd every-embodied/07-机器人操作、运动控制/Locomotion/video2robot cd third_party # 3. 克隆 GMR git clone --depth 1 https://github.com/taeyoun811/GMR.git GMR # 4. 克隆 PromptHMR git clone --depth 1 https://github.com/taeyoun811/PromptHMR.git PromptHMR cd ..如果下载速度过慢可以看这个链接进行github加速的配置github加速配置默认进行位置:every-embodied/07-机器人操作、运动控制/Locomotion/video2robot。检测patch交付包git apply patches/main.patch git -C third_party/PromptHMR apply ../../patches/prompthmr.patch git -C third_party/GMR apply ../../patches/gmr.patch使用YAML进行一键创建环境conda env create -f envs/gmr.yml conda config --add envs_dirs /root/gpufree-data/conda_envs # 第一个环境安装在系统盘第二个安装在数据盘避免超过磁盘负荷系统和数据盘分别为30G和50G conda env create -f envs/phmr.yml若环境名已经存在:conda env update -n gmr -f envs/gmr.yml --prune conda env update -n phmr -f envs/phmr.yml --pruneGMR环境在上述运行完YAML的过程当中会有需要我们手动安装包conda create -n gmr python3.10 -y conda activate gmr cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot pip install -e . # gmr下还需要安装 pip install loop-rate-limiters pip install smplx pip install imageio pip install mink pip install rich pip install imageio[ffmpeg]PromptHMR环境(4090场景)conda create -n phmr python3.10 -y conda activate phmr cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR # bash scripts/install.sh --pt_version2.4 不推荐使用默认一键安装bug较多下面可以移动到手动配置的相关内容,从而可以稳定运行conda activate phmr cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR pip install -r requirements.txt 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运行完如上内容之后打开一个新的终端,输入以下指令:export PYTHONPATH$PYTHONPATH:/root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR echo export PYTHONPATH$PYTHONPATH:/root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR ~/.bashrc source ~/.bashrc返回phmr环境下的终端:conda install -c conda-forge eigen -y下面就是一些编译内容的下载,大概是下面这些内容这块大家在下载的时候请务必保持耐心下载模型权重下载相关模型权重推荐方案注意镜像的一些操作git-lfs install git lfs clone https://huggingface.co/Datawhale/spring-festival-wushu-robot-replication-model下载相关模型权重替代方案cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR bash scripts/fetch_smplx.sh bash scripts/fetch_data.sh更新模型下载文件文件更新说明跳转路径cd every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR输入vim /root/gpufree-data/video2robot/third_party/PromptHMR/scripts/fetch_smplx.sh然后将下面的代码进行复制粘贴#!/bin/bash urle () { [[ ${1} ]] || return 1; local LANGC i x; for (( i 0; i ${#1}; i )); do x${1:i:1}; [[ ${x} [a-zA-Z0-9.~-] ]] echo -n ${x} || printf %%%02X ${x}; done; echo; } download_with_auth () { local username$1 local password$2 local url$3 local output$4 if command -v aria2c /dev/null 21; then aria2c \ --allow-overwritetrue \ --continuetrue \ --check-certificatefalse \ --file-allocationnone \ --max-connection-per-server16 \ --split16 \ --min-split-size1M \ --timeout60 \ --retry-wait5 \ --max-tries0 \ --headerContent-Type: application/x-www-form-urlencoded \ --post-datausername${username}password${password} \ --out$(basename ${output}) \ --dir$(dirname ${output}) \ ${url} else echo warning: aria2c not found, falling back to wget wget \ --post-data username${username}password${password} \ ${url} \ -O ${output} \ --no-check-certificate \ --continue fi } # # SMPL-X model echo -e \nYou need to register at https://smpl-x.is.tue.mpg.de read -p Username (SMPL-X): username read -s -p Password (SMPL-X): password echo username$(urle $username) password$(urle $password) mkdir -p data/body_models download_with_auth $username $password https://download.is.tue.mpg.de/download.php?domainsmplxsfilemodels_smplx_v1_1.zip ./data/body_models/smplx.zip unzip data/body_models/smplx.zip -d data/body_models/smplx mv data/body_models/smplx/models/smplx/* data/body_models/smplx/ rm -rf data/body_models/smplx/models rm -rf data/body_models/smplx.zip # SMPL Male and Female model echo -e \nYou need to register at https://smpl.is.tue.mpg.de read -p Username (SMPL): username read -s -p Password (SMPL): password echo username$(urle $username) password$(urle $password) mkdir -p data/body_models/smpl download_with_auth $username $password https://download.is.tue.mpg.de/download.php?domainsmplsfileSMPL_python_v.1.1.0.zip ./data/body_models/smpl/smpl.zip unzip data/body_models/smpl/smpl.zip -d data/body_models/smpl/smpl mv data/body_models/smpl/smpl/SMPL_python_v.1.1.0/smpl/models/basicmodel_neutral_lbs_10_207_0_v1.1.0.pkl data/body_models/smpl/SMPL_NEUTRAL.pkl mv data/body_models/smpl/smpl/SMPL_python_v.1.1.0/smpl/models/basicmodel_f_lbs_10_207_0_v1.1.0.pkl data/body_models/smpl/SMPL_FEMALE.pkl mv data/body_models/smpl/smpl/SMPL_python_v.1.1.0/smpl/models/basicmodel_m_lbs_10_207_0_v1.1.0.pkl data/body_models/smpl/SMPL_MALE.pkl rm -rf data/body_models/smpl/smpl rm -rf data/body_models/smpl/smpl.zip # Supplementary files gdown --folder -O ./data/ https://drive.google.com/drive/folders/1JU7CuU2rKkwD7WWjvSZJKpQFFk_Z6NL7?uspshare_link gdown -O ./data/body_models/smplx/ 1v9Qy7ZXWcTM8_a9K2nSLyyVrJMFYcUOk写入失败时处理方法临时目录保存:w /tmp/temp_smplx.sh:q!退出Vim输入如下指令:sudo cp /tmp/temp_smplx.sh ~/gpufree-data/every-embodied/07-机器人操作、运动控 制/Locomotion/video2robot/third_party/PromptHMR/scripts/fetch_smplx.shWeb UI启动 (稳定版)conda activate phmr python -m pip install -U fastapi uvicorn[standard] jinja2 python-multipart pkill -f video2robot/visualization/robot_viser.py cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot export VISER_FIXED_PORT8789 python -m uvicorn web.app:app --host 0.0.0.0 --port 8000访问:http://localhost:8000说明固定 VISER_FIXED_PORT 是为了避免 iframe 随机端口拒绝连接Web 已支持中文界面、Seedance、上传视频、铁皮/彩色切换豆包网页端生成机器人视频prompt帮我生成图片帮我优化prompt生成中国武术视频人物需要完全在视频范围内上传视频执行即可详见视频教程运行时会自动下载一些torch的小模型如果下载失败尝试手动mkdir -p /root/.cache/torch/hub/checkpoints rm -f /root/.cache/torch/hub/v0.10.0.zip.*.partial wget -O /root/.cache/torch/hub/v0.10.0.zip https://github.com/pytorch/vision/zipball/v0.10.0 wget -O /root/.cache/torch/hub/checkpoints/deeplabv3_resnet50_coco-cd0a2569.pth https://download.pytorch.org/models/deeplabv3_resnet50_coco-cd0a2569.pth ls -lh /root/.cache/torch/hub/v0.10.0.zip /root/.cache/torch/hub/checkpoints/deeplabv3_resnet50_coco-cd0a2569.pth多人轨迹可视化生成多轨机器人动作conda activate gmr cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot python scripts/convert_to_robot.py --project data/video_001 --all-tracksrobot-viser 显示所有轨迹python scripts/visualize.py --project data/video_001 --robot-viser --robot-all视频导出单机器人conda activate gmr cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/GMR python scripts/vis_robot_motion.py \ --robot unitree_g1 \ --robot_motion_path /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/data/video_005/robot_motion.pkl \ --record_video \ --video_path /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/data/video_005/mujoco_robot.mp4多机器人python scripts/vis_robot_motion_multi.py \ --robot unitree_g1 \ --robot_motion_paths \ /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/data/video_005/robot_motion_track_1.pkl \ /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/data/video_005/robot_motion_track_2.pkl \ --record_video \ --max_seconds 10 \ --camera_azimuth 0 \ --video_path /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/data/video_005/mujoco_multi_robot_10s_front.mp4github加速配置全局配置直接配置gh-proxy.org的为全局代理后续所有的git操作都将通过gh-proxy.org进行加速。# 配置全局代理 git config --global url.https://gh-proxy.org/https://github.com/.insteadOf https://github.com/单次git clone加速如果只需要单次git clone加速可以在clone命令中添加代理参数。只需要将clone的地址前面添加https://gh-proxy.org/不要用空格。git clone https://gh-proxy.org/https://github.com/WJQSERVER-STUDIO/ghproxy环境名词前缀修改这个环境名称太长了,利用如下命令修改:conda config --set env_prompt ({name}) bash手动配置方案参考(phmr环境)# # 第一部分克隆主仓库并进入目标子目录 # # 克隆 Every-Embodied 主仓库Datawhale 开源项目 git clone https://github.com/datawhalechina/every-embodied.git # 进入仓库中的视频驱动机器人控制模块目录 # 路径说明07-机器人操作、运动控制 → Locomotion → video2robot cd every-embodied/07-机器人操作、运动控制/Locomotion/video2robot # # 第二部分创建并激活 Conda 虚拟环境 # # 创建名为 phmr 的虚拟环境指定 Python 3.10-y 表示自动确认 conda create -n phmr python3.10 -y # 激活刚创建的虚拟环境 conda activate phmr # 进入 PromptHMR 第三方依赖目录绝对路径请根据你的实际路径调整 cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR # 安装 PromptHMR 项目的基础 Python 依赖 pip install -r requirements.txt # # 第三部分安装 chumpy 库特殊处理 # # 创建本地第三方库存储目录 mkdir -p python_libs # 克隆 chumpy 库一个用于自动微分的旧版 NumPy 扩展已不再维护 # 注意这里克隆到 python_libs/chumpy 子目录避免污染全局环境 git clone https://github.com/Arthur151/chumpy python_libs/chumpy # 以可编辑模式安装 chumpy # --no-build-isolation: 跳过构建隔离避免依赖冲突chumpy 需要特殊处理 python -m pip install -e python_libs/chumpy --no-build-isolation # # ⚙️ 第四部分配置 PYTHONPATH 环境变量 # # 临时设置 PYTHONPATH让 Python 能找到 PromptHMR 模块 # $PYTHONPATH: 保留原有路径后面追加新路径 export PYTHONPATH$PYTHONPATH:/root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR # 永久生效将上述环境变量写入 ~/.bashrc用户登录时自动加载 echo export PYTHONPATH$PYTHONPATH:/root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR ~/.bashrc # 立即生效重新加载 bash 配置文件 source ~/.bashrc # # 第五部分安装 Eigen 库C 线性代数库 # # 通过 conda-forge 频道安装 eigen3 开发库后续编译 C 扩展需要 conda install -c conda-forge eigen -y # # 第六部分编译 droidcalib 模块相机标定工具 # # 【被注释掉的备选方案】手动设置 CPATH 并安装如果下面方法失败可尝试 # export CPATH$CONDA_PREFIX/include/eigen3:${CPATH:-} cd ... python setup.py install # 重新加载 conda 环境配置确保环境变量生效 source /opt/conda/etc/profile.d/conda.sh # 重新激活 phmr 环境防止上下文丢失 conda activate phmr # 再次确保 eigen 已安装防御性编程避免后续编译失败 conda install -c conda-forge eigen -y # 设置 CPATH 环境变量告诉编译器在哪里找 eigen3 头文件 # ${CPATH:-} 表示如果 CPATH 已存在则保留否则为空 export CPATH$CONDA_PREFIX/include/eigen3:${CPATH:-} # 进入 droidcalib 源码目录 cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR/pipeline/droidcalib # 编译并安装 droidcalib会调用 C 编译器 python setup.py install # # 第七部分配置 LD_LIBRARY_PATH动态库路径 # # 临时设置动态链接库搜索路径确保程序能找到 # - PyTorch 的 C 库 # - 系统 CUDA 库 # - 其他系统级共享库 export LD_LIBRARY_PATH/root/gpufree-data/conda_envs/phmr/lib/python3.10/site-packages/torch/lib:/usr/lib/x86_64-linux-gnu:/usr/local/cuda/lib64:/usr/lib64:/usr/local/lib # 永久生效写入 ~/.bashrc echo export LD_LIBRARY_PATH/root/gpufree-data/conda_envs/phmr/lib/python3.10/site-packages/torch/lib:/usr/lib/x86_64-linux-gnu:/usr/local/cuda/lib64:/usr/lib64:/usr/local/lib ~/.bashrc # 立即生效 source ~/.bashrc # ⚠️ 注意如果更换环境或升级 PyTorch需要更新此路径 # # 第八部分编译 lietorch 库李群李代数优化库 # # 确保 python_libs 目录存在 mkdir -p python_libs cd python_libs # 克隆 lietorch 仓库用于视觉 SLAM/位姿优化的 PyTorch 扩展 git clone https://github.com/princeton-vl/lietorch.git # 进入目录 cd lietorch # 初始化子模块lietorch 依赖其他第三方代码 git submodule update --init --recursive # 编译安装会调用 CUDA 编译器确保已安装正确版本的 CUDA python setup.py install # 返回上层目录 cd ../.. # # 第九部分安装 Detectron2Facebook 目标检测框架 # # 克隆 Detectron2 官方仓库 git clone https://github.com/facebookresearch/detectron2.git # 进入目录使用绝对路径确保位置正确 cd /root/gpufree-data/detectron2 # 以可编辑模式安装--no-build-isolation 避免依赖冲突 pip install -e . --no-build-isolation # # ✂️ 第十部分安装 SAM2Segment Anything Model 2 # # 克隆 Meta 发布的 SAM2 仓库用于视频/图像分割 git clone https://github.com/facebookresearch/segment-anything-2.git # 进入目录并安装 cd segment-anything-2 pip install -e . --no-build-isolation # # ️ 第十一部分代码适配修改修复兼容性问题 # # 使用 sed 命令修改 sam2_video_predictor.py 文件 # 作用将函数导入语句中的 load_video_frames, load_video_frames_from_np # 替换为仅 load_video_frames # 原因可能是上游代码变更导致函数名/签名不兼容需要手动修复 sed -i s/load_video_frames, load_video_frames_from_np/load_video_frames/g /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR/pipeline/detector/sam2_video_predictor.py # # 第十二部分补充安装关键 PyTorch 扩展 # # 安装 torch-scatter用于图神经网络/稀疏张量操作 # ⚠️ 此命令编译时间较长可能 10~30 分钟请耐心等待勿中断 python -m pip install -U torch-scatter --no-build-isolation # 安装 xformersMeta 发布的 PyTorch 加速库提升 Transformer 效率 python -m pip install -U xformers下载相关模型权重推荐方案git-lfs install git lfs clone https://huggingface.co/Datawhale/spring-festival-wushu-robot-replication-model下载相关模型权重替代方案cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR bash scripts/fetch_smplx.sh bash scripts/fetch_data.sh配置子模块cd /root/gpufree-data/video2robot/third_party/PromptHMR/python_libs/ietonrch git submodule update --init --recursive合并 Patch 命令快速同步改动如果你是在原始仓库基础上进行同步可以使用以下命令合并补丁cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot # 1. 确保子模块已初始化 git submodule update --init --recursive # 2. 应用主仓库补丁 git apply patches/main.patch # 3. 应用 PromptHMR 补丁 git -C third_party/PromptHMR apply ../../patches/prompthmr.patch # 4. 应用 GMR 补丁 git -C third_party/GMR apply ../../patches/gmr.patch参考链接AI具身智能春晚机器人跳舞复刻