rl-locomotion-for-v1-leg#120
Conversation
There was a problem hiding this comment.
Pull request overview
This PR pivots the Isaac Lab locomotion stack from the prior LEGR/G1 setup to Wato Humanoid V1, adding the robot’s URDF assets + Isaac conversion config, new flat/rough locomotion environment + PPO runner configs, and documentation for running/training in the simulation_isaac container. It also adds a Docker entrypoint ownership-fix mechanism to avoid root-owned bind-mount artifacts on the host.
Changes:
- Add
HOST_UID/HOST_GIDplumbing + an Isaac Lab container entrypoint that periodically re-owns bind-mounted outputs. - Add Wato Humanoid V1 URDF assets and Isaac USD-conversion config; remove legacy LEGR USD/URDF assets.
- Replace/introduce Wato-specific locomotion env + agent configs, update locomotion docs, and add a detailed training session log.
Reviewed changes
Copilot reviewed 43 out of 88 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| watod_scripts/watod-setup-docker-env.sh | Writes HOST_UID/HOST_GID into generated .env for compose use. |
| modules/docker-compose.simulation_isaac.yaml | Bind-mounts entrypoint + passes HOST_UID/HOST_GID/interval env vars into Isaac services. |
| docker/simulation/isaac_lab/README.md | Documents launching Isaac Sim GUI as root in the container. |
| docker/simulation/isaac_lab/QUICKSTART.md | Same GUI-root note + adds locomotion task commands to quickstart. |
| docker/simulation/isaac_lab/entrypoint.sh | Adds periodic chown ownership reclamation for bind-mounted repo outputs. |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/urdf/Wato_Humanoid_V1_isaac.urdf | Adds Isaac-oriented URDF (upright base link, joint naming, meshes, limits). |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/urdf/Wato_Humanoid_V1_isaac_usd/config.yaml | Adds URDF→USD conversion configuration for Isaac Lab. |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/urdf/Wato_Humanoid_V1_isaac_usd/.asset_hash | Adds asset hash for cached conversion artifact tracking. |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/urdf/Wato Humanoid Simultion Model V1.urdf | Adds the original SolidWorks-export URDF. |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/urdf/Wato Humanoid Simultion Model V1.csv | Adds SolidWorks-export metadata CSV for the URDF. |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/package.xml | Updates ROS package metadata for the Wato model assets. |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/gazebo.launch | Updates Gazebo spawn launch to point at the new Wato URDF/package. |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/display.launch | Updates RViz display launch to load the new Wato URDF/package. |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/config/joint_names_Wato Humanoid Simultion Model V1.yaml | Adds joint name list for controllers/tools. |
| autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/CMakeLists.txt | Updates catkin build/install scaffolding for the Wato model package. |
| autonomy/simulation/Humanoid_Wato/UsdModelAssets/LEGR/usd/config.yaml | Removes LEGR USD conversion config (legacy). |
| autonomy/simulation/Humanoid_Wato/UsdModelAssets/LEGR/usd/.asset_hash | Removes LEGR asset hash (legacy). |
| autonomy/simulation/Humanoid_Wato/UsdModelAssets/LEGR/urdf/LEGR.urdf | Removes LEGR URDF (legacy). |
| autonomy/simulation/Humanoid_Wato/UsdModelAssets/LEGR/urdf/LEGR.csv | Removes LEGR URDF CSV (legacy). |
| autonomy/simulation/Humanoid_Wato/UsdModelAssets/LEGR/urdf/LEGR_isaac.urdf | Removes LEGR Isaac-cleaned URDF (legacy). |
| autonomy/simulation/Humanoid_Wato/UsdModelAssets/LEGR/config/joint_names_LEGR.yaml | Removes LEGR joint names config (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/rsl_rl_scripts/diagnose_policy_rollout.py | Updates left/right joint pairing names to match Wato naming. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/rsl_rl_scripts/diagnose_joints.py | Updates script docstring to no longer be LEGR-specific. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/SESSION_PROGRESS_2026-07-13.md | Adds detailed locomotion training session log and outcomes. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/mdp/rewards.py | Removes gait-phase/LEGR-specific reward helpers; keeps Wato/G1-aligned reward set. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/locomotion.md | Rewrites locomotion docs for Wato Humanoid V1 + new task IDs and usage. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/locomotion_env_cfg.py | Updates example commands to Wato locomotion task IDs. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/wato_humanoid_v1/rough_env_cfg.py | Introduces Wato rough locomotion env config (replacing LEGR references). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/wato_humanoid_v1/flat_env_cfg.py | Adds Wato flat locomotion env config + curriculum-gated double-support penalty. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/wato_humanoid_v1/agents/rsl_rl_ppo_cfg.py | Adds Wato PPO runner configs (flat/rough) with updated normalization/entropy/noise. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/wato_humanoid_v1/agents/init.py | Adds package init for Wato agent configs. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/wato_humanoid_v1/init.py | Registers Wato locomotion tasks in Gymnasium for Isaac Lab. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/legr/flat_env_cfg.py | Removes LEGR flat locomotion env config (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/legr/agents/rsl_rl_ppo_cfg.py | Removes LEGR PPO config (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/legr/agents/init.py | Removes LEGR agent init (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/legr/init.py | Removes LEGR task registration (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/g1/rough_env_cfg.py | Removes G1 rough locomotion env config (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/g1/flat_env_cfg.py | Removes G1 flat locomotion env config (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/g1/agents/rsl_rl_ppo_cfg.py | Removes G1 PPO config (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/g1/init.py | Removes G1 task registration (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/tasks/locomotion/config/init.py | Removes prior “G1 locomotion environments” package init (legacy). |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/modelCfg/wato_humanoid_v1.py | Adds Wato humanoid articulation/actuator config used by locomotion envs. |
| autonomy/simulation/Humanoid_Wato/HumanoidRL/HumanoidRLPackage/HumanoidRLSetup/modelCfg/legr.py | Removes LEGR modelCfg (legacy). |
Comments suppressed due to low confidence (4)
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/CMakeLists.txt:3
project(Wato Humanoid Simultion Model V1)is parsed by CMake as multiple arguments; only the first token becomes the project name and the remaining tokens are treated as language identifiers, which will error. Use a single, space-free project/package identifier (snake_case is typical for catkin) and keep it consistent withpackage.xmland any$(find ...)references.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/package.xml:2- ROS/catkin package names cannot contain spaces or uppercase characters.
<name>Wato Humanoid Simultion Model V1</name>will breakcatkin/rospackresolution and any$(find ...)usage in launch files.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/gazebo.launch:14 $(find Wato Humanoid Simultion Model V1)will not resolve because ROS package names cannot contain spaces. This launch file will fail to spawn the model until the package is renamed to a valid identifier and the$(find ...)call is updated accordingly.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/display.launch:7$(find Wato Humanoid Simultion Model V1)will not resolve because ROS package names cannot contain spaces. This will preventrobot_descriptionfrom loading and break RViz display until the package is renamed and references updated.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| trap cleanup EXIT INT TERM | ||
|
|
||
| # Do not use exec — we need the EXIT trap to run so ownership is fixed when | ||
| # the container command (bash / train / sleep) finishes. | ||
| set +e | ||
| "$@" | ||
| status=$? | ||
| exit "$status" |
| # Prefer fast paths that training writes most; fall back to whole mount. | ||
| local targets=( | ||
| "$HUMANOID_ROOT/autonomy/simulation/Humanoid_Wato/HumanoidRL/logs" | ||
| "$HUMANOID_ROOT/autonomy/simulation/Humanoid_Wato/HumanoidRL/outputs" | ||
| "$HUMANOID_ROOT" | ||
| ) |
ad9b8d8 to
edb1622
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 43 out of 87 changed files in this pull request and generated 3 comments.
Comments suppressed due to low confidence (5)
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/package.xml:3
<name>in ROSpackage.xmlmust be a valid package identifier (no spaces, typically lowercase with underscores). With the current value, tools likerospack find/$(find ...)in launch files will fail.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/CMakeLists.txt:3- CMake
project()names cannot contain spaces; this will error during configuration. For catkin packages,project()should also match the ROS package name inpackage.xml.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/gazebo.launch:14 $(find ...)takes a ROS package name (cannot contain spaces). Also, thespawn_modelargs include paths/model names with spaces which will be split by roslaunch unless quoted, causingspawn_modelto mis-parse-file/-model.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/display.launch:6$(find ...)expects a ROS package name (no spaces). With the current value, the robot_description parameter will not resolve at launch time.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/display.launch:19- The
rviznodeargscontains a path with spaces; roslaunch splitsargson whitespace, so the-dpath will be broken unless it is quoted.
| trap cleanup EXIT INT TERM | ||
|
|
||
| # Do not use exec — we need the EXIT trap to run so ownership is fixed when | ||
| # the container command (bash / train / sleep) finishes. | ||
| set +e | ||
| "$@" | ||
| status=$? | ||
| exit "$status" |
| local targets=( | ||
| "$HUMANOID_ROOT/autonomy/simulation/Humanoid_Wato/HumanoidRL/logs" | ||
| "$HUMANOID_ROOT/autonomy/simulation/Humanoid_Wato/HumanoidRL/outputs" | ||
| "$HUMANOID_ROOT" | ||
| ) |
edb1622 to
820360c
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 42 out of 87 changed files in this pull request and generated 3 comments.
Comments suppressed due to low confidence (4)
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/package.xml:3
- ROS/catkin package names must not contain spaces (and are typically lowercase with underscores). Using
Wato Humanoid Simultion Model V1here will breakcatkin/rospackresolution and any$(find ...)substitutions in launch files.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/CMakeLists.txt:5 project(...)names in CMake cannot contain spaces. Thisproject(Wato Humanoid Simultion Model V1)will fail CMake configuration, which breaks building/installing this catkin package.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/gazebo.launch:14$(find ...)expects a ROS package name token; using$(find Wato Humanoid Simultion Model V1)(with spaces) will not resolve and will cause the launch file to fail at runtime.
autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/display.launch:7- Same as gazebo.launch:
$(find Wato Humanoid Simultion Model V1)contains spaces, so rospack substitution will fail and RViz won't launch with the robot_description loaded.
| trap cleanup EXIT INT TERM | ||
|
|
||
| # Do not use exec — we need the EXIT trap to run so ownership is fixed when | ||
| # the container command (bash / train / sleep) finishes. | ||
| set +e | ||
| "$@" | ||
| status=$? | ||
| exit "$status" |
| # Prefer fast paths that training writes most; fall back to whole mount. | ||
| local targets=( | ||
| "$HUMANOID_ROOT/autonomy/simulation/Humanoid_Wato/HumanoidRL/logs" | ||
| "$HUMANOID_ROOT/autonomy/simulation/Humanoid_Wato/HumanoidRL/outputs" | ||
| "$HUMANOID_ROOT" | ||
| ) |
| asset_path: /workspace/humanoid/autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion | ||
| Model V1/urdf/Wato_Humanoid_V1_isaac.urdf | ||
| usd_dir: /workspace/humanoid/autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion | ||
| Model V1/urdf/Wato_Humanoid_V1_isaac_usd |
No description provided.