Skip to content

rl-locomotion-for-v1-leg#120

Merged
wilsonchenghy merged 1 commit into
mainfrom
rl-locomotion-for-v1-leg
Jul 13, 2026
Merged

rl-locomotion-for-v1-leg#120
wilsonchenghy merged 1 commit into
mainfrom
rl-locomotion-for-v1-leg

Conversation

@wilsonchenghy

Copy link
Copy Markdown
Collaborator

No description provided.

Copilot AI review requested due to automatic review settings July 13, 2026 23:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_GID plumbing + 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 with package.xml and 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 break catkin/rospack resolution 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 prevent robot_description from 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.

Comment on lines +53 to +60
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"
Comment on lines +21 to +26
# 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"
)
Copilot AI review requested due to automatic review settings July 13, 2026 23:22
@wilsonchenghy wilsonchenghy force-pushed the rl-locomotion-for-v1-leg branch from ad9b8d8 to edb1622 Compare July 13, 2026 23:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 ROS package.xml must be a valid package identifier (no spaces, typically lowercase with underscores). With the current value, tools like rospack 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 in package.xml.
    autonomy/simulation/Humanoid_Wato/Wato Humanoid Simultion Model V1/launch/gazebo.launch:14
  • $(find ...) takes a ROS package name (cannot contain spaces). Also, the spawn_model args include paths/model names with spaces which will be split by roslaunch unless quoted, causing spawn_model to 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 rviz node args contains a path with spaces; roslaunch splits args on whitespace, so the -d path will be broken unless it is quoted.

Comment on lines +53 to +60
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"
Comment on lines +22 to +26
local targets=(
"$HUMANOID_ROOT/autonomy/simulation/Humanoid_Wato/HumanoidRL/logs"
"$HUMANOID_ROOT/autonomy/simulation/Humanoid_Wato/HumanoidRL/outputs"
"$HUMANOID_ROOT"
)
Copilot AI review requested due to automatic review settings July 13, 2026 23:44
@wilsonchenghy wilsonchenghy force-pushed the rl-locomotion-for-v1-leg branch from edb1622 to 820360c Compare July 13, 2026 23:44
@wilsonchenghy wilsonchenghy merged commit 3bc1342 into main Jul 13, 2026
6 checks passed
@wilsonchenghy wilsonchenghy deleted the rl-locomotion-for-v1-leg branch July 13, 2026 23:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 V1 here will break catkin/rospack resolution 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. This project(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.

Comment on lines +53 to +60
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"
Comment on lines +21 to +26
# 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"
)
Comment on lines +1 to +4
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants