userdarius commited on
Commit
51079ba
·
verified ·
1 Parent(s): 9a06db9

Add humanoid_v1 velocity policy: final ckpt, exported policy, configs, eval videos, docs

Browse files
.gitattributes CHANGED
@@ -33,3 +33,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ exported/policy.onnx.data filter=lfs diff=lfs merge=lfs -text
37
+ videos/diagonal_fwd0.4_lat0.3.mp4 filter=lfs diff=lfs merge=lfs -text
38
+ videos/forward_cmd+y0.5.mp4 filter=lfs diff=lfs merge=lfs -text
39
+ videos/sidestep_left_cmd-x0.5.mp4 filter=lfs diff=lfs merge=lfs -text
40
+ videos/sidestep_right_cmd+x0.5.mp4 filter=lfs diff=lfs merge=lfs -text
41
+ videos/topspeed_fwd1.0.mp4 filter=lfs diff=lfs merge=lfs -text
42
+ videos/turn_yaw0.5.mp4 filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ library_name: rsl-rl
4
+ tags:
5
+ - reinforcement-learning
6
+ - robotics
7
+ - humanoid
8
+ - locomotion
9
+ - isaac-lab
10
+ ---
11
+
12
+ # Humanoid V1 — Command Axes, Forward Walking, and play.py Fixes
13
+
14
+ _Investigation notes, 2026-06-02 → 2026-06-03. Task: `ETHRC-humanoidv1-v0`._
15
+
16
+ This documents two things discovered while trying to get the `humanoid_v1` velocity
17
+ policy to walk **forward** and to record an eval video:
18
+
19
+ 1. A non-obvious **90°-rotated body-axis convention** on this robot that makes the
20
+ velocity-command axes counter-intuitive (and made the policy appear to "walk backwards").
21
+ 2. Four fixes to `scripts/rsl_rl/play.py` required to run playback/export under **rsl-rl ≥ 5.0**.
22
+
23
+ ---
24
+
25
+ ## 1. The command-axis quirk (IMPORTANT)
26
+
27
+ **This robot's base frame is rotated 90° from the usual locomotion convention.**
28
+ Verified empirically by commanding fixed velocities and watching the playback:
29
+
30
+ | Command (`base_velocity`) | Robot body direction | Observed motion on screen |
31
+ | --- | --- | --- |
32
+ | `lin_vel_x = +0.5` | body +x | **sidesteps right** |
33
+ | `lin_vel_x = -0.5` | body −x | **sidesteps left** |
34
+ | `lin_vel_y = -0.5` (original cfg) | body −y | **walks backward** |
35
+ | `lin_vel_y = +0.5` | body +y | **walks forward** ✅ |
36
+
37
+ So, for `humanoid_v1`:
38
+
39
+ - **`lin_vel_x` = LATERAL (strafe) axis.** `+x` = right, `−x` = left.
40
+ - **`lin_vel_y` = FORE/AFT axis.** **`+y` = FORWARD**, `−y` = backward.
41
+
42
+ A sidestep (crab) gait looks different from a fore/aft gait from any camera angle, so this
43
+ is a real body-frame property, not a camera artifact. A quantitative check agreed: commanding
44
+ `lin_vel_x = 0.5` produced a mean `root_lin_vel_b[:, 0]` of ~0.355 m/s (the robot does move
45
+ along body-x — that axis is just its lateral direction).
46
+
47
+ ### Why the policy looked like it "walked backwards"
48
+
49
+ The **original** command config trained the robot toward **`−y` (backward)** with only small
50
+ lateral motion — i.e. it was effectively a *backward-walking* task:
51
+
52
+ ```python
53
+ # ORIGINAL (backward-biased) — velocity_env_cfg.py CommandsCfg.base_velocity
54
+ ranges: lin_vel_x=(-0.1, 0.1) lin_vel_y=(-0.8, -0.1) ang_vel_z=(-0.1, 0.1)
55
+ limit_ranges: lin_vel_x=(-0.3, 0.3) lin_vel_y=(-1.0, 0.5) ang_vel_z=(-0.2, 0.2)
56
+ ```
57
+
58
+ `lin_vel_y` was always negative → backward. `lin_vel_x` (lateral) was tiny. So during eval with
59
+ random commands the robot mostly strafed/backpedaled.
60
+
61
+ ### The fix (applied)
62
+
63
+ `source/.../tasks/locomotion/manager_based/humanoid_v1/velocity_env_cfg.py`,
64
+ `CommandsCfg.base_velocity` now biases **`lin_vel_y` positive (forward)** and keeps
65
+ `lin_vel_x` symmetric/small (lateral):
66
+
67
+ ```python
68
+ # CORRECTED (forward-biased)
69
+ ranges: lin_vel_x=(-0.2, 0.2) lin_vel_y=(0.0, 0.5) ang_vel_z=(-1.0, 1.0)
70
+ limit_ranges: lin_vel_x=(-0.4, 0.4) lin_vel_y=(-0.3, 1.0) ang_vel_z=(-1.0, 1.0)
71
+ ```
72
+
73
+ Curriculum note: `mdp.lin_vel_cmd_levels` (the only enabled curriculum term) widens **both**
74
+ `lin_vel_x` and `lin_vel_y` by `±0.1` each time the `track_lin_vel_xy` reward exceeds
75
+ `0.8 × weight`, clamped to `limit_ranges`. It logs `lin_vel_x[1]` as `Curriculum/lin_vel_cmd_levels`.
76
+ With the corrected config, forward speed (`lin_vel_y` upper bound) ramps toward **1.0 m/s** while
77
+ backward is capped at `−0.3` and lateral at `±0.4`.
78
+
79
+ > **NOTE:** A retrain was **not** performed. The existing checkpoint already walks forward well
80
+ > when commanded `+y` (forward and backward gaits are fairly symmetric, so it generalized despite
81
+ > training mostly on `−y`). The corrected config is left on disk for a future forward-primary retrain.
82
+
83
+ ### Measured capability map (current checkpoint, run `2026-06-02_20-42-09`)
84
+
85
+ Mean over 300 steps, 4 envs, single fixed commands (recall +y = forward, +x = right, body axes
86
+ rotated 90°). Achieved values are `root_lin_vel_b` (body frame) and `root_ang_vel_w[z]`:
87
+
88
+ | Test | Commanded | Achieved | Tracking | Verdict |
89
+ | --- | --- | --- | --- | --- |
90
+ | Forward | `+y = 0.5` | ~0.36 m/s | ~71% | ✅ |
91
+ | Backward | `−y` (trained) | in-distribution | — | ✅ (primary trained skill) |
92
+ | Sidestep R / L | `±x = 0.5` | ~0.36 m/s | ~71% | ✅ |
93
+ | Pure turn | yaw `0.50` | yaw 0.34 (drift fwd −0.06 / lat +0.07) | 68% | ✅ turns ~in place |
94
+ | Diagonal | fwd `0.40` + lat `0.30` | fwd 0.33 (82%), lat 0.21 (71%), yaw −0.02 | 70–82% | ✅ combined motion |
95
+ | Top speed | fwd `1.0` | fwd 0.71, no drift | 71% | ✅ stable, undershoots |
96
+
97
+ **Conclusions:**
98
+
99
+ - The policy is genuinely **omnidirectional**: forward, backward, lateral (both), turning, and
100
+ **combined/diagonal** commands (translation + yaw simultaneously) all work, and it stays upright
101
+ through all of them (tests ran on the training env cfg, i.e. with disturbances on).
102
+ - **Uniform ~70% velocity tracking** (range 68–82%) — it undershoots consistently. Practical rule:
103
+ **command ≈ 1.4× the target speed** to actually hit it.
104
+ - **Top forward speed ≈ 0.7 m/s** at full command; it doesn't reach 1.0 but stays stable trying.
105
+ - A retrain on the corrected forward-biased config (curriculum → 1.0 m/s) would tighten tracking
106
+ and raise top speed, if ever desired.
107
+
108
+ Reference clips in `.../videos/play/`: `rl-video-turn0p5.mp4`, `rl-video-diag_fwd0p4_lat0p3.mp4`,
109
+ `rl-video-topspeed_fwd1p0.mp4` (plus the cardinal-direction clips listed in §2).
110
+
111
+ ---
112
+
113
+ ## 2. How to play / record a forward-walking eval
114
+
115
+ The robot's forward direction is `+lin_vel_y`, so command that explicitly. Example (headless + video):
116
+
117
+ ```bash
118
+ cd /home/darius/mark1/rc_humanoid_rl_lab
119
+ CKPT=$(ls -t logs/rsl_rl/humanoid_v1_locomotion/<RUN_DIR>/model_*.pt | head -1)
120
+
121
+ /home/darius/rayane/IsaacLab/isaaclab.sh -p scripts/rsl_rl/play.py \
122
+ --task=ETHRC-humanoidv1-v0 --num_envs=4 --headless --video --video_length=300 \
123
+ --checkpoint "$CKPT" \
124
+ env.commands.base_velocity.ranges.lin_vel_x="[0.0, 0.0]" \
125
+ env.commands.base_velocity.ranges.lin_vel_y="[0.5, 0.5]" \
126
+ env.commands.base_velocity.ranges.ang_vel_z="[0.0, 0.0]" \
127
+ env.commands.base_velocity.rel_standing_envs=0.0
128
+ ```
129
+
130
+ - Video lands in `logs/rsl_rl/humanoid_v1_locomotion/<RUN_DIR>/videos/play/rl-video-step-0.mp4`.
131
+ - Exported policy (`policy.pt`, `policy.onnx`) lands in the sibling `exported/` dir.
132
+ - Drop the Hydra overrides to use the (random) curriculum command ranges instead.
133
+ - ⚠️ Each playback launches another Isaac Sim process; it competes with any running trainers on the GPU.
134
+
135
+ ### Reference eval clips (run 2026-06-02_20-42-09, lateral/backward policy)
136
+
137
+ Under `.../videos/play/`:
138
+
139
+ | File | Command | Result |
140
+ | --- | --- | --- |
141
+ | `rl-video-cmdPLUSy0p5.mp4` | `lin_vel_y=+0.5` | **forward** ✅ |
142
+ | `rl-video-cmdPLUSx0p5-backward.mp4` | `lin_vel_x=+0.5` | sidestep right |
143
+ | `rl-video-cmdMINUSx0p5.mp4` | `lin_vel_x=-0.5` | sidestep left |
144
+ | `rl-video-randomcmd-lateralpolicy.mp4` | original random | backward/strafe |
145
+
146
+ ---
147
+
148
+ ## 3. play.py fixes for rsl-rl ≥ 5.0
149
+
150
+ `scripts/rsl_rl/play.py` failed under the installed **rsl-rl 5.0.1** with a cascade of errors
151
+ that `train.py` did not hit (train.py already handled them). Four fixes were applied:
152
+
153
+ 1. **Missing config migration** → `MLPModel.__init__() got an unexpected keyword argument 'stochastic'`.
154
+ `train.py` calls `handle_deprecated_rsl_rl_cfg(...)` to migrate the legacy `stochastic` actor
155
+ field to `distribution_cfg`; `play.py` did not. Added the call (and `from importlib import metadata`).
156
+
157
+ 2. **Renamed model attribute** → `'PPO' object has no attribute 'policy' / 'actor_critic'`.
158
+ rsl-rl 5.x splits the model into `alg.actor` / `alg.critic`. Updated the lookup accordingly.
159
+
160
+ 3. **Incompatible exporter** → `ValueError: Policy does not have an actor/student module` /
161
+ `'PPO' object has no attribute 'is_recurrent'`. The legacy `isaaclab_rl` `_TorchPolicyExporter`
162
+ expects a single combined `ActorCritic` module that no longer exists. Switched to the runner's
163
+ native `runner.export_policy_to_jit(...)` / `export_policy_to_onnx(...)` when available, keeping
164
+ the old path as a fallback for older rsl-rl.
165
+
166
+ 4. **`policy_nn` scoping** → `UnboundLocalError: ... 'policy_nn'`. After refactor (3), the rollout's
167
+ `policy_nn.reset(dones)` was no longer always defined. Changed to `policy.reset(dones)` (the
168
+ inference policy from `get_inference_policy`, always defined; rsl-rl 5.x `MLPModel` has `.reset`).
169
+
170
+ These are environment/version fixes and apply to **any** playback under rsl-rl 5.x, independent of
171
+ the command-axis issue above.
172
+
173
+ ---
174
+
175
+ ## Files changed by this investigation
176
+
177
+ - `scripts/rsl_rl/play.py` — the four rsl-rl 5.x fixes (§3).
178
+ - `source/rc_humanoid_rl_lab/rc_humanoid_rl_lab/tasks/locomotion/manager_based/humanoid_v1/velocity_env_cfg.py`
179
+ — `CommandsCfg.base_velocity` forward-biased + an inline comment documenting the 90° axis quirk (§1).
180
+
181
+ _(Other modified files in `git status` — `train.py`, `rsl_rl_ppo_cfg.py`, `URDF_2.urdf`, etc. —
182
+ predate this work and were not touched here.)_
exported/policy.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:140a0fbe0efa86078bb61500fbc548c66b8c0bc9f93fe25f7a5760059d0780e6
3
+ size 11552
exported/policy.onnx.data ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e795e5aff50763120da71f124a05388e6d5010a5c5ab93d507be32dcb9ebaf4e
3
+ size 847872
exported/policy.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8d24394a33d193c852e09fb6e33b6ed7aa92f1bc594c31a350b427c1b92b43d5
3
+ size 861398
model_3999.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:97d12a6b99b7794db81b55ce861c152908b47645f212b3260e82c2ff97f933c5
3
+ size 5243765
params/agent.yaml ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ seed: 42
2
+ device: cuda:0
3
+ num_steps_per_env: 24
4
+ max_iterations: 4000
5
+ empirical_normalization: {}
6
+ obs_groups:
7
+ actor:
8
+ - policy
9
+ critic:
10
+ - critic
11
+ clip_actions: null
12
+ check_for_nan: true
13
+ save_interval: 100
14
+ experiment_name: humanoid_v1_locomotion
15
+ run_name: ''
16
+ logger: tensorboard
17
+ neptune_project: isaaclab
18
+ wandb_project: isaaclab
19
+ resume: false
20
+ load_run: .*
21
+ load_checkpoint: model_.*.pt
22
+ class_name: OnPolicyRunner
23
+ actor:
24
+ class_name: MLPModel
25
+ hidden_dims:
26
+ - 512
27
+ - 256
28
+ - 128
29
+ activation: elu
30
+ obs_normalization: false
31
+ distribution_cfg:
32
+ class_name: GaussianDistribution
33
+ init_std: 1.0
34
+ std_type: scalar
35
+ critic:
36
+ class_name: MLPModel
37
+ hidden_dims:
38
+ - 512
39
+ - 256
40
+ - 128
41
+ activation: elu
42
+ obs_normalization: false
43
+ distribution_cfg: null
44
+ algorithm:
45
+ class_name: PPO
46
+ num_learning_epochs: 5
47
+ num_mini_batches: 4
48
+ learning_rate: 0.001
49
+ schedule: adaptive
50
+ gamma: 0.99
51
+ lam: 0.95
52
+ entropy_coef: 0.01
53
+ desired_kl: 0.01
54
+ max_grad_norm: 1.0
55
+ optimizer: adam
56
+ value_loss_coef: 1.0
57
+ use_clipped_value_loss: true
58
+ clip_param: 0.2
59
+ normalize_advantage_per_mini_batch: false
60
+ share_cnn_encoders: false
61
+ rnd_cfg: null
62
+ symmetry_cfg: null
63
+ policy: {}
params/env.yaml ADDED
@@ -0,0 +1,1391 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ viewer:
2
+ eye: !!python/tuple
3
+ - 7.5
4
+ - 7.5
5
+ - 7.5
6
+ lookat: !!python/tuple
7
+ - 0.0
8
+ - 0.0
9
+ - 0.0
10
+ cam_prim_path: /OmniverseKit_Persp
11
+ resolution: !!python/tuple
12
+ - 1280
13
+ - 720
14
+ origin_type: world
15
+ env_index: 0
16
+ asset_name: null
17
+ body_name: null
18
+ sim:
19
+ physics_prim_path: /physicsScene
20
+ device: cuda:0
21
+ dt: 0.005
22
+ render_interval: 4
23
+ gravity: !!python/tuple
24
+ - 0.0
25
+ - 0.0
26
+ - -9.81
27
+ enable_scene_query_support: false
28
+ use_fabric: true
29
+ physx:
30
+ solver_type: 1
31
+ solve_articulation_contact_last: false
32
+ min_position_iteration_count: 1
33
+ max_position_iteration_count: 255
34
+ min_velocity_iteration_count: 0
35
+ max_velocity_iteration_count: 255
36
+ enable_ccd: false
37
+ enable_stabilization: false
38
+ enable_external_forces_every_iteration: false
39
+ enable_enhanced_determinism: false
40
+ bounce_threshold_velocity: 0.5
41
+ friction_offset_threshold: 0.04
42
+ friction_correlation_distance: 0.025
43
+ gpu_max_rigid_contact_count: 8388608
44
+ gpu_max_rigid_patch_count: 327680
45
+ gpu_found_lost_pairs_capacity: 2097152
46
+ gpu_found_lost_aggregate_pairs_capacity: 33554432
47
+ gpu_total_aggregate_pairs_capacity: 2097152
48
+ gpu_collision_stack_size: 67108864
49
+ gpu_heap_capacity: 67108864
50
+ gpu_temp_buffer_capacity: 16777216
51
+ gpu_max_num_partitions: 8
52
+ gpu_max_soft_body_contacts: 1048576
53
+ gpu_max_particle_contacts: 1048576
54
+ physics_material:
55
+ func: isaaclab.sim.spawners.materials.physics_materials:spawn_rigid_body_material
56
+ static_friction: 1.0
57
+ dynamic_friction: 1.0
58
+ restitution: 0.0
59
+ friction_combine_mode: multiply
60
+ restitution_combine_mode: multiply
61
+ compliant_contact_stiffness: 0.0
62
+ compliant_contact_damping: 0.0
63
+ render:
64
+ enable_translucency: null
65
+ enable_reflections: null
66
+ enable_global_illumination: null
67
+ antialiasing_mode: null
68
+ enable_dlssg: null
69
+ enable_dl_denoiser: null
70
+ dlss_mode: null
71
+ enable_direct_lighting: null
72
+ samples_per_pixel: null
73
+ enable_shadows: null
74
+ enable_ambient_occlusion: null
75
+ dome_light_upper_lower_strategy: null
76
+ carb_settings: null
77
+ rendering_mode: null
78
+ create_stage_in_memory: false
79
+ logging_level: WARNING
80
+ save_logs_to_file: true
81
+ log_dir: null
82
+ ui_window_class_type: isaaclab.envs.ui.manager_based_rl_env_window:ManagerBasedRLEnvWindow
83
+ seed: 42
84
+ decimation: 4
85
+ scene:
86
+ num_envs: 4096
87
+ env_spacing: 2.5
88
+ lazy_sensor_update: true
89
+ replicate_physics: true
90
+ filter_collisions: true
91
+ clone_in_fabric: false
92
+ robot:
93
+ class_type: isaaclab.assets.articulation.articulation:Articulation
94
+ prim_path: /World/envs/env_.*/Robot
95
+ spawn:
96
+ asset_path: /home/darius/mark1/rc_humanoid_rl_lab/source/rc_humanoid_rl_lab/rc_humanoid_rl_lab/assets/URDF_2_description/urdf/URDF_2.urdf
97
+ usd_dir: null
98
+ usd_file_name: null
99
+ force_usd_conversion: false
100
+ make_instanceable: true
101
+ fix_base: false
102
+ root_link_name: null
103
+ link_density: 0.0
104
+ merge_fixed_joints: false
105
+ convert_mimic_joints_to_normal_joints: false
106
+ joint_drive:
107
+ drive_type: force
108
+ target_type: position
109
+ gains:
110
+ stiffness: 150.0
111
+ damping: 5.0
112
+ collider_type: convex_hull
113
+ self_collision: false
114
+ replace_cylinders_with_capsules: false
115
+ collision_from_visuals: false
116
+ func: isaaclab.sim.spawners.from_files.from_files:spawn_from_urdf
117
+ visible: true
118
+ semantic_tags: null
119
+ copy_from_source: true
120
+ mass_props: null
121
+ deformable_props: null
122
+ rigid_props:
123
+ rigid_body_enabled: null
124
+ kinematic_enabled: null
125
+ disable_gravity: false
126
+ linear_damping: 0.0
127
+ angular_damping: 0.0
128
+ max_linear_velocity: 1000.0
129
+ max_angular_velocity: 1000.0
130
+ max_depenetration_velocity: 1.0
131
+ max_contact_impulse: null
132
+ enable_gyroscopic_forces: null
133
+ retain_accelerations: false
134
+ solver_position_iteration_count: null
135
+ solver_velocity_iteration_count: null
136
+ sleep_threshold: null
137
+ stabilization_threshold: null
138
+ collision_props: null
139
+ activate_contact_sensors: true
140
+ scale: null
141
+ articulation_props:
142
+ articulation_enabled: null
143
+ enabled_self_collisions: false
144
+ solver_position_iteration_count: 4
145
+ solver_velocity_iteration_count: 4
146
+ sleep_threshold: null
147
+ stabilization_threshold: null
148
+ fix_root_link: null
149
+ fixed_tendons_props: null
150
+ spatial_tendons_props: null
151
+ joint_drive_props: null
152
+ visual_material_path: material
153
+ visual_material: null
154
+ init_state:
155
+ pos: !!python/tuple
156
+ - 0.0
157
+ - 0.0
158
+ - 1.1
159
+ rot: !!python/tuple
160
+ - 1.0
161
+ - 0.0
162
+ - 0.0
163
+ - 0.0
164
+ lin_vel: !!python/tuple
165
+ - 0.0
166
+ - 0.0
167
+ - 0.0
168
+ ang_vel: !!python/tuple
169
+ - 0.0
170
+ - 0.0
171
+ - 0.0
172
+ joint_pos:
173
+ hip_central_abduction: 0.0
174
+ waist_upperbody_yaw: 0.0
175
+ leg_flexion_.*: 0.0
176
+ leg_abduction_.*: 0.0
177
+ hip_yaw_.*: 0.0
178
+ knee_.*: 0.0
179
+ foot_pitch_.*: 0.0
180
+ foot_roll_.*: 0.0
181
+ shoulder_flexion_.*: 0.0
182
+ shoulder_abduction_.*: 0.0
183
+ shoulder_rotation_.*: 0.0
184
+ elbow_flexion_.*: 0.0
185
+ wrist_rotation_.*: 0.0
186
+ neck_yaw: 0.0
187
+ joint_vel:
188
+ .*: 0.0
189
+ collision_group: 0
190
+ debug_vis: false
191
+ articulation_root_prim_path: null
192
+ soft_joint_pos_limit_factor: 0.9
193
+ actuators:
194
+ legs_waist:
195
+ class_type: isaaclab.actuators.actuator_pd:DCMotor
196
+ joint_names_expr:
197
+ - hip_central_abduction
198
+ - waist_upperbody_yaw
199
+ - leg_flexion_.*
200
+ - leg_abduction_.*
201
+ - hip_yaw_.*
202
+ - knee_.*
203
+ effort_limit: 128.0
204
+ velocity_limit: 14.66
205
+ effort_limit_sim: null
206
+ velocity_limit_sim: null
207
+ stiffness: 150.0
208
+ damping: 3.0
209
+ armature: 0.01
210
+ friction: null
211
+ dynamic_friction: null
212
+ viscous_friction: null
213
+ saturation_effort: 128.0
214
+ shoulders:
215
+ class_type: isaaclab.actuators.actuator_pd:DCMotor
216
+ joint_names_expr:
217
+ - shoulder_flexion_.*
218
+ - shoulder_abduction_.*
219
+ effort_limit: 80.0
220
+ velocity_limit: 18.0
221
+ effort_limit_sim: null
222
+ velocity_limit_sim: null
223
+ stiffness: 100.0
224
+ damping: 2.0
225
+ armature: 0.01
226
+ friction: null
227
+ dynamic_friction: null
228
+ viscous_friction: null
229
+ saturation_effort: 80.0
230
+ arms_neck:
231
+ class_type: isaaclab.actuators.actuator_pd:DCMotor
232
+ joint_names_expr:
233
+ - shoulder_rotation_.*
234
+ - elbow_flexion_.*
235
+ - wrist_rotation_.*
236
+ - neck_yaw
237
+ effort_limit: 40.0
238
+ velocity_limit: 20.0
239
+ effort_limit_sim: null
240
+ velocity_limit_sim: null
241
+ stiffness: 50.0
242
+ damping: 1.0
243
+ armature: 0.01
244
+ friction: null
245
+ dynamic_friction: null
246
+ viscous_friction: null
247
+ saturation_effort: 40.0
248
+ ankles:
249
+ class_type: isaaclab.actuators.actuator_pd:DCMotor
250
+ joint_names_expr:
251
+ - foot_pitch_.*
252
+ - foot_roll_.*
253
+ effort_limit: 40.0
254
+ velocity_limit: 15.0
255
+ effort_limit_sim: null
256
+ velocity_limit_sim: null
257
+ stiffness: 40.0
258
+ damping: 1.0
259
+ armature: 0.01
260
+ friction: null
261
+ dynamic_friction: null
262
+ viscous_friction: null
263
+ saturation_effort: 40.0
264
+ actuator_value_resolution_debug_print: false
265
+ terrain:
266
+ class_type: isaaclab.terrains.terrain_importer:TerrainImporter
267
+ collision_group: -1
268
+ prim_path: /World/ground
269
+ num_envs: 4096
270
+ terrain_type: plane
271
+ terrain_generator:
272
+ class_type: isaaclab.terrains.terrain_generator:TerrainGenerator
273
+ seed: null
274
+ curriculum: false
275
+ size: !!python/tuple
276
+ - 8.0
277
+ - 8.0
278
+ border_width: 20.0
279
+ border_height: 1.0
280
+ num_rows: 10
281
+ num_cols: 20
282
+ color_scheme: none
283
+ horizontal_scale: 0.1
284
+ vertical_scale: 0.005
285
+ slope_threshold: 0.75
286
+ sub_terrains:
287
+ pyramid_stairs:
288
+ function: isaaclab.terrains.trimesh.mesh_terrains:pyramid_stairs_terrain
289
+ proportion: 0.2
290
+ size: !!python/tuple
291
+ - 10.0
292
+ - 10.0
293
+ flat_patch_sampling: null
294
+ border_width: 1.0
295
+ step_height_range: !!python/tuple
296
+ - 0.05
297
+ - 0.23
298
+ step_width: 0.3
299
+ platform_width: 3.0
300
+ holes: false
301
+ pyramid_stairs_inv:
302
+ function: isaaclab.terrains.trimesh.mesh_terrains:inverted_pyramid_stairs_terrain
303
+ proportion: 0.2
304
+ size: !!python/tuple
305
+ - 10.0
306
+ - 10.0
307
+ flat_patch_sampling: null
308
+ border_width: 1.0
309
+ step_height_range: !!python/tuple
310
+ - 0.05
311
+ - 0.23
312
+ step_width: 0.3
313
+ platform_width: 3.0
314
+ holes: false
315
+ boxes:
316
+ function: isaaclab.terrains.trimesh.mesh_terrains:random_grid_terrain
317
+ proportion: 0.2
318
+ size: !!python/tuple
319
+ - 10.0
320
+ - 10.0
321
+ flat_patch_sampling: null
322
+ grid_width: 0.45
323
+ grid_height_range: !!python/tuple
324
+ - 0.05
325
+ - 0.2
326
+ platform_width: 2.0
327
+ holes: false
328
+ random_rough:
329
+ function: isaaclab.terrains.height_field.hf_terrains:random_uniform_terrain
330
+ proportion: 0.2
331
+ size: !!python/tuple
332
+ - 10.0
333
+ - 10.0
334
+ flat_patch_sampling: null
335
+ border_width: 0.25
336
+ horizontal_scale: 0.1
337
+ vertical_scale: 0.005
338
+ slope_threshold: null
339
+ noise_range: !!python/tuple
340
+ - 0.02
341
+ - 0.1
342
+ noise_step: 0.02
343
+ downsampled_scale: null
344
+ hf_pyramid_slope:
345
+ function: isaaclab.terrains.height_field.hf_terrains:pyramid_sloped_terrain
346
+ proportion: 0.1
347
+ size: !!python/tuple
348
+ - 10.0
349
+ - 10.0
350
+ flat_patch_sampling: null
351
+ border_width: 0.25
352
+ horizontal_scale: 0.1
353
+ vertical_scale: 0.005
354
+ slope_threshold: null
355
+ slope_range: !!python/tuple
356
+ - 0.0
357
+ - 0.4
358
+ platform_width: 2.0
359
+ inverted: false
360
+ hf_pyramid_slope_inv:
361
+ function: isaaclab.terrains.height_field.hf_terrains:pyramid_sloped_terrain
362
+ proportion: 0.1
363
+ size: !!python/tuple
364
+ - 10.0
365
+ - 10.0
366
+ flat_patch_sampling: null
367
+ border_width: 0.25
368
+ horizontal_scale: 0.1
369
+ vertical_scale: 0.005
370
+ slope_threshold: null
371
+ slope_range: !!python/tuple
372
+ - 0.0
373
+ - 0.4
374
+ platform_width: 2.0
375
+ inverted: true
376
+ difficulty_range: !!python/tuple
377
+ - 0.0
378
+ - 1.0
379
+ use_cache: false
380
+ cache_dir: /tmp/isaaclab/terrains
381
+ usd_path: null
382
+ env_spacing: 2.5
383
+ use_terrain_origins: true
384
+ visual_material:
385
+ func: isaaclab.sim.spawners.materials.visual_materials:spawn_from_mdl_file
386
+ mdl_path: https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.1/Isaac/IsaacLab/Materials/TilesMarbleSpiderWhiteBrickBondHoned/TilesMarbleSpiderWhiteBrickBondHoned.mdl
387
+ project_uvw: true
388
+ albedo_brightness: null
389
+ texture_scale: !!python/tuple
390
+ - 0.25
391
+ - 0.25
392
+ physics_material:
393
+ func: isaaclab.sim.spawners.materials.physics_materials:spawn_rigid_body_material
394
+ static_friction: 1.0
395
+ dynamic_friction: 1.0
396
+ restitution: 0.0
397
+ friction_combine_mode: multiply
398
+ restitution_combine_mode: multiply
399
+ compliant_contact_stiffness: 0.0
400
+ compliant_contact_damping: 0.0
401
+ max_init_terrain_level: 5
402
+ debug_vis: false
403
+ height_scanner: null
404
+ contact_forces:
405
+ class_type: isaaclab.sensors.contact_sensor.contact_sensor:ContactSensor
406
+ prim_path: /World/envs/env_.*/Robot/.*
407
+ update_period: 0.005
408
+ history_length: 3
409
+ debug_vis: false
410
+ track_pose: false
411
+ track_contact_points: false
412
+ track_friction_forces: false
413
+ max_contact_data_count_per_prim: 4
414
+ track_air_time: true
415
+ force_threshold: 1.0
416
+ filter_prim_paths_expr: []
417
+ visualizer_cfg:
418
+ prim_path: /Visuals/ContactSensor
419
+ markers:
420
+ contact:
421
+ func: isaaclab.sim.spawners.shapes.shapes:spawn_sphere
422
+ visible: true
423
+ semantic_tags: null
424
+ copy_from_source: true
425
+ mass_props: null
426
+ rigid_props: null
427
+ collision_props: null
428
+ activate_contact_sensors: false
429
+ visual_material_path: material
430
+ visual_material:
431
+ func: isaaclab.sim.spawners.materials.visual_materials:spawn_preview_surface
432
+ diffuse_color: !!python/tuple
433
+ - 1.0
434
+ - 0.0
435
+ - 0.0
436
+ emissive_color: !!python/tuple
437
+ - 0.0
438
+ - 0.0
439
+ - 0.0
440
+ roughness: 0.5
441
+ metallic: 0.0
442
+ opacity: 1.0
443
+ physics_material_path: material
444
+ physics_material: null
445
+ radius: 0.02
446
+ no_contact:
447
+ func: isaaclab.sim.spawners.shapes.shapes:spawn_sphere
448
+ visible: false
449
+ semantic_tags: null
450
+ copy_from_source: true
451
+ mass_props: null
452
+ rigid_props: null
453
+ collision_props: null
454
+ activate_contact_sensors: false
455
+ visual_material_path: material
456
+ visual_material:
457
+ func: isaaclab.sim.spawners.materials.visual_materials:spawn_preview_surface
458
+ diffuse_color: !!python/tuple
459
+ - 0.0
460
+ - 1.0
461
+ - 0.0
462
+ emissive_color: !!python/tuple
463
+ - 0.0
464
+ - 0.0
465
+ - 0.0
466
+ roughness: 0.5
467
+ metallic: 0.0
468
+ opacity: 1.0
469
+ physics_material_path: material
470
+ physics_material: null
471
+ radius: 0.02
472
+ sky_light:
473
+ class_type: null
474
+ prim_path: /World/skyLight
475
+ spawn:
476
+ func: isaaclab.sim.spawners.lights.lights:spawn_light
477
+ visible: true
478
+ semantic_tags: null
479
+ copy_from_source: true
480
+ prim_type: DomeLight
481
+ color: !!python/tuple
482
+ - 1.0
483
+ - 1.0
484
+ - 1.0
485
+ enable_color_temperature: false
486
+ color_temperature: 6500.0
487
+ normalize: false
488
+ exposure: 0.0
489
+ intensity: 750.0
490
+ texture_file: https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.1/Isaac/Materials/Textures/Skies/PolyHaven/kloofendal_43d_clear_puresky_4k.hdr
491
+ texture_format: automatic
492
+ visible_in_primary_ray: true
493
+ init_state:
494
+ pos: !!python/tuple
495
+ - 0.0
496
+ - 0.0
497
+ - 0.0
498
+ rot: !!python/tuple
499
+ - 1.0
500
+ - 0.0
501
+ - 0.0
502
+ - 0.0
503
+ collision_group: 0
504
+ debug_vis: false
505
+ recorders:
506
+ dataset_file_handler_class_type: isaaclab.utils.datasets.hdf5_dataset_file_handler:HDF5DatasetFileHandler
507
+ dataset_export_dir_path: /tmp/isaaclab/logs
508
+ dataset_filename: dataset
509
+ dataset_export_mode:
510
+ _value_: 1
511
+ _name_: EXPORT_ALL
512
+ _sort_order_: 1
513
+ export_in_record_pre_reset: true
514
+ export_in_close: false
515
+ observations:
516
+ policy:
517
+ concatenate_terms: true
518
+ concatenate_dim: -1
519
+ enable_corruption: true
520
+ history_length: null
521
+ flatten_history_dim: true
522
+ base_ang_vel:
523
+ func: isaaclab.envs.mdp.observations:base_ang_vel
524
+ params: {}
525
+ modifiers: null
526
+ noise:
527
+ func: isaaclab.utils.noise.noise_model:uniform_noise
528
+ operation: add
529
+ n_min: -0.2
530
+ n_max: 0.2
531
+ clip: null
532
+ scale: 0.2
533
+ history_length: 0
534
+ flatten_history_dim: true
535
+ projected_gravity:
536
+ func: isaaclab.envs.mdp.observations:projected_gravity
537
+ params: {}
538
+ modifiers: null
539
+ noise:
540
+ func: isaaclab.utils.noise.noise_model:uniform_noise
541
+ operation: add
542
+ n_min: -0.05
543
+ n_max: 0.05
544
+ clip: null
545
+ scale: null
546
+ history_length: 0
547
+ flatten_history_dim: true
548
+ velocity_commands:
549
+ func: isaaclab.envs.mdp.observations:generated_commands
550
+ params:
551
+ command_name: base_velocity
552
+ modifiers: null
553
+ noise: null
554
+ clip: null
555
+ scale: null
556
+ history_length: 0
557
+ flatten_history_dim: true
558
+ joint_pos_rel:
559
+ func: isaaclab.envs.mdp.observations:joint_pos_rel
560
+ params: {}
561
+ modifiers: null
562
+ noise:
563
+ func: isaaclab.utils.noise.noise_model:uniform_noise
564
+ operation: add
565
+ n_min: -0.01
566
+ n_max: 0.01
567
+ clip: null
568
+ scale: null
569
+ history_length: 0
570
+ flatten_history_dim: true
571
+ joint_vel_rel:
572
+ func: isaaclab.envs.mdp.observations:joint_vel_rel
573
+ params: {}
574
+ modifiers: null
575
+ noise:
576
+ func: isaaclab.utils.noise.noise_model:uniform_noise
577
+ operation: add
578
+ n_min: -1.5
579
+ n_max: 1.5
580
+ clip: null
581
+ scale: 0.05
582
+ history_length: 0
583
+ flatten_history_dim: true
584
+ last_action:
585
+ func: isaaclab.envs.mdp.observations:last_action
586
+ params: {}
587
+ modifiers: null
588
+ noise: null
589
+ clip: null
590
+ scale: null
591
+ history_length: 0
592
+ flatten_history_dim: true
593
+ gait_phase:
594
+ func: rc_humanoid_rl_lab.tasks.locomotion.mdp.observations:gait_phase
595
+ params:
596
+ period: 0.6
597
+ modifiers: null
598
+ noise: null
599
+ clip: null
600
+ scale: null
601
+ history_length: 0
602
+ flatten_history_dim: true
603
+ critic:
604
+ concatenate_terms: true
605
+ concatenate_dim: -1
606
+ enable_corruption: false
607
+ history_length: null
608
+ flatten_history_dim: true
609
+ base_lin_vel:
610
+ func: isaaclab.envs.mdp.observations:base_lin_vel
611
+ params: {}
612
+ modifiers: null
613
+ noise: null
614
+ clip: null
615
+ scale: null
616
+ history_length: 0
617
+ flatten_history_dim: true
618
+ base_ang_vel:
619
+ func: isaaclab.envs.mdp.observations:base_ang_vel
620
+ params: {}
621
+ modifiers: null
622
+ noise: null
623
+ clip: null
624
+ scale: 0.2
625
+ history_length: 0
626
+ flatten_history_dim: true
627
+ projected_gravity:
628
+ func: isaaclab.envs.mdp.observations:projected_gravity
629
+ params: {}
630
+ modifiers: null
631
+ noise: null
632
+ clip: null
633
+ scale: null
634
+ history_length: 0
635
+ flatten_history_dim: true
636
+ velocity_commands:
637
+ func: isaaclab.envs.mdp.observations:generated_commands
638
+ params:
639
+ command_name: base_velocity
640
+ modifiers: null
641
+ noise: null
642
+ clip: null
643
+ scale: null
644
+ history_length: 0
645
+ flatten_history_dim: true
646
+ joint_pos_rel:
647
+ func: isaaclab.envs.mdp.observations:joint_pos_rel
648
+ params: {}
649
+ modifiers: null
650
+ noise: null
651
+ clip: null
652
+ scale: null
653
+ history_length: 0
654
+ flatten_history_dim: true
655
+ joint_vel_rel:
656
+ func: isaaclab.envs.mdp.observations:joint_vel_rel
657
+ params: {}
658
+ modifiers: null
659
+ noise: null
660
+ clip: null
661
+ scale: 0.05
662
+ history_length: 0
663
+ flatten_history_dim: true
664
+ joint_effort:
665
+ func: isaaclab.envs.mdp.observations:joint_effort
666
+ params: {}
667
+ modifiers: null
668
+ noise: null
669
+ clip: null
670
+ scale: 0.01
671
+ history_length: 0
672
+ flatten_history_dim: true
673
+ last_action:
674
+ func: isaaclab.envs.mdp.observations:last_action
675
+ params: {}
676
+ modifiers: null
677
+ noise: null
678
+ clip: null
679
+ scale: null
680
+ history_length: 0
681
+ flatten_history_dim: true
682
+ gait_phase:
683
+ func: rc_humanoid_rl_lab.tasks.locomotion.mdp.observations:gait_phase
684
+ params:
685
+ period: 0.6
686
+ modifiers: null
687
+ noise: null
688
+ clip: null
689
+ scale: null
690
+ history_length: 0
691
+ flatten_history_dim: true
692
+ actions:
693
+ joint_pos:
694
+ class_type: isaaclab.envs.mdp.actions.joint_actions:JointPositionAction
695
+ asset_name: robot
696
+ debug_vis: false
697
+ clip: null
698
+ joint_names:
699
+ - hip_central_abduction
700
+ - waist_upperbody_yaw
701
+ - leg_flexion_.*
702
+ - leg_abduction_.*
703
+ - hip_yaw_.*
704
+ - knee_.*
705
+ - foot_pitch_.*
706
+ - foot_roll_.*
707
+ - shoulder_flexion_.*
708
+ - shoulder_abduction_.*
709
+ - shoulder_rotation_.*
710
+ - elbow_flexion_.*
711
+ - wrist_rotation_.*
712
+ - neck_yaw
713
+ scale: 0.25
714
+ offset: 0.0
715
+ preserve_order: false
716
+ use_default_offset: true
717
+ events:
718
+ physics_material:
719
+ func: isaaclab.envs.mdp.events:randomize_rigid_body_material
720
+ params:
721
+ asset_cfg:
722
+ name: robot
723
+ joint_names: null
724
+ joint_ids: !!python/object/apply:builtins.slice
725
+ - null
726
+ - null
727
+ - null
728
+ fixed_tendon_names: null
729
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
730
+ - null
731
+ - null
732
+ - null
733
+ body_names: .*
734
+ body_ids: !!python/object/apply:builtins.slice
735
+ - null
736
+ - null
737
+ - null
738
+ object_collection_names: null
739
+ object_collection_ids: !!python/object/apply:builtins.slice
740
+ - null
741
+ - null
742
+ - null
743
+ preserve_order: false
744
+ static_friction_range: !!python/tuple
745
+ - 0.3
746
+ - 1.0
747
+ dynamic_friction_range: !!python/tuple
748
+ - 0.3
749
+ - 1.0
750
+ restitution_range: !!python/tuple
751
+ - 0.0
752
+ - 0.0
753
+ num_buckets: 64
754
+ mode: startup
755
+ interval_range_s: null
756
+ is_global_time: false
757
+ min_step_count_between_reset: 0
758
+ add_base_mass:
759
+ func: isaaclab.envs.mdp.events:randomize_rigid_body_mass
760
+ params:
761
+ asset_cfg:
762
+ name: robot
763
+ joint_names: null
764
+ joint_ids: !!python/object/apply:builtins.slice
765
+ - null
766
+ - null
767
+ - null
768
+ fixed_tendon_names: null
769
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
770
+ - null
771
+ - null
772
+ - null
773
+ body_names: base_link
774
+ body_ids: !!python/object/apply:builtins.slice
775
+ - null
776
+ - null
777
+ - null
778
+ object_collection_names: null
779
+ object_collection_ids: !!python/object/apply:builtins.slice
780
+ - null
781
+ - null
782
+ - null
783
+ preserve_order: false
784
+ mass_distribution_params: !!python/tuple
785
+ - -1.0
786
+ - 3.0
787
+ operation: add
788
+ mode: startup
789
+ interval_range_s: null
790
+ is_global_time: false
791
+ min_step_count_between_reset: 0
792
+ base_external_force_torque:
793
+ func: isaaclab.envs.mdp.events:apply_external_force_torque
794
+ params:
795
+ asset_cfg:
796
+ name: robot
797
+ joint_names: null
798
+ joint_ids: !!python/object/apply:builtins.slice
799
+ - null
800
+ - null
801
+ - null
802
+ fixed_tendon_names: null
803
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
804
+ - null
805
+ - null
806
+ - null
807
+ body_names: base_link
808
+ body_ids: !!python/object/apply:builtins.slice
809
+ - null
810
+ - null
811
+ - null
812
+ object_collection_names: null
813
+ object_collection_ids: !!python/object/apply:builtins.slice
814
+ - null
815
+ - null
816
+ - null
817
+ preserve_order: false
818
+ force_range: !!python/tuple
819
+ - 0.0
820
+ - 0.0
821
+ torque_range: !!python/tuple
822
+ - -0.0
823
+ - 0.0
824
+ mode: reset
825
+ interval_range_s: null
826
+ is_global_time: false
827
+ min_step_count_between_reset: 0
828
+ reset_base:
829
+ func: isaaclab.envs.mdp.events:reset_root_state_uniform
830
+ params:
831
+ pose_range:
832
+ x: !!python/tuple
833
+ - -0.5
834
+ - 0.5
835
+ y: !!python/tuple
836
+ - -0.5
837
+ - 0.5
838
+ yaw: !!python/tuple
839
+ - -3.14
840
+ - 3.14
841
+ velocity_range:
842
+ x: !!python/tuple
843
+ - 0.0
844
+ - 0.0
845
+ y: !!python/tuple
846
+ - 0.0
847
+ - 0.0
848
+ z: !!python/tuple
849
+ - 0.0
850
+ - 0.0
851
+ roll: !!python/tuple
852
+ - 0.0
853
+ - 0.0
854
+ pitch: !!python/tuple
855
+ - 0.0
856
+ - 0.0
857
+ yaw: !!python/tuple
858
+ - 0.0
859
+ - 0.0
860
+ mode: reset
861
+ interval_range_s: null
862
+ is_global_time: false
863
+ min_step_count_between_reset: 0
864
+ reset_robot_joints:
865
+ func: isaaclab.envs.mdp.events:reset_joints_by_scale
866
+ params:
867
+ position_range: !!python/tuple
868
+ - 1.0
869
+ - 1.0
870
+ velocity_range: !!python/tuple
871
+ - -1.0
872
+ - 1.0
873
+ mode: reset
874
+ interval_range_s: null
875
+ is_global_time: false
876
+ min_step_count_between_reset: 0
877
+ push_robot:
878
+ func: isaaclab.envs.mdp.events:push_by_setting_velocity
879
+ params:
880
+ velocity_range:
881
+ x: !!python/tuple
882
+ - -0.5
883
+ - 0.5
884
+ y: !!python/tuple
885
+ - -0.5
886
+ - 0.5
887
+ mode: interval
888
+ interval_range_s: !!python/tuple
889
+ - 5.0
890
+ - 5.0
891
+ is_global_time: false
892
+ min_step_count_between_reset: 0
893
+ rerender_on_reset: false
894
+ num_rerenders_on_reset: 0
895
+ wait_for_textures: true
896
+ xr: null
897
+ teleop_devices:
898
+ devices: {}
899
+ export_io_descriptors: false
900
+ log_dir: /home/darius/mark1/rc_humanoid_rl_lab/logs/rsl_rl/humanoid_v1_locomotion/2026-06-02_20-42-09
901
+ is_finite_horizon: false
902
+ episode_length_s: 20.0
903
+ rewards:
904
+ track_lin_vel_xy:
905
+ func: isaaclab_tasks.manager_based.locomotion.velocity.mdp.rewards:track_lin_vel_xy_yaw_frame_exp
906
+ params:
907
+ command_name: base_velocity
908
+ std: 0.5
909
+ weight: 1.0
910
+ track_ang_vel_z:
911
+ func: isaaclab.envs.mdp.rewards:track_ang_vel_z_exp
912
+ params:
913
+ command_name: base_velocity
914
+ std: 0.5
915
+ weight: 0.5
916
+ alive:
917
+ func: isaaclab.envs.mdp.rewards:is_alive
918
+ params: {}
919
+ weight: 0.15
920
+ base_linear_velocity:
921
+ func: isaaclab.envs.mdp.rewards:lin_vel_z_l2
922
+ params: {}
923
+ weight: -2.0
924
+ base_angular_velocity:
925
+ func: isaaclab.envs.mdp.rewards:ang_vel_xy_l2
926
+ params: {}
927
+ weight: -0.5
928
+ joint_acc:
929
+ func: isaaclab.envs.mdp.rewards:joint_acc_l2
930
+ params: {}
931
+ weight: -2.5e-07
932
+ action_rate:
933
+ func: isaaclab.envs.mdp.rewards:action_rate_l2
934
+ params: {}
935
+ weight: -0.05
936
+ dof_pos_limits:
937
+ func: isaaclab.envs.mdp.rewards:joint_pos_limits
938
+ params: {}
939
+ weight: -5.0
940
+ energy:
941
+ func: rc_humanoid_rl_lab.tasks.locomotion.mdp.rewards:energy
942
+ params: {}
943
+ weight: -2.0e-05
944
+ joint_deviation_arms:
945
+ func: isaaclab.envs.mdp.rewards:joint_deviation_l1
946
+ params:
947
+ asset_cfg:
948
+ name: robot
949
+ joint_names:
950
+ - shoulder_flexion_.*
951
+ - shoulder_abduction_.*
952
+ - shoulder_rotation_.*
953
+ - elbow_flexion_.*
954
+ - wrist_rotation_.*
955
+ joint_ids: !!python/object/apply:builtins.slice
956
+ - null
957
+ - null
958
+ - null
959
+ fixed_tendon_names: null
960
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
961
+ - null
962
+ - null
963
+ - null
964
+ body_names: null
965
+ body_ids: !!python/object/apply:builtins.slice
966
+ - null
967
+ - null
968
+ - null
969
+ object_collection_names: null
970
+ object_collection_ids: !!python/object/apply:builtins.slice
971
+ - null
972
+ - null
973
+ - null
974
+ preserve_order: false
975
+ weight: -1.0
976
+ joint_deviation_waist:
977
+ func: isaaclab.envs.mdp.rewards:joint_deviation_l1
978
+ params:
979
+ asset_cfg:
980
+ name: robot
981
+ joint_names:
982
+ - hip_central_abduction
983
+ - waist_upperbody_yaw
984
+ joint_ids: !!python/object/apply:builtins.slice
985
+ - null
986
+ - null
987
+ - null
988
+ fixed_tendon_names: null
989
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
990
+ - null
991
+ - null
992
+ - null
993
+ body_names: null
994
+ body_ids: !!python/object/apply:builtins.slice
995
+ - null
996
+ - null
997
+ - null
998
+ object_collection_names: null
999
+ object_collection_ids: !!python/object/apply:builtins.slice
1000
+ - null
1001
+ - null
1002
+ - null
1003
+ preserve_order: false
1004
+ weight: -1.0
1005
+ joint_deviation_hips:
1006
+ func: isaaclab.envs.mdp.rewards:joint_deviation_l1
1007
+ params:
1008
+ asset_cfg:
1009
+ name: robot
1010
+ joint_names:
1011
+ - leg_abduction_.*
1012
+ - hip_yaw_.*
1013
+ joint_ids: !!python/object/apply:builtins.slice
1014
+ - null
1015
+ - null
1016
+ - null
1017
+ fixed_tendon_names: null
1018
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
1019
+ - null
1020
+ - null
1021
+ - null
1022
+ body_names: null
1023
+ body_ids: !!python/object/apply:builtins.slice
1024
+ - null
1025
+ - null
1026
+ - null
1027
+ object_collection_names: null
1028
+ object_collection_ids: !!python/object/apply:builtins.slice
1029
+ - null
1030
+ - null
1031
+ - null
1032
+ preserve_order: false
1033
+ weight: -1.0
1034
+ joint_deviation_neck:
1035
+ func: isaaclab.envs.mdp.rewards:joint_deviation_l1
1036
+ params:
1037
+ asset_cfg:
1038
+ name: robot
1039
+ joint_names:
1040
+ - neck_yaw
1041
+ joint_ids: !!python/object/apply:builtins.slice
1042
+ - null
1043
+ - null
1044
+ - null
1045
+ fixed_tendon_names: null
1046
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
1047
+ - null
1048
+ - null
1049
+ - null
1050
+ body_names: null
1051
+ body_ids: !!python/object/apply:builtins.slice
1052
+ - null
1053
+ - null
1054
+ - null
1055
+ object_collection_names: null
1056
+ object_collection_ids: !!python/object/apply:builtins.slice
1057
+ - null
1058
+ - null
1059
+ - null
1060
+ preserve_order: false
1061
+ weight: -1.0
1062
+ flat_orientation_l2:
1063
+ func: isaaclab.envs.mdp.rewards:flat_orientation_l2
1064
+ params: {}
1065
+ weight: -1.0
1066
+ base_height:
1067
+ func: isaaclab.envs.mdp.rewards:base_height_l2
1068
+ params:
1069
+ target_height: 1.05
1070
+ weight: -10.0
1071
+ gait:
1072
+ func: rc_humanoid_rl_lab.tasks.locomotion.mdp.rewards:feet_gait
1073
+ params:
1074
+ period: 0.6
1075
+ offset:
1076
+ - 0.0
1077
+ - 0.5
1078
+ threshold: 0.55
1079
+ sensor_cfg:
1080
+ name: contact_forces
1081
+ joint_names: null
1082
+ joint_ids: !!python/object/apply:builtins.slice
1083
+ - null
1084
+ - null
1085
+ - null
1086
+ fixed_tendon_names: null
1087
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
1088
+ - null
1089
+ - null
1090
+ - null
1091
+ body_names: foot_.*
1092
+ body_ids: !!python/object/apply:builtins.slice
1093
+ - null
1094
+ - null
1095
+ - null
1096
+ object_collection_names: null
1097
+ object_collection_ids: !!python/object/apply:builtins.slice
1098
+ - null
1099
+ - null
1100
+ - null
1101
+ preserve_order: false
1102
+ weight: 0.5
1103
+ feet_slide:
1104
+ func: isaaclab_tasks.manager_based.locomotion.velocity.mdp.rewards:feet_slide
1105
+ params:
1106
+ asset_cfg:
1107
+ name: robot
1108
+ joint_names: null
1109
+ joint_ids: !!python/object/apply:builtins.slice
1110
+ - null
1111
+ - null
1112
+ - null
1113
+ fixed_tendon_names: null
1114
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
1115
+ - null
1116
+ - null
1117
+ - null
1118
+ body_names: foot_.*
1119
+ body_ids: !!python/object/apply:builtins.slice
1120
+ - null
1121
+ - null
1122
+ - null
1123
+ object_collection_names: null
1124
+ object_collection_ids: !!python/object/apply:builtins.slice
1125
+ - null
1126
+ - null
1127
+ - null
1128
+ preserve_order: false
1129
+ sensor_cfg:
1130
+ name: contact_forces
1131
+ joint_names: null
1132
+ joint_ids: !!python/object/apply:builtins.slice
1133
+ - null
1134
+ - null
1135
+ - null
1136
+ fixed_tendon_names: null
1137
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
1138
+ - null
1139
+ - null
1140
+ - null
1141
+ body_names: foot_.*
1142
+ body_ids: !!python/object/apply:builtins.slice
1143
+ - null
1144
+ - null
1145
+ - null
1146
+ object_collection_names: null
1147
+ object_collection_ids: !!python/object/apply:builtins.slice
1148
+ - null
1149
+ - null
1150
+ - null
1151
+ preserve_order: false
1152
+ weight: -0.2
1153
+ feet_clearance:
1154
+ func: rc_humanoid_rl_lab.tasks.locomotion.mdp.rewards:foot_clearance_reward
1155
+ params:
1156
+ std: 0.05
1157
+ tanh_mult: 2.0
1158
+ target_height: 0.15
1159
+ asset_cfg:
1160
+ name: robot
1161
+ joint_names: null
1162
+ joint_ids: !!python/object/apply:builtins.slice
1163
+ - null
1164
+ - null
1165
+ - null
1166
+ fixed_tendon_names: null
1167
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
1168
+ - null
1169
+ - null
1170
+ - null
1171
+ body_names: foot_.*
1172
+ body_ids: !!python/object/apply:builtins.slice
1173
+ - null
1174
+ - null
1175
+ - null
1176
+ object_collection_names: null
1177
+ object_collection_ids: !!python/object/apply:builtins.slice
1178
+ - null
1179
+ - null
1180
+ - null
1181
+ preserve_order: false
1182
+ weight: 20.0
1183
+ feet_contact_forces:
1184
+ func: isaaclab.envs.mdp.rewards:contact_forces
1185
+ params:
1186
+ threshold: 500
1187
+ sensor_cfg:
1188
+ name: contact_forces
1189
+ joint_names: null
1190
+ joint_ids: !!python/object/apply:builtins.slice
1191
+ - null
1192
+ - null
1193
+ - null
1194
+ fixed_tendon_names: null
1195
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
1196
+ - null
1197
+ - null
1198
+ - null
1199
+ body_names: foot_.*
1200
+ body_ids: !!python/object/apply:builtins.slice
1201
+ - null
1202
+ - null
1203
+ - null
1204
+ object_collection_names: null
1205
+ object_collection_ids: !!python/object/apply:builtins.slice
1206
+ - null
1207
+ - null
1208
+ - null
1209
+ preserve_order: false
1210
+ weight: -0.0002
1211
+ undesired_contacts:
1212
+ func: isaaclab.envs.mdp.rewards:undesired_contacts
1213
+ params:
1214
+ threshold: 1
1215
+ sensor_cfg:
1216
+ name: contact_forces
1217
+ joint_names: null
1218
+ joint_ids: !!python/object/apply:builtins.slice
1219
+ - null
1220
+ - null
1221
+ - null
1222
+ fixed_tendon_names: null
1223
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
1224
+ - null
1225
+ - null
1226
+ - null
1227
+ body_names:
1228
+ - (?!.*foot_.*).*
1229
+ body_ids: !!python/object/apply:builtins.slice
1230
+ - null
1231
+ - null
1232
+ - null
1233
+ object_collection_names: null
1234
+ object_collection_ids: !!python/object/apply:builtins.slice
1235
+ - null
1236
+ - null
1237
+ - null
1238
+ preserve_order: false
1239
+ weight: -1.0
1240
+ terminations:
1241
+ time_out:
1242
+ func: isaaclab.envs.mdp.terminations:time_out
1243
+ params: {}
1244
+ time_out: true
1245
+ base_height:
1246
+ func: isaaclab.envs.mdp.terminations:root_height_below_minimum
1247
+ params:
1248
+ minimum_height: 0.3
1249
+ time_out: false
1250
+ base_contact:
1251
+ func: isaaclab.envs.mdp.terminations:illegal_contact
1252
+ params:
1253
+ sensor_cfg:
1254
+ name: contact_forces
1255
+ joint_names: null
1256
+ joint_ids: !!python/object/apply:builtins.slice
1257
+ - null
1258
+ - null
1259
+ - null
1260
+ fixed_tendon_names: null
1261
+ fixed_tendon_ids: !!python/object/apply:builtins.slice
1262
+ - null
1263
+ - null
1264
+ - null
1265
+ body_names:
1266
+ - base_link
1267
+ body_ids: !!python/object/apply:builtins.slice
1268
+ - null
1269
+ - null
1270
+ - null
1271
+ object_collection_names: null
1272
+ object_collection_ids: !!python/object/apply:builtins.slice
1273
+ - null
1274
+ - null
1275
+ - null
1276
+ preserve_order: false
1277
+ threshold: 1.0
1278
+ time_out: false
1279
+ curriculum:
1280
+ terrain_levels: null
1281
+ lin_vel_cmd_levels:
1282
+ func: rc_humanoid_rl_lab.tasks.locomotion.mdp.curriculums:lin_vel_cmd_levels
1283
+ params: {}
1284
+ commands:
1285
+ base_velocity:
1286
+ class_type: isaaclab.envs.mdp.commands.velocity_command:UniformVelocityCommand
1287
+ resampling_time_range: !!python/tuple
1288
+ - 10.0
1289
+ - 10.0
1290
+ debug_vis: true
1291
+ asset_name: robot
1292
+ heading_command: false
1293
+ heading_control_stiffness: 1.0
1294
+ rel_standing_envs: 0.02
1295
+ rel_heading_envs: 1.0
1296
+ ranges:
1297
+ lin_vel_x: !!python/tuple
1298
+ - -0.1
1299
+ - 0.1
1300
+ lin_vel_y: !!python/tuple
1301
+ - -0.8
1302
+ - -0.1
1303
+ ang_vel_z: !!python/tuple
1304
+ - -0.1
1305
+ - 0.1
1306
+ heading: null
1307
+ goal_vel_visualizer_cfg:
1308
+ prim_path: /Visuals/Command/velocity_goal
1309
+ markers:
1310
+ arrow:
1311
+ func: isaaclab.sim.spawners.from_files.from_files:spawn_from_usd
1312
+ visible: true
1313
+ semantic_tags: null
1314
+ copy_from_source: true
1315
+ mass_props: null
1316
+ deformable_props: null
1317
+ rigid_props: null
1318
+ collision_props: null
1319
+ activate_contact_sensors: false
1320
+ scale: !!python/tuple
1321
+ - 0.5
1322
+ - 0.5
1323
+ - 0.5
1324
+ articulation_props: null
1325
+ fixed_tendons_props: null
1326
+ spatial_tendons_props: null
1327
+ joint_drive_props: null
1328
+ visual_material_path: material
1329
+ visual_material:
1330
+ func: isaaclab.sim.spawners.materials.visual_materials:spawn_preview_surface
1331
+ diffuse_color: !!python/tuple
1332
+ - 0.0
1333
+ - 1.0
1334
+ - 0.0
1335
+ emissive_color: !!python/tuple
1336
+ - 0.0
1337
+ - 0.0
1338
+ - 0.0
1339
+ roughness: 0.5
1340
+ metallic: 0.0
1341
+ opacity: 1.0
1342
+ usd_path: https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.1/Isaac/Props/UIElements/arrow_x.usd
1343
+ variants: null
1344
+ current_vel_visualizer_cfg:
1345
+ prim_path: /Visuals/Command/velocity_current
1346
+ markers:
1347
+ arrow:
1348
+ func: isaaclab.sim.spawners.from_files.from_files:spawn_from_usd
1349
+ visible: true
1350
+ semantic_tags: null
1351
+ copy_from_source: true
1352
+ mass_props: null
1353
+ deformable_props: null
1354
+ rigid_props: null
1355
+ collision_props: null
1356
+ activate_contact_sensors: false
1357
+ scale: !!python/tuple
1358
+ - 0.5
1359
+ - 0.5
1360
+ - 0.5
1361
+ articulation_props: null
1362
+ fixed_tendons_props: null
1363
+ spatial_tendons_props: null
1364
+ joint_drive_props: null
1365
+ visual_material_path: material
1366
+ visual_material:
1367
+ func: isaaclab.sim.spawners.materials.visual_materials:spawn_preview_surface
1368
+ diffuse_color: !!python/tuple
1369
+ - 0.0
1370
+ - 0.0
1371
+ - 1.0
1372
+ emissive_color: !!python/tuple
1373
+ - 0.0
1374
+ - 0.0
1375
+ - 0.0
1376
+ roughness: 0.5
1377
+ metallic: 0.0
1378
+ opacity: 1.0
1379
+ usd_path: https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.1/Isaac/Props/UIElements/arrow_x.usd
1380
+ variants: null
1381
+ limit_ranges:
1382
+ lin_vel_x: !!python/tuple
1383
+ - -0.3
1384
+ - 0.3
1385
+ lin_vel_y: !!python/tuple
1386
+ - -1.0
1387
+ - 0.5
1388
+ ang_vel_z: !!python/tuple
1389
+ - -0.2
1390
+ - 0.2
1391
+ heading: null
videos/diagonal_fwd0.4_lat0.3.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dde9ef790471b10687b1b9248db4f6a4c6bd6acf124a3257b72389f8b97522d2
3
+ size 610596
videos/forward_cmd+y0.5.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:91fe788f3e574c13ffc56066f84d253f76e953c6019b67c4cc0fa022043ad458
3
+ size 538400
videos/sidestep_left_cmd-x0.5.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9f4210e9a3ac1b2d4a6945ae70b5aa0920c8e37627c3901b77eba8dcbe65db71
3
+ size 612774
videos/sidestep_right_cmd+x0.5.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e9de54ba5a68d200feb116117002a963be630aa70c757d5a9f1002d515bed8b1
3
+ size 603371
videos/topspeed_fwd1.0.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:22f69247f10b428a20c89a4010bf9dbbcc61d623209656eb56b609a53eb67c5e
3
+ size 696324
videos/turn_yaw0.5.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:98e1d106ce58dd85b72403dab603b713fded2192f100738a1afd651b8a0e489f
3
+ size 487217