Datawhale干货作者陈可为Datawhale成员大家过年好呀今年春晚上的机器人舞蹈和武术表演《武Bot》是不是让大家眼前一亮看着那些铁疙瘩能做出那么丝滑、高难度的动作很多搞技术的同学估计手都痒了这玩意儿咱们普通人能不能自己复刻一个答案是必须能为了让大家少踩坑我把整个项目的安装、排错到最终跑通的关键步骤全部整理成了这篇保姆级实战教程。不论你是想输入一段文本描述还是直接丢一段视频进去都能让机器人跟着动起来甚至还支持多人轨迹和 MuJoCo 仿真录制视频教程已上线可以先马后看https://www.bilibili.com/video/BV1gBfCBpEEb代码已开源在https://github.com/datawhalechina/every-embodied欢迎来Star效果展示输入视频输出视频一、具体干什么核心流程简单来说我们的目标就是搭建一条从“人类动作”到“机器人动作”的转换流水线。核心处理流程如下文本 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二、保姆教程搭建你的环境环境配置是咱们搞AI的“一生之敌”但我已经帮你们把坑都踩平了。强烈建议按推荐方式来0) 第0️⃣步新机器克隆与打补丁先拉取仓库并克隆依赖项⚠️注意本教程后续所有命令默认都在 video2robot 这个目录下执行git clone https://github.com/datawhalechina/every-embodied.git cd every-embodied/07-机器人操作、运动控制/Locomotion/video2robot cd third_party # 分别克隆 GMR 和 PromptHMR git clone --depth 1 https://github.com/taeyoun811/GMR.git GMR git clone --depth 1 https://github.com/taeyoun811/PromptHMR.git PromptHMR cd ..拿到新机器先把代码和依赖拉下来。如果你拿到的是 patch 交付包记得打上这三个补丁git clone --recursive https://github.com/hope5hope/video2robot.git cd video2robot git submodule update --init --recursive # 应用补丁 git apply patches/main.patch git -C third_party/PromptHMR apply ../../patches/prompthmr.patch git -C third_party/GMR apply ../../patches/gmr.patch接着用我已经写好的 YAML 文件一键创建环境。为了防止磁盘爆掉系统盘30G数据盘50G咱们把环境分开放conda env create -f envs/gmr.yml conda config --add envs_dirs /root/gpufree-data/conda_envs conda env create -f envs/phmr.yml(如果环境名已经存在用 conda env update -n gmr -f envs/gmr.yml --prune 更新即可。)1) 配置 GMR 环境conda create -n gmr python3.10 -y conda activate gmr cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot pip install -e . # 安装必备依赖包 pip install loop-rate-limiters pip install smplx pip install imageio pip install mink pip install rich pip install imageio[ffmpeg]2) 配置 PromptHMR 环境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较多。如果自动安装失败请直接滑到文末看“手动配置方案”。三、 启动炫酷的 Web 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 # 固定端口避免 iframe 随机端口拒绝连接的灵异事件 export VISER_FIXED_PORT8789 python -m uvicorn web.app:app --host 0.0.0.0 --port 8000打开浏览器访问 http://localhost:8000你就能看到一个支持中文的绝美界面了不仅可以上传视频还能一键切换铁皮/彩色机器人。 独家小技巧去豆包网页端输入提示词“帮我优化prompt生成中国武术视频人物需要完全在视频范围内”生成视频后传到 Web UI 里直接跑如果运行 Web 时自动下载 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四、 多人同屏轨迹提取与 MuJoCo 导出一个人跳舞不够震撼来个女团/男团齐舞1) 生成多轨与全视野展示conda activate gmr cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot # 提取多人轨迹 python scripts/convert_to_robot.py --project data/video_001 --all-tracks # viser 可视化所有机器人 python scripts/visualize.py --project data/video_001 --robot-viser --robot-all2) 导出 MuJoCo 物理仿真视频单人版直接跑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多人版这是我们优化的新脚本修复了0秒视频和相机不跟随画面的Bugpython 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.mp4五、 进阶探讨为什么复刻的动作容易“摔跤”真机落地和仿真还是有很大差距的目前的落地难点在于动作映射精度SMPL-X 姿态到机器人关节的 Retargeting 存在物理限制。环境感知缺失开环控制不知道地面滑不滑碰到障碍物不会躲。动力学约束春晚那种腾空翻转不仅对电机扭矩要求极高控制响应稍慢就会失去平衡。所以未来我们将引入 IsaacSim 进行强化学习训练用它极高的物理仿真精度和碰撞检测把动作“映射”升级为真正的“稳健性训练”。避坑指南仓库组织与排错速查遇到 Bug 别砸电脑先看看这里Q1Web 任务秒退提示 conda 找不到已在主仓库修复支持自动探测 CONDA_EXE。Q2robot-viser 偶发“localhost 拒绝连接”老实使用固定端口export VISER_FIXED_PORT8789。Q3MuJoCo 录制报错缺少 imageio backend运行 pip install -U imageio[ffmpeg]。Q4lietorch/droid_backends 编译报错针对 PyTorch 2.4把源码里的 .type() 统统改成 .scalar_type() 即可搞定。如果你要跨机复刻或者做二次开发推荐使用这套丝滑组合拳YAML 导出 patch 补丁 模型下载脚本。源机器导出cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot mkdir -p envs conda env export -n gmr envs/gmr.yml conda env export -n phmr envs/phmr.yml目标机器导入并打补丁git clone https://github.com/datawhalechina/every-embodied.git cd every-embodied/07-机器人操作、运动控制/Locomotion/video2robot conda env create -f envs/gmr.yml conda env create -f envs/phmr.yml git apply patches/main.patch git -C third_party/PromptHMR apply ../../patches/prompthmr.patch git -C third_party/GMR apply ../../patches/gmr.patch记录一下当前的基线 commit 备查主仓库030f3410dac3cb15a2570376dca6a0f46c2d158cPromptHMR4f8915c5b9603344c56e95fadb9a01a23ba2272dGMR069b4fd48f440e813b2b4d69255c70f53e5f83fb附录一必备模型权重下载推荐从 HuggingFace 的 Datawhale 仓库直接拉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附录二硬核玩家专属——phmr环境纯手动配置指南如果你用前面的一键安装失败了跟着这段长长的命令走绝对能成# Clone main repo git clone https://github.com/datawhalechina/every-embodied.git cd every-embodied/07-机器人操作、运动控制/Locomotion/video2robot conda create -n phmr python3.10 -y 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 echoexport PYTHONPATH$PYTHONPATH:/root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR ~/.bashrc source ~/.bashrc conda install -c conda-forge eigen -y # 编译droidcalib source /opt/conda/etc/profile.d/conda.sh conda activate phmr conda install -c conda-forge eigen -y export CPATH$CONDA_PREFIX/include/eigen3:${CPATH:-} cd /root/gpufree-data/every-embodied/07-机器人操作、运动控制/Locomotion/video2robot/third_party/PromptHMR/pipeline/droidcalib python setup.py install # 添加动态链接库路径 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 echoexport 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 # 编译 lietorch 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 ../.. # 安装 detectron2 与 SAM2 git clone https://github.com/facebookresearch/detectron2.git cd /root/gpufree-data/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 # 代码适配替换 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 # 补充最后的依赖包torch-scatter 会跑比较久喝杯咖啡耐心等 python -m pip install -U torch-scatter --no-build-isolation python -m pip install -U xformers代码和文档都在这里了剩下的就看你们的了如果复刻成功别忘了来评论区交作业哦以上就是全部内容啦所有核心代码、跳坑技巧和填坑代码都在这里了连按键和命令都手把手喂到嘴边了。更详细文字教程https://psce.pw/8rbp2s开源项目链接https://github.com/datawhalechina/every-embodied里面还有很多具身智能前沿项目的手把手复现欢迎大家体验反馈点上Star大家有问题随时可以在代码仓库提交issue~一起“点赞”三连↓