Skip to content

ImChong/RL_Sim2Sim_Demo_Website

Repository files navigation

RL Sim2Sim Demo Website

GitHub Pages Deploy to GitHub Pages License

这是一个基于 Vue 3 + Vuetify 的单页演示网站,用于在浏览器中运行 MuJoCo WebAssembly 场景,并使用 ONNX policy 驱动人形机器人运动。当前默认配置会从 public/examples 加载 G1 场景、policy 和 motion 数据。

在线地址:https://imchong.github.io/RL_Sim2Sim_Demo_Website/

仓库说明

本仓库在实现上引用并改造了以下开源项目源码:

当前仓库的主要工作包括:

  • 将项目迁移到 ImChong/RL_Sim2Sim_Demo_Website
  • 适配 GitHub Pages 部署
  • 保留原始网页演示能力,便于后续继续扩展 sim2sim demo

快速开始

npm install
npm run dev

项目结构

  • src/views/Demo.vue:演示页面的主要 UI 控件
  • src/simulation/main.js:MuJoCo、Three.js 渲染与 policy loop 的启动入口
  • src/simulation/mujocoUtils.js:场景 / policy 加载工具与 MuJoCo 文件预加载逻辑
  • src/simulation/policyRunner.js:ONNX 推理封装与 observation 管线
  • node_modules/mujoco-js/:MuJoCo wasm 运行时(npm 包)
  • public/examples/scenes/:放置 MJCF 文件与 mesh 资源,运行时会预加载到 MuJoCo 的 MEMFS
  • public/examples/checkpoints/:放置 policy 配置 JSON、ONNX 模型与 motion 数据

如何接入你自己的机器人、Policy 和 Motion

1)添加机器人 MJCF 与资源文件

  • 新建目录:public/examples/scenes/<robot>/
  • 将 MJCF 文件放到:public/examples/scenes/<robot>/<robot>.xml
  • 将该 MJCF 依赖的 mesh / texture 一并放到同目录
  • 把所有文件路径追加到 public/examples/scenes/files.json,这样加载器才能在 wasm 文件系统中预加载到 /working/

2)添加 policy 配置与 ONNX 模型

  • 新建:public/examples/checkpoints/<robot>/tracking_policy.json
  • 放置 ONNX 模型到:public/examples/checkpoints/<robot>/tracking_policy.onnx
  • 确认 JSON 中以下字段正确:
    • onnx.path 指向正确的 ONNX 文件,例如 ./examples/checkpoints/<robot>/tracking_policy.onnx
    • policy_joint_names 与 MJCF actuator 中的关节名一致
    • obs_config 中使用的 observation 名称已在 src/simulation/observationHelpers.js 中实现
    • action_scalestiffnessdampingdefault_joint_pos 的长度与 policy_joint_names 一致
  • 如果你的 observation 设计与当前默认实现不同,需要同步修改:
    • src/simulation/observationHelpers.js
    • src/simulation/policyRunner.js

3)可选:添加 tracking motion

  • 新建索引文件:public/examples/checkpoints/<robot>/motions.json
  • 将每段 motion clip 放到:public/examples/checkpoints/<robot>/motions/
  • tracking_policy.json 中,把 tracking.motions_path 指向该索引文件
  • policy 加载时会自动下载索引中列出的全部 motion 文件
  • motions.json 建议包含:
    • formattracking-motion-index-v1
    • base_path:motion 文件夹相对路径,例如 ./motions
    • motions{ name, file } 列表
  • 每个 motion 文件至少应包含:
    • joint_posjointPos
    • root_posrootPos
    • root_quatrootQuat(顺序为 w, x, y, z

4)将应用指向你的机器人与 policy

更新 src/simulation/main.js 中的默认路径:

  • this.currentPolicyPath = './examples/checkpoints/<robot>/tracking_policy.json'
  • await this.reloadScene('<robot>/<robot>.xml')
  • await this.reloadPolicy('./examples/checkpoints/<robot>/tracking_policy.json')

如果你希望同时保留多个机器人,也可以在 src/views/Demo.vue 中增加切换器,并调用:

  • demo.reloadScene(...)
  • demo.reloadPolicy(...)

部署说明

本仓库已经接入 GitHub Pages,推送到 main 分支后会通过 GitHub Actions 自动构建并部署。


📅 计划与待办

关于项目的后续开发计划、键盘控制功能实现以及机器人强化学习训练的学习路径,请查看: 👉 TODO.md

About

人形机器人强化学习在线推理

Resources

License

Stars

Watchers

Forks

Contributors