apirrone commited on
Commit
e5ca5dd
·
verified ·
1 Parent(s): 52f2d22

share ball_kick_left/6bamlid8_2500

Browse files
README.md CHANGED
@@ -12,6 +12,7 @@ uv run train <task> --init-checkpoint hf://pollen-robotics/microduck-training/bu
12
 
13
  | bundle | task | exported to | code |
14
  |---|---|---|---|
 
15
  | [`ball_kick_right/wy2x3p87_2000`](bundles/ball_kick_right/wy2x3p87_2000) | `Mjlab-BallKick-Flat-MicroDuck` | `pollen-robotics/microduck-policies/ball_kick_right.onnx` | `8c7665695` |
16
  | [`microduck_sitstand/vfhxgrum_2250`](bundles/microduck_sitstand/vfhxgrum_2250) | `Mjlab-SitStand-Flat-MicroDuck` | `pollen-robotics/microduck-policies/alpha_sitstand.onnx` | `77ffadf43` |
17
  | [`microduck_stand/69u48n8l_9750`](bundles/microduck_stand/69u48n8l_9750) | `Mjlab-StandUp-Flat-MicroDuck` | `pollen-robotics/microduck-policies/alpha_stand.onnx` | `85105f4b1` |
 
12
 
13
  | bundle | task | exported to | code |
14
  |---|---|---|---|
15
+ | [`ball_kick_left/6bamlid8_2500`](bundles/ball_kick_left/6bamlid8_2500) | `Mjlab-BallKick-Flat-MicroDuck` | `pollen-robotics/microduck-policies/ball_kick_left.onnx` | `8c7665695` |
16
  | [`ball_kick_right/wy2x3p87_2000`](bundles/ball_kick_right/wy2x3p87_2000) | `Mjlab-BallKick-Flat-MicroDuck` | `pollen-robotics/microduck-policies/ball_kick_right.onnx` | `8c7665695` |
17
  | [`microduck_sitstand/vfhxgrum_2250`](bundles/microduck_sitstand/vfhxgrum_2250) | `Mjlab-SitStand-Flat-MicroDuck` | `pollen-robotics/microduck-policies/alpha_sitstand.onnx` | `77ffadf43` |
18
  | [`microduck_stand/69u48n8l_9750`](bundles/microduck_stand/69u48n8l_9750) | `Mjlab-StandUp-Flat-MicroDuck` | `pollen-robotics/microduck-policies/alpha_stand.onnx` | `85105f4b1` |
bundles/ball_kick_left/6bamlid8_2500/README.md ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ball_kick_left/6bamlid8_2500
2
+
3
+ Training checkpoint `model_2500.pt` of `Mjlab-BallKick-Flat-MicroDuck` (experiment `ball_kick_left`), from [pollen-robotics/microduck_rl](https://github.com/pollen-robotics/microduck_rl).
4
+
5
+ | | |
6
+ |---|---|
7
+ | code | `8c7665695ef78effd1dede5797eed23d9b62a475` |
8
+ | wandb run | `pollen-robotics/mjlab_microduck/6bamlid8` (2026-07-28_22-46-57_ball_kick_left) |
9
+ | exported to | `pollen-robotics/microduck-policies/ball_kick_left.onnx` (sha256 `d6928284dccd…`, actor weights bit-exact) |
10
+
11
+ ## Use it
12
+
13
+ ```bash
14
+ git clone https://github.com/pollen-robotics/microduck_rl && cd microduck_rl && git checkout 8c7665695ef78effd1dede5797eed23d9b62a475
15
+
16
+ # resume (same task: iteration and curricula continue where this checkpoint left them)
17
+ uv run train Mjlab-BallKick-Flat-MicroDuck --env.scene.num-envs 4096 --init-checkpoint hf://pollen-robotics/microduck-training/bundles/ball_kick_left/6bamlid8_2500 --agent.max-iterations 1000
18
+
19
+ # warm start (another task: weights/normalizer/optimizer kept, curricula restart at 0)
20
+ MICRODUCK_WARM_START=1 uv run train <other-task> --init-checkpoint hf://pollen-robotics/microduck-training/bundles/ball_kick_left/6bamlid8_2500
21
+
22
+ # ONNX for the robot (normalizer baked in)
23
+ uv run scripts/export.py Mjlab-BallKick-Flat-MicroDuck --checkpoint-file hf://pollen-robotics/microduck-training/bundles/ball_kick_left/6bamlid8_2500
24
+ ```
25
+
26
+ The command that trained it:
27
+
28
+ ```bash
29
+ uv run train Mjlab-BallKick-Flat-MicroDuck --env.scene.num-envs 4096 --agent.max_iterations 10000
30
+ ```
31
+
32
+ `bundle.json` holds the same provenance, machine-readable.
bundles/ball_kick_left/6bamlid8_2500/bundle.json ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema": 1,
3
+ "id": "ball_kick_left/6bamlid8_2500",
4
+ "task_id": "Mjlab-BallKick-Flat-MicroDuck",
5
+ "experiment_name": "ball_kick_left",
6
+ "iteration": 2500,
7
+ "checkpoint_file": "model_2500.pt",
8
+ "checkpoint_sha256": "729027199b107ed573561acde3bc7410e05786141d611414b6f167aaa4c3878a",
9
+ "source": {
10
+ "wandb_run": "pollen-robotics/mjlab_microduck/6bamlid8",
11
+ "run_name": "2026-07-28_22-46-57_ball_kick_left",
12
+ "created": "2026-07-28T20:47:01Z"
13
+ },
14
+ "code": {
15
+ "repo": "pollen-robotics/microduck_rl",
16
+ "commit": "8c7665695ef78effd1dede5797eed23d9b62a475",
17
+ "on_remote": true,
18
+ "uncommitted_diff": null
19
+ },
20
+ "command": [
21
+ "uv",
22
+ "run",
23
+ "train",
24
+ "Mjlab-BallKick-Flat-MicroDuck",
25
+ "--env.scene.num-envs",
26
+ "4096",
27
+ "--agent.max_iterations",
28
+ "10000"
29
+ ],
30
+ "loaded_from": null,
31
+ "teachers": {},
32
+ "onnx": [
33
+ {
34
+ "repo": "pollen-robotics/microduck-policies",
35
+ "file": "ball_kick_left.onnx",
36
+ "revision": "665ae4eb20bfe13bca1ef4ea6d4bb6b4a096e448",
37
+ "sha256": "d6928284dccd3dd61e08bf2f760effa74309fbefd97b2b31afb2a60f526d196a",
38
+ "verified": "actor weights bit-exact"
39
+ }
40
+ ]
41
+ }
bundles/ball_kick_left/6bamlid8_2500/model_2500.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:729027199b107ed573561acde3bc7410e05786141d611414b6f167aaa4c3878a
3
+ size 4868213
bundles/ball_kick_left/6bamlid8_2500/wandb_config.yaml ADDED
@@ -0,0 +1,2115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ _wandb:
2
+ value:
3
+ cli_version: 0.24.0
4
+ e:
5
+ v4xm5uq6xkhwzd66eq0k1garvymhih2t:
6
+ args:
7
+ - Mjlab-BallKick-Flat-MicroDuck
8
+ - --env.scene.num-envs
9
+ - "4096"
10
+ - --agent.max_iterations
11
+ - "10000"
12
+ codePath: .venv/bin/train
13
+ codePathLocal: .venv/bin/train
14
+ cpu_count: 16
15
+ cpu_count_logical: 32
16
+ cudaVersion: "13.0"
17
+ disk:
18
+ /:
19
+ total: "1966736678912"
20
+ used: "1031294410752"
21
+ email: awanegenebayo@gmail.com
22
+ executable: /home/apirrone/MISC/mjlab_microduck/.venv/bin/python3
23
+ git:
24
+ commit: 8c7665695ef78effd1dede5797eed23d9b62a475
25
+ remote: git@github.com:apirrone/mjlab_microduck.git
26
+ gpu: NVIDIA GeForce RTX 5090
27
+ gpu_count: 1
28
+ gpu_nvidia:
29
+ - architecture: Blackwell
30
+ cudaCores: 21760
31
+ memoryTotal: "34190917632"
32
+ name: NVIDIA GeForce RTX 5090
33
+ uuid: GPU-863790b9-9fb8-f21a-0f41-dfaab9de05af
34
+ host: COACH2
35
+ memory:
36
+ total: "67004829696"
37
+ os: Linux-6.17.0-35-generic-x86_64-with-glibc2.39
38
+ program: /home/apirrone/MISC/mjlab_microduck/.venv/bin/train
39
+ python: CPython 3.12.3
40
+ root: /home/apirrone/MISC/mjlab_microduck
41
+ startedAt: "2026-07-28T20:47:00.977044Z"
42
+ writerId: v4xm5uq6xkhwzd66eq0k1garvymhih2t
43
+ m: []
44
+ python_version: 3.12.3
45
+ t:
46
+ "1":
47
+ - 1
48
+ - 105
49
+ "2":
50
+ - 1
51
+ - 105
52
+ "3":
53
+ - 3
54
+ - 13
55
+ - 16
56
+ - 61
57
+ "4": 3.12.3
58
+ "5": 0.24.0
59
+ "12": 0.24.0
60
+ "13": linux-x86_64
61
+ env_cfg:
62
+ value:
63
+ actions:
64
+ joint_pos:
65
+ actuator_names:
66
+ - .*
67
+ clip: null
68
+ entity_name: robot
69
+ offset: 0
70
+ preserve_order: false
71
+ scale: 1
72
+ transmission_type: JOINT
73
+ use_default_offset: true
74
+ auto_reset: true
75
+ commands:
76
+ twist:
77
+ debug_vis: false
78
+ entity_name: robot
79
+ heading_command: false
80
+ heading_control_stiffness: 0.5
81
+ init_velocity_prob: 0
82
+ ranges:
83
+ ang_vel_z:
84
+ - -0.05
85
+ - 0.05
86
+ heading: null
87
+ lin_vel_x:
88
+ - -0.01
89
+ - 0.01
90
+ lin_vel_y:
91
+ - -0.01
92
+ - 0.01
93
+ rel_forward_envs: 0.2
94
+ rel_heading_envs: 0
95
+ rel_standing_envs: 0
96
+ rel_turn_in_place_envs: 0
97
+ rel_world_envs: 0
98
+ resampling_time_range:
99
+ - 5
100
+ - 10
101
+ viz:
102
+ scale: 0.5
103
+ z_offset: 0.2
104
+ curriculum:
105
+ action_rate_weight:
106
+ func: mjlab_microduck.tasks.mdp.reward_weight
107
+ params:
108
+ reward_name: action_rate_l2
109
+ weight_stages:
110
+ - step: 0
111
+ weight: -0.1
112
+ - step: 12000
113
+ weight: -0.2
114
+ - step: 18000
115
+ weight: -0.4
116
+ - step: 24000
117
+ weight: -0.6
118
+ - step: 30000
119
+ weight: -0.8
120
+ - step: 36000
121
+ weight: -1
122
+ com_range:
123
+ func: mjlab_microduck.tasks.mdp.com_range_curriculum
124
+ params:
125
+ event_name: randomize_com
126
+ range_stages:
127
+ - range: 0.003
128
+ step: 0
129
+ - range: 0.005
130
+ step: 12000
131
+ - range: 0.01
132
+ step: 24000
133
+ - range: 0.015
134
+ step: 36000
135
+ head_com_range:
136
+ func: mjlab_microduck.tasks.mdp.com_range_curriculum
137
+ params:
138
+ event_name: randomize_head_com
139
+ range_stages:
140
+ - range: 0.003
141
+ step: 0
142
+ - range: 0.005
143
+ step: 12000
144
+ - range: 0.01
145
+ step: 24000
146
+ push_magnitude:
147
+ func: mjlab_microduck.tasks.mdp.push_curriculum
148
+ params:
149
+ event_name: push_robot
150
+ push_stages:
151
+ - step: 0
152
+ velocity_range:
153
+ x:
154
+ - 0
155
+ - 0
156
+ "y":
157
+ - 0
158
+ - 0
159
+ - step: 12000
160
+ velocity_range:
161
+ x:
162
+ - -0.08
163
+ - 0.08
164
+ "y":
165
+ - -0.08
166
+ - 0.08
167
+ - step: 24000
168
+ velocity_range:
169
+ x:
170
+ - -0.3
171
+ - 0.3
172
+ "y":
173
+ - -0.3
174
+ - 0.3
175
+ decimation: 4
176
+ episode_length_s: 5
177
+ events:
178
+ base_com:
179
+ func: mjlab.envs.mdp.dr.body.body_com_offset
180
+ interval_range_s: null
181
+ is_global_time: false
182
+ min_step_count_between_reset: 0
183
+ mode: startup
184
+ params:
185
+ asset_cfg:
186
+ actuator_ids:
187
+ slice_start: null
188
+ slice_step: null
189
+ slice_stop: null
190
+ actuator_names: null
191
+ body_ids:
192
+ slice_start: null
193
+ slice_step: null
194
+ slice_stop: null
195
+ body_names: []
196
+ camera_ids:
197
+ slice_start: null
198
+ slice_step: null
199
+ slice_stop: null
200
+ camera_names: null
201
+ geom_ids:
202
+ slice_start: null
203
+ slice_step: null
204
+ slice_stop: null
205
+ geom_names: null
206
+ joint_ids:
207
+ slice_start: null
208
+ slice_step: null
209
+ slice_stop: null
210
+ joint_names: null
211
+ light_ids:
212
+ slice_start: null
213
+ slice_step: null
214
+ slice_stop: null
215
+ light_names: null
216
+ material_ids:
217
+ slice_start: null
218
+ slice_step: null
219
+ slice_stop: null
220
+ material_names: null
221
+ name: robot
222
+ pair_ids:
223
+ slice_start: null
224
+ slice_step: null
225
+ slice_stop: null
226
+ pair_names: null
227
+ preserve_order: false
228
+ site_ids:
229
+ slice_start: null
230
+ slice_step: null
231
+ slice_stop: null
232
+ site_names: null
233
+ tendon_ids:
234
+ slice_start: null
235
+ slice_step: null
236
+ slice_stop: null
237
+ tendon_names: null
238
+ operation: add
239
+ ranges:
240
+ "0":
241
+ - -0.025
242
+ - 0.025
243
+ "1":
244
+ - -0.025
245
+ - 0.025
246
+ "2":
247
+ - -0.03
248
+ - 0.03
249
+ encoder_bias:
250
+ func: mjlab.envs.mdp.dr.joint.encoder_bias
251
+ interval_range_s: null
252
+ is_global_time: false
253
+ min_step_count_between_reset: 0
254
+ mode: startup
255
+ params:
256
+ asset_cfg:
257
+ actuator_ids:
258
+ slice_start: null
259
+ slice_step: null
260
+ slice_stop: null
261
+ actuator_names: null
262
+ body_ids:
263
+ slice_start: null
264
+ slice_step: null
265
+ slice_stop: null
266
+ body_names: null
267
+ camera_ids:
268
+ slice_start: null
269
+ slice_step: null
270
+ slice_stop: null
271
+ camera_names: null
272
+ geom_ids:
273
+ slice_start: null
274
+ slice_step: null
275
+ slice_stop: null
276
+ geom_names: null
277
+ joint_ids:
278
+ slice_start: null
279
+ slice_step: null
280
+ slice_stop: null
281
+ joint_names: null
282
+ light_ids:
283
+ slice_start: null
284
+ slice_step: null
285
+ slice_stop: null
286
+ light_names: null
287
+ material_ids:
288
+ slice_start: null
289
+ slice_step: null
290
+ slice_stop: null
291
+ material_names: null
292
+ name: robot
293
+ pair_ids:
294
+ slice_start: null
295
+ slice_step: null
296
+ slice_stop: null
297
+ pair_names: null
298
+ preserve_order: false
299
+ site_ids:
300
+ slice_start: null
301
+ slice_step: null
302
+ slice_stop: null
303
+ site_names: null
304
+ tendon_ids:
305
+ slice_start: null
306
+ slice_step: null
307
+ slice_stop: null
308
+ tendon_names: null
309
+ bias_range:
310
+ - -0.015
311
+ - 0.015
312
+ expand_bam_friction_fields:
313
+ func: mjlab_microduck.tasks.mdp.expand_bam_friction_fields
314
+ interval_range_s: null
315
+ is_global_time: false
316
+ min_step_count_between_reset: 0
317
+ mode: startup
318
+ foot_friction:
319
+ func: mjlab.envs.mdp.dr.geom.geom_friction
320
+ interval_range_s: null
321
+ is_global_time: false
322
+ min_step_count_between_reset: 0
323
+ mode: startup
324
+ params:
325
+ asset_cfg:
326
+ actuator_ids:
327
+ slice_start: null
328
+ slice_step: null
329
+ slice_stop: null
330
+ actuator_names: null
331
+ body_ids:
332
+ slice_start: null
333
+ slice_step: null
334
+ slice_stop: null
335
+ body_names: null
336
+ camera_ids:
337
+ slice_start: null
338
+ slice_step: null
339
+ slice_stop: null
340
+ camera_names: null
341
+ geom_ids:
342
+ slice_start: null
343
+ slice_step: null
344
+ slice_stop: null
345
+ geom_names:
346
+ - left_foot_collision
347
+ - right_foot_collision
348
+ joint_ids:
349
+ slice_start: null
350
+ slice_step: null
351
+ slice_stop: null
352
+ joint_names: null
353
+ light_ids:
354
+ slice_start: null
355
+ slice_step: null
356
+ slice_stop: null
357
+ light_names: null
358
+ material_ids:
359
+ slice_start: null
360
+ slice_step: null
361
+ slice_stop: null
362
+ material_names: null
363
+ name: robot
364
+ pair_ids:
365
+ slice_start: null
366
+ slice_step: null
367
+ slice_stop: null
368
+ pair_names: null
369
+ preserve_order: false
370
+ site_ids:
371
+ slice_start: null
372
+ slice_step: null
373
+ slice_stop: null
374
+ site_names: null
375
+ tendon_ids:
376
+ slice_start: null
377
+ slice_step: null
378
+ slice_stop: null
379
+ tendon_names: null
380
+ operation: abs
381
+ ranges:
382
+ - 0.7
383
+ - 1.3
384
+ shared_random: true
385
+ push_robot:
386
+ func: mjlab.envs.mdp.events.push_by_setting_velocity
387
+ interval_range_s:
388
+ - 3
389
+ - 6
390
+ is_global_time: false
391
+ min_step_count_between_reset: 0
392
+ mode: interval
393
+ params:
394
+ asset_cfg:
395
+ actuator_ids:
396
+ slice_start: null
397
+ slice_step: null
398
+ slice_stop: null
399
+ actuator_names: null
400
+ body_ids:
401
+ slice_start: null
402
+ slice_step: null
403
+ slice_stop: null
404
+ body_names: null
405
+ camera_ids:
406
+ slice_start: null
407
+ slice_step: null
408
+ slice_stop: null
409
+ camera_names: null
410
+ geom_ids:
411
+ slice_start: null
412
+ slice_step: null
413
+ slice_stop: null
414
+ geom_names: null
415
+ joint_ids:
416
+ slice_start: null
417
+ slice_step: null
418
+ slice_stop: null
419
+ joint_names: null
420
+ light_ids:
421
+ slice_start: null
422
+ slice_step: null
423
+ slice_stop: null
424
+ light_names: null
425
+ material_ids:
426
+ slice_start: null
427
+ slice_step: null
428
+ slice_stop: null
429
+ material_names: null
430
+ name: robot
431
+ pair_ids:
432
+ slice_start: null
433
+ slice_step: null
434
+ slice_stop: null
435
+ pair_names: null
436
+ preserve_order: false
437
+ site_ids:
438
+ slice_start: null
439
+ slice_step: null
440
+ slice_stop: null
441
+ site_names: null
442
+ tendon_ids:
443
+ slice_start: null
444
+ slice_step: null
445
+ slice_stop: null
446
+ tendon_names: null
447
+ velocity_range:
448
+ x:
449
+ - -0.3
450
+ - 0.3
451
+ "y":
452
+ - -0.3
453
+ - 0.3
454
+ randomize_armature:
455
+ func: mjlab.envs.mdp.dr.joint.joint_armature
456
+ interval_range_s: null
457
+ is_global_time: false
458
+ min_step_count_between_reset: 0
459
+ mode: reset
460
+ params:
461
+ asset_cfg:
462
+ actuator_ids:
463
+ slice_start: null
464
+ slice_step: null
465
+ slice_stop: null
466
+ actuator_names: null
467
+ body_ids:
468
+ slice_start: null
469
+ slice_step: null
470
+ slice_stop: null
471
+ body_names: null
472
+ camera_ids:
473
+ slice_start: null
474
+ slice_step: null
475
+ slice_stop: null
476
+ camera_names: null
477
+ geom_ids:
478
+ slice_start: null
479
+ slice_step: null
480
+ slice_stop: null
481
+ geom_names: null
482
+ joint_ids:
483
+ slice_start: null
484
+ slice_step: null
485
+ slice_stop: null
486
+ joint_names:
487
+ - .*
488
+ light_ids:
489
+ slice_start: null
490
+ slice_step: null
491
+ slice_stop: null
492
+ light_names: null
493
+ material_ids:
494
+ slice_start: null
495
+ slice_step: null
496
+ slice_stop: null
497
+ material_names: null
498
+ name: robot
499
+ pair_ids:
500
+ slice_start: null
501
+ slice_step: null
502
+ slice_stop: null
503
+ pair_names: null
504
+ preserve_order: false
505
+ site_ids:
506
+ slice_start: null
507
+ slice_step: null
508
+ slice_stop: null
509
+ site_names: null
510
+ tendon_ids:
511
+ slice_start: null
512
+ slice_step: null
513
+ slice_stop: null
514
+ tendon_names: null
515
+ operation: scale
516
+ ranges:
517
+ - 0.9
518
+ - 1.1
519
+ randomize_com:
520
+ func: mjlab.envs.mdp.dr.body.body_com_offset
521
+ interval_range_s: null
522
+ is_global_time: false
523
+ min_step_count_between_reset: 0
524
+ mode: reset
525
+ params:
526
+ asset_cfg:
527
+ actuator_ids:
528
+ slice_start: null
529
+ slice_step: null
530
+ slice_stop: null
531
+ actuator_names: null
532
+ body_ids:
533
+ slice_start: null
534
+ slice_step: null
535
+ slice_stop: null
536
+ body_names:
537
+ - trunk_base
538
+ camera_ids:
539
+ slice_start: null
540
+ slice_step: null
541
+ slice_stop: null
542
+ camera_names: null
543
+ geom_ids:
544
+ slice_start: null
545
+ slice_step: null
546
+ slice_stop: null
547
+ geom_names: null
548
+ joint_ids:
549
+ slice_start: null
550
+ slice_step: null
551
+ slice_stop: null
552
+ joint_names: null
553
+ light_ids:
554
+ slice_start: null
555
+ slice_step: null
556
+ slice_stop: null
557
+ light_names: null
558
+ material_ids:
559
+ slice_start: null
560
+ slice_step: null
561
+ slice_stop: null
562
+ material_names: null
563
+ name: robot
564
+ pair_ids:
565
+ slice_start: null
566
+ slice_step: null
567
+ slice_stop: null
568
+ pair_names: null
569
+ preserve_order: false
570
+ site_ids:
571
+ slice_start: null
572
+ slice_step: null
573
+ slice_stop: null
574
+ site_names: null
575
+ tendon_ids:
576
+ slice_start: null
577
+ slice_step: null
578
+ slice_stop: null
579
+ tendon_names: null
580
+ operation: add
581
+ ranges:
582
+ - -0.003
583
+ - 0.003
584
+ randomize_head_com:
585
+ func: mjlab.envs.mdp.dr.body.body_com_offset
586
+ interval_range_s: null
587
+ is_global_time: false
588
+ min_step_count_between_reset: 0
589
+ mode: reset
590
+ params:
591
+ asset_cfg:
592
+ actuator_ids:
593
+ slice_start: null
594
+ slice_step: null
595
+ slice_stop: null
596
+ actuator_names: null
597
+ body_ids:
598
+ slice_start: null
599
+ slice_step: null
600
+ slice_stop: null
601
+ body_names:
602
+ - neck
603
+ - neck_pitch
604
+ - yaw_roll_motion
605
+ - jaw_soft
606
+ - bearing_roll
607
+ camera_ids:
608
+ slice_start: null
609
+ slice_step: null
610
+ slice_stop: null
611
+ camera_names: null
612
+ geom_ids:
613
+ slice_start: null
614
+ slice_step: null
615
+ slice_stop: null
616
+ geom_names: null
617
+ joint_ids:
618
+ slice_start: null
619
+ slice_step: null
620
+ slice_stop: null
621
+ joint_names: null
622
+ light_ids:
623
+ slice_start: null
624
+ slice_step: null
625
+ slice_stop: null
626
+ light_names: null
627
+ material_ids:
628
+ slice_start: null
629
+ slice_step: null
630
+ slice_stop: null
631
+ material_names: null
632
+ name: robot
633
+ pair_ids:
634
+ slice_start: null
635
+ slice_step: null
636
+ slice_stop: null
637
+ pair_names: null
638
+ preserve_order: false
639
+ site_ids:
640
+ slice_start: null
641
+ slice_step: null
642
+ slice_stop: null
643
+ site_names: null
644
+ tendon_ids:
645
+ slice_start: null
646
+ slice_step: null
647
+ slice_stop: null
648
+ tendon_names: null
649
+ operation: add
650
+ ranges:
651
+ - -0.003
652
+ - 0.003
653
+ randomize_joint_friction:
654
+ func: mjlab_microduck.tasks.mdp.randomize_bam_friction
655
+ interval_range_s: null
656
+ is_global_time: false
657
+ min_step_count_between_reset: 0
658
+ mode: reset
659
+ params:
660
+ asset_cfg:
661
+ actuator_ids:
662
+ slice_start: null
663
+ slice_step: null
664
+ slice_stop: null
665
+ actuator_names: null
666
+ body_ids:
667
+ slice_start: null
668
+ slice_step: null
669
+ slice_stop: null
670
+ body_names: null
671
+ camera_ids:
672
+ slice_start: null
673
+ slice_step: null
674
+ slice_stop: null
675
+ camera_names: null
676
+ geom_ids:
677
+ slice_start: null
678
+ slice_step: null
679
+ slice_stop: null
680
+ geom_names: null
681
+ joint_ids:
682
+ slice_start: null
683
+ slice_step: null
684
+ slice_stop: null
685
+ joint_names: null
686
+ light_ids:
687
+ slice_start: null
688
+ slice_step: null
689
+ slice_stop: null
690
+ light_names: null
691
+ material_ids:
692
+ slice_start: null
693
+ slice_step: null
694
+ slice_stop: null
695
+ material_names: null
696
+ name: robot
697
+ pair_ids:
698
+ slice_start: null
699
+ slice_step: null
700
+ slice_stop: null
701
+ pair_names: null
702
+ preserve_order: false
703
+ site_ids:
704
+ slice_start: null
705
+ slice_step: null
706
+ slice_stop: null
707
+ site_names: null
708
+ tendon_ids:
709
+ slice_start: null
710
+ slice_step: null
711
+ slice_stop: null
712
+ tendon_names: null
713
+ scale_range:
714
+ - 0.9
715
+ - 1.1
716
+ randomize_mass_inertia:
717
+ func: mjlab.envs.mdp.dr.body.pseudo_inertia
718
+ interval_range_s: null
719
+ is_global_time: false
720
+ min_step_count_between_reset: 0
721
+ mode: startup
722
+ params:
723
+ alpha_range:
724
+ - -0.02564664719377529
725
+ - 0.024395082084716024
726
+ asset_cfg:
727
+ actuator_ids:
728
+ slice_start: null
729
+ slice_step: null
730
+ slice_stop: null
731
+ actuator_names: null
732
+ body_ids:
733
+ slice_start: null
734
+ slice_step: null
735
+ slice_stop: null
736
+ body_names:
737
+ - trunk_base
738
+ camera_ids:
739
+ slice_start: null
740
+ slice_step: null
741
+ slice_stop: null
742
+ camera_names: null
743
+ geom_ids:
744
+ slice_start: null
745
+ slice_step: null
746
+ slice_stop: null
747
+ geom_names: null
748
+ joint_ids:
749
+ slice_start: null
750
+ slice_step: null
751
+ slice_stop: null
752
+ joint_names: null
753
+ light_ids:
754
+ slice_start: null
755
+ slice_step: null
756
+ slice_stop: null
757
+ light_names: null
758
+ material_ids:
759
+ slice_start: null
760
+ slice_step: null
761
+ slice_stop: null
762
+ material_names: null
763
+ name: robot
764
+ pair_ids:
765
+ slice_start: null
766
+ slice_step: null
767
+ slice_stop: null
768
+ pair_names: null
769
+ preserve_order: false
770
+ site_ids:
771
+ slice_start: null
772
+ slice_step: null
773
+ slice_stop: null
774
+ site_names: null
775
+ tendon_ids:
776
+ slice_start: null
777
+ slice_step: null
778
+ slice_stop: null
779
+ tendon_names: null
780
+ reset_action_history:
781
+ func: mjlab_microduck.tasks.mdp.reset_action_history
782
+ interval_range_s: null
783
+ is_global_time: false
784
+ min_step_count_between_reset: 0
785
+ mode: reset
786
+ reset_ball:
787
+ func: mjlab_microduck.tasks.mdp.reset_ball_in_front_of_foot
788
+ interval_range_s: null
789
+ is_global_time: false
790
+ min_step_count_between_reset: 0
791
+ mode: reset
792
+ params:
793
+ asset_name: ball
794
+ ball_radius: 0.035
795
+ noise_xy: 0.015
796
+ offset:
797
+ - 0.09
798
+ - 0.042
799
+ reset_base:
800
+ func: mjlab.envs.mdp.events.reset_root_state_uniform
801
+ interval_range_s: null
802
+ is_global_time: false
803
+ min_step_count_between_reset: 0
804
+ mode: reset
805
+ params:
806
+ pose_range:
807
+ x:
808
+ - -0.5
809
+ - 0.5
810
+ "y":
811
+ - -0.5
812
+ - 0.5
813
+ yaw:
814
+ - -3.14
815
+ - 3.14
816
+ z:
817
+ - 0.01
818
+ - 0.05
819
+ reset_robot_joints:
820
+ func: mjlab.envs.mdp.events.reset_joints_by_offset
821
+ interval_range_s: null
822
+ is_global_time: false
823
+ min_step_count_between_reset: 0
824
+ mode: reset
825
+ params:
826
+ asset_cfg:
827
+ actuator_ids:
828
+ slice_start: null
829
+ slice_step: null
830
+ slice_stop: null
831
+ actuator_names: null
832
+ body_ids:
833
+ slice_start: null
834
+ slice_step: null
835
+ slice_stop: null
836
+ body_names: null
837
+ camera_ids:
838
+ slice_start: null
839
+ slice_step: null
840
+ slice_stop: null
841
+ camera_names: null
842
+ geom_ids:
843
+ slice_start: null
844
+ slice_step: null
845
+ slice_stop: null
846
+ geom_names: null
847
+ joint_ids:
848
+ slice_start: null
849
+ slice_step: null
850
+ slice_stop: null
851
+ joint_names:
852
+ - .*
853
+ light_ids:
854
+ slice_start: null
855
+ slice_step: null
856
+ slice_stop: null
857
+ light_names: null
858
+ material_ids:
859
+ slice_start: null
860
+ slice_step: null
861
+ slice_stop: null
862
+ material_names: null
863
+ name: robot
864
+ pair_ids:
865
+ slice_start: null
866
+ slice_step: null
867
+ slice_stop: null
868
+ pair_names: null
869
+ preserve_order: false
870
+ site_ids:
871
+ slice_start: null
872
+ slice_step: null
873
+ slice_stop: null
874
+ site_names: null
875
+ tendon_ids:
876
+ slice_start: null
877
+ slice_step: null
878
+ slice_stop: null
879
+ tendon_names: null
880
+ position_range:
881
+ - -0.05
882
+ - 0.05
883
+ velocity_range:
884
+ - 0
885
+ - 0
886
+ set_ground_state:
887
+ func: mjlab_microduck.tasks.mdp.set_random_ground_state
888
+ interval_range_s: null
889
+ is_global_time: false
890
+ min_step_count_between_reset: 0
891
+ mode: reset
892
+ params:
893
+ face_down_prob: 0
894
+ face_up_prob: 0
895
+ sitting_prob: 0
896
+ sitting_tilt_max: 0.08726646259971647
897
+ standing_prob: 1
898
+ standing_z_max: 0.12
899
+ standing_z_min: 0.11
900
+ is_finite_horizon: false
901
+ metrics:
902
+ mean_action_acc:
903
+ func: mjlab.envs.mdp.metrics.mean_action_acc
904
+ per_substep: false
905
+ reduce: mean
906
+ observations:
907
+ actor:
908
+ concatenate_dim: -1
909
+ concatenate_terms: true
910
+ enable_corruption: true
911
+ flatten_history_dim: true
912
+ history_length: null
913
+ nan_check_per_term: true
914
+ nan_policy: disabled
915
+ terms:
916
+ actions:
917
+ clip: null
918
+ delay_hold_prob: 0
919
+ delay_max_lag: 0
920
+ delay_min_lag: 0
921
+ delay_per_env: true
922
+ delay_per_env_phase: true
923
+ delay_update_period: 0
924
+ flatten_history_dim: true
925
+ func: mjlab.envs.mdp.observations.last_action
926
+ history_length: 0
927
+ noise: null
928
+ scale: null
929
+ base_ang_vel:
930
+ clip: null
931
+ delay_hold_prob: 0
932
+ delay_max_lag: 1
933
+ delay_min_lag: 0
934
+ delay_per_env: true
935
+ delay_per_env_phase: true
936
+ delay_update_period: 64
937
+ flatten_history_dim: true
938
+ func: mjlab_microduck.tasks.mdp.base_ang_vel_imu_misaligned
939
+ history_length: 0
940
+ noise:
941
+ n_max: 0.03
942
+ n_min: -0.03
943
+ operation: add
944
+ params:
945
+ max_angle_deg: 6
946
+ scale: null
947
+ body_command:
948
+ clip: null
949
+ delay_hold_prob: 0
950
+ delay_max_lag: 0
951
+ delay_min_lag: 0
952
+ delay_per_env: true
953
+ delay_per_env_phase: true
954
+ delay_update_period: 0
955
+ flatten_history_dim: true
956
+ func: mjlab_microduck.tasks.mdp.zero_command_padding
957
+ history_length: 0
958
+ noise: null
959
+ params:
960
+ dim: 6
961
+ scale: null
962
+ command:
963
+ clip: null
964
+ delay_hold_prob: 0
965
+ delay_max_lag: 0
966
+ delay_min_lag: 0
967
+ delay_per_env: true
968
+ delay_per_env_phase: true
969
+ delay_update_period: 0
970
+ flatten_history_dim: true
971
+ func: mjlab.envs.mdp.observations.generated_commands
972
+ history_length: 0
973
+ noise: null
974
+ params:
975
+ command_name: twist
976
+ scale: null
977
+ head_command:
978
+ clip: null
979
+ delay_hold_prob: 0
980
+ delay_max_lag: 0
981
+ delay_min_lag: 0
982
+ delay_per_env: true
983
+ delay_per_env_phase: true
984
+ delay_update_period: 0
985
+ flatten_history_dim: true
986
+ func: mjlab_microduck.tasks.mdp.zero_command_padding
987
+ history_length: 0
988
+ noise: null
989
+ params:
990
+ dim: 4
991
+ scale: null
992
+ joint_pos:
993
+ clip: null
994
+ delay_hold_prob: 0
995
+ delay_max_lag: 0
996
+ delay_min_lag: 0
997
+ delay_per_env: true
998
+ delay_per_env_phase: true
999
+ delay_update_period: 0
1000
+ flatten_history_dim: true
1001
+ func: mjlab.envs.mdp.observations.joint_pos_rel
1002
+ history_length: 0
1003
+ noise:
1004
+ n_max: 0.001
1005
+ n_min: -0.001
1006
+ operation: add
1007
+ params:
1008
+ asset_cfg:
1009
+ actuator_ids:
1010
+ slice_start: null
1011
+ slice_step: null
1012
+ slice_stop: null
1013
+ actuator_names: null
1014
+ body_ids:
1015
+ slice_start: null
1016
+ slice_step: null
1017
+ slice_stop: null
1018
+ body_names: null
1019
+ camera_ids:
1020
+ slice_start: null
1021
+ slice_step: null
1022
+ slice_stop: null
1023
+ camera_names: null
1024
+ geom_ids:
1025
+ slice_start: null
1026
+ slice_step: null
1027
+ slice_stop: null
1028
+ geom_names: null
1029
+ joint_ids:
1030
+ slice_start: null
1031
+ slice_step: null
1032
+ slice_stop: null
1033
+ joint_names:
1034
+ - ^(?!passive_).*
1035
+ light_ids:
1036
+ slice_start: null
1037
+ slice_step: null
1038
+ slice_stop: null
1039
+ light_names: null
1040
+ material_ids:
1041
+ slice_start: null
1042
+ slice_step: null
1043
+ slice_stop: null
1044
+ material_names: null
1045
+ name: robot
1046
+ pair_ids:
1047
+ slice_start: null
1048
+ slice_step: null
1049
+ slice_stop: null
1050
+ pair_names: null
1051
+ preserve_order: false
1052
+ site_ids:
1053
+ slice_start: null
1054
+ slice_step: null
1055
+ slice_stop: null
1056
+ site_names: null
1057
+ tendon_ids:
1058
+ slice_start: null
1059
+ slice_step: null
1060
+ slice_stop: null
1061
+ tendon_names: null
1062
+ biased: true
1063
+ scale: null
1064
+ joint_vel:
1065
+ clip: null
1066
+ delay_hold_prob: 0
1067
+ delay_max_lag: 1
1068
+ delay_min_lag: 1
1069
+ delay_per_env: true
1070
+ delay_per_env_phase: true
1071
+ delay_update_period: 0
1072
+ flatten_history_dim: true
1073
+ func: mjlab.envs.mdp.observations.joint_vel_rel
1074
+ history_length: 0
1075
+ noise:
1076
+ n_max: 0.25
1077
+ n_min: -0.25
1078
+ operation: add
1079
+ params:
1080
+ asset_cfg:
1081
+ actuator_ids:
1082
+ slice_start: null
1083
+ slice_step: null
1084
+ slice_stop: null
1085
+ actuator_names: null
1086
+ body_ids:
1087
+ slice_start: null
1088
+ slice_step: null
1089
+ slice_stop: null
1090
+ body_names: null
1091
+ camera_ids:
1092
+ slice_start: null
1093
+ slice_step: null
1094
+ slice_stop: null
1095
+ camera_names: null
1096
+ geom_ids:
1097
+ slice_start: null
1098
+ slice_step: null
1099
+ slice_stop: null
1100
+ geom_names: null
1101
+ joint_ids:
1102
+ slice_start: null
1103
+ slice_step: null
1104
+ slice_stop: null
1105
+ joint_names:
1106
+ - ^(?!passive_).*
1107
+ light_ids:
1108
+ slice_start: null
1109
+ slice_step: null
1110
+ slice_stop: null
1111
+ light_names: null
1112
+ material_ids:
1113
+ slice_start: null
1114
+ slice_step: null
1115
+ slice_stop: null
1116
+ material_names: null
1117
+ name: robot
1118
+ pair_ids:
1119
+ slice_start: null
1120
+ slice_step: null
1121
+ slice_stop: null
1122
+ pair_names: null
1123
+ preserve_order: false
1124
+ site_ids:
1125
+ slice_start: null
1126
+ slice_step: null
1127
+ slice_stop: null
1128
+ site_names: null
1129
+ tendon_ids:
1130
+ slice_start: null
1131
+ slice_step: null
1132
+ slice_stop: null
1133
+ tendon_names: null
1134
+ scale: null
1135
+ projected_gravity:
1136
+ clip: null
1137
+ delay_hold_prob: 0
1138
+ delay_max_lag: 1
1139
+ delay_min_lag: 0
1140
+ delay_per_env: true
1141
+ delay_per_env_phase: true
1142
+ delay_update_period: 64
1143
+ flatten_history_dim: true
1144
+ func: mjlab_microduck.tasks.mdp.projected_gravity_imu_misaligned
1145
+ history_length: 0
1146
+ noise:
1147
+ n_max: 0.01
1148
+ n_min: -0.01
1149
+ operation: add
1150
+ params:
1151
+ max_angle_deg: 6
1152
+ scale: null
1153
+ critic:
1154
+ concatenate_dim: -1
1155
+ concatenate_terms: true
1156
+ enable_corruption: false
1157
+ flatten_history_dim: true
1158
+ history_length: null
1159
+ nan_check_per_term: true
1160
+ nan_policy: disabled
1161
+ terms:
1162
+ actions:
1163
+ clip: null
1164
+ delay_hold_prob: 0
1165
+ delay_max_lag: 0
1166
+ delay_min_lag: 0
1167
+ delay_per_env: true
1168
+ delay_per_env_phase: true
1169
+ delay_update_period: 0
1170
+ flatten_history_dim: true
1171
+ func: mjlab.envs.mdp.observations.last_action
1172
+ history_length: 0
1173
+ noise: null
1174
+ scale: null
1175
+ ball_position:
1176
+ clip: null
1177
+ delay_hold_prob: 0
1178
+ delay_max_lag: 0
1179
+ delay_min_lag: 0
1180
+ delay_per_env: true
1181
+ delay_per_env_phase: true
1182
+ delay_update_period: 0
1183
+ flatten_history_dim: true
1184
+ func: mjlab_microduck.tasks.mdp.ball_pos_in_base
1185
+ history_length: 0
1186
+ noise: null
1187
+ params:
1188
+ asset_name: ball
1189
+ scale: null
1190
+ ball_velocity:
1191
+ clip: null
1192
+ delay_hold_prob: 0
1193
+ delay_max_lag: 0
1194
+ delay_min_lag: 0
1195
+ delay_per_env: true
1196
+ delay_per_env_phase: true
1197
+ delay_update_period: 0
1198
+ flatten_history_dim: true
1199
+ func: mjlab_microduck.tasks.mdp.ball_vel_in_base
1200
+ history_length: 0
1201
+ noise: null
1202
+ params:
1203
+ asset_name: ball
1204
+ scale: null
1205
+ base_ang_vel:
1206
+ clip: null
1207
+ delay_hold_prob: 0
1208
+ delay_max_lag: 0
1209
+ delay_min_lag: 0
1210
+ delay_per_env: true
1211
+ delay_per_env_phase: true
1212
+ delay_update_period: 0
1213
+ flatten_history_dim: true
1214
+ func: mjlab.envs.mdp.observations.builtin_sensor
1215
+ history_length: 0
1216
+ noise:
1217
+ n_max: 0.2
1218
+ n_min: -0.2
1219
+ operation: add
1220
+ params:
1221
+ sensor_name: robot/imu_ang_vel
1222
+ scale: null
1223
+ base_lin_vel:
1224
+ clip: null
1225
+ delay_hold_prob: 0
1226
+ delay_max_lag: 0
1227
+ delay_min_lag: 0
1228
+ delay_per_env: true
1229
+ delay_per_env_phase: true
1230
+ delay_update_period: 0
1231
+ flatten_history_dim: true
1232
+ func: mjlab.envs.mdp.observations.base_lin_vel
1233
+ history_length: 0
1234
+ noise: null
1235
+ scale: 1
1236
+ body_command:
1237
+ clip: null
1238
+ delay_hold_prob: 0
1239
+ delay_max_lag: 0
1240
+ delay_min_lag: 0
1241
+ delay_per_env: true
1242
+ delay_per_env_phase: true
1243
+ delay_update_period: 0
1244
+ flatten_history_dim: true
1245
+ func: mjlab_microduck.tasks.mdp.zero_command_padding
1246
+ history_length: 0
1247
+ noise: null
1248
+ params:
1249
+ dim: 6
1250
+ scale: null
1251
+ command:
1252
+ clip: null
1253
+ delay_hold_prob: 0
1254
+ delay_max_lag: 0
1255
+ delay_min_lag: 0
1256
+ delay_per_env: true
1257
+ delay_per_env_phase: true
1258
+ delay_update_period: 0
1259
+ flatten_history_dim: true
1260
+ func: mjlab.envs.mdp.observations.generated_commands
1261
+ history_length: 0
1262
+ noise: null
1263
+ params:
1264
+ command_name: twist
1265
+ scale: null
1266
+ foot_air_time:
1267
+ clip: null
1268
+ delay_hold_prob: 0
1269
+ delay_max_lag: 0
1270
+ delay_min_lag: 0
1271
+ delay_per_env: true
1272
+ delay_per_env_phase: true
1273
+ delay_update_period: 0
1274
+ flatten_history_dim: true
1275
+ func: mjlab.tasks.velocity.mdp.observations.foot_air_time
1276
+ history_length: 0
1277
+ noise: null
1278
+ params:
1279
+ sensor_name: feet_ground_contact
1280
+ scale: null
1281
+ foot_contact:
1282
+ clip: null
1283
+ delay_hold_prob: 0
1284
+ delay_max_lag: 0
1285
+ delay_min_lag: 0
1286
+ delay_per_env: true
1287
+ delay_per_env_phase: true
1288
+ delay_update_period: 0
1289
+ flatten_history_dim: true
1290
+ func: mjlab.tasks.velocity.mdp.observations.foot_contact
1291
+ history_length: 0
1292
+ noise: null
1293
+ params:
1294
+ sensor_name: feet_ground_contact
1295
+ scale: null
1296
+ foot_contact_forces:
1297
+ clip: null
1298
+ delay_hold_prob: 0
1299
+ delay_max_lag: 0
1300
+ delay_min_lag: 0
1301
+ delay_per_env: true
1302
+ delay_per_env_phase: true
1303
+ delay_update_period: 0
1304
+ flatten_history_dim: true
1305
+ func: mjlab.tasks.velocity.mdp.observations.foot_contact_forces
1306
+ history_length: 0
1307
+ noise: null
1308
+ params:
1309
+ sensor_name: feet_ground_contact
1310
+ scale: null
1311
+ head_command:
1312
+ clip: null
1313
+ delay_hold_prob: 0
1314
+ delay_max_lag: 0
1315
+ delay_min_lag: 0
1316
+ delay_per_env: true
1317
+ delay_per_env_phase: true
1318
+ delay_update_period: 0
1319
+ flatten_history_dim: true
1320
+ func: mjlab_microduck.tasks.mdp.zero_command_padding
1321
+ history_length: 0
1322
+ noise: null
1323
+ params:
1324
+ dim: 4
1325
+ scale: null
1326
+ joint_pos:
1327
+ clip: null
1328
+ delay_hold_prob: 0
1329
+ delay_max_lag: 0
1330
+ delay_min_lag: 0
1331
+ delay_per_env: true
1332
+ delay_per_env_phase: true
1333
+ delay_update_period: 0
1334
+ flatten_history_dim: true
1335
+ func: mjlab.envs.mdp.observations.joint_pos_rel
1336
+ history_length: 0
1337
+ noise:
1338
+ n_max: 0.001
1339
+ n_min: -0.001
1340
+ operation: add
1341
+ params:
1342
+ asset_cfg:
1343
+ actuator_ids:
1344
+ slice_start: null
1345
+ slice_step: null
1346
+ slice_stop: null
1347
+ actuator_names: null
1348
+ body_ids:
1349
+ slice_start: null
1350
+ slice_step: null
1351
+ slice_stop: null
1352
+ body_names: null
1353
+ camera_ids:
1354
+ slice_start: null
1355
+ slice_step: null
1356
+ slice_stop: null
1357
+ camera_names: null
1358
+ geom_ids:
1359
+ slice_start: null
1360
+ slice_step: null
1361
+ slice_stop: null
1362
+ geom_names: null
1363
+ joint_ids:
1364
+ slice_start: null
1365
+ slice_step: null
1366
+ slice_stop: null
1367
+ joint_names:
1368
+ - ^(?!passive_).*
1369
+ light_ids:
1370
+ slice_start: null
1371
+ slice_step: null
1372
+ slice_stop: null
1373
+ light_names: null
1374
+ material_ids:
1375
+ slice_start: null
1376
+ slice_step: null
1377
+ slice_stop: null
1378
+ material_names: null
1379
+ name: robot
1380
+ pair_ids:
1381
+ slice_start: null
1382
+ slice_step: null
1383
+ slice_stop: null
1384
+ pair_names: null
1385
+ preserve_order: false
1386
+ site_ids:
1387
+ slice_start: null
1388
+ slice_step: null
1389
+ slice_stop: null
1390
+ site_names: null
1391
+ tendon_ids:
1392
+ slice_start: null
1393
+ slice_step: null
1394
+ slice_stop: null
1395
+ tendon_names: null
1396
+ biased: false
1397
+ scale: null
1398
+ joint_vel:
1399
+ clip: null
1400
+ delay_hold_prob: 0
1401
+ delay_max_lag: 0
1402
+ delay_min_lag: 0
1403
+ delay_per_env: true
1404
+ delay_per_env_phase: true
1405
+ delay_update_period: 0
1406
+ flatten_history_dim: true
1407
+ func: mjlab.envs.mdp.observations.joint_vel_rel
1408
+ history_length: 0
1409
+ noise:
1410
+ n_max: 0.25
1411
+ n_min: -0.25
1412
+ operation: add
1413
+ params:
1414
+ asset_cfg:
1415
+ actuator_ids:
1416
+ slice_start: null
1417
+ slice_step: null
1418
+ slice_stop: null
1419
+ actuator_names: null
1420
+ body_ids:
1421
+ slice_start: null
1422
+ slice_step: null
1423
+ slice_stop: null
1424
+ body_names: null
1425
+ camera_ids:
1426
+ slice_start: null
1427
+ slice_step: null
1428
+ slice_stop: null
1429
+ camera_names: null
1430
+ geom_ids:
1431
+ slice_start: null
1432
+ slice_step: null
1433
+ slice_stop: null
1434
+ geom_names: null
1435
+ joint_ids:
1436
+ slice_start: null
1437
+ slice_step: null
1438
+ slice_stop: null
1439
+ joint_names:
1440
+ - ^(?!passive_).*
1441
+ light_ids:
1442
+ slice_start: null
1443
+ slice_step: null
1444
+ slice_stop: null
1445
+ light_names: null
1446
+ material_ids:
1447
+ slice_start: null
1448
+ slice_step: null
1449
+ slice_stop: null
1450
+ material_names: null
1451
+ name: robot
1452
+ pair_ids:
1453
+ slice_start: null
1454
+ slice_step: null
1455
+ slice_stop: null
1456
+ pair_names: null
1457
+ preserve_order: false
1458
+ site_ids:
1459
+ slice_start: null
1460
+ slice_step: null
1461
+ slice_stop: null
1462
+ site_names: null
1463
+ tendon_ids:
1464
+ slice_start: null
1465
+ slice_step: null
1466
+ slice_stop: null
1467
+ tendon_names: null
1468
+ scale: null
1469
+ projected_gravity:
1470
+ clip: null
1471
+ delay_hold_prob: 0
1472
+ delay_max_lag: 0
1473
+ delay_min_lag: 0
1474
+ delay_per_env: true
1475
+ delay_per_env_phase: true
1476
+ delay_update_period: 0
1477
+ flatten_history_dim: true
1478
+ func: mjlab.envs.mdp.observations.projected_gravity
1479
+ history_length: 0
1480
+ noise:
1481
+ n_max: 0.05
1482
+ n_min: -0.05
1483
+ operation: add
1484
+ scale: null
1485
+ rewards:
1486
+ action_rate_l2:
1487
+ func: mjlab.envs.mdp.rewards.action_rate_l2
1488
+ weight: -0.1
1489
+ angular_momentum:
1490
+ func: mjlab.tasks.velocity.mdp.rewards.angular_momentum_penalty
1491
+ params:
1492
+ sensor_name: robot/root_angmom
1493
+ weight: -0.02
1494
+ ball_forward_velocity:
1495
+ func: mjlab_microduck.tasks.mdp.ball_forward_velocity
1496
+ params:
1497
+ asset_name: ball
1498
+ max_speed: 1
1499
+ weight: 12
1500
+ ball_speed_overshoot:
1501
+ func: mjlab_microduck.tasks.mdp.ball_speed_overshoot_penalty
1502
+ params:
1503
+ asset_name: ball
1504
+ target_speed: 1
1505
+ weight: -4
1506
+ body_ang_vel:
1507
+ func: mjlab.tasks.velocity.mdp.rewards.body_angular_velocity_penalty
1508
+ params:
1509
+ asset_cfg:
1510
+ actuator_ids:
1511
+ slice_start: null
1512
+ slice_step: null
1513
+ slice_stop: null
1514
+ actuator_names: null
1515
+ body_ids:
1516
+ slice_start: null
1517
+ slice_step: null
1518
+ slice_stop: null
1519
+ body_names:
1520
+ - trunk_base
1521
+ camera_ids:
1522
+ slice_start: null
1523
+ slice_step: null
1524
+ slice_stop: null
1525
+ camera_names: null
1526
+ geom_ids:
1527
+ slice_start: null
1528
+ slice_step: null
1529
+ slice_stop: null
1530
+ geom_names: null
1531
+ joint_ids:
1532
+ slice_start: null
1533
+ slice_step: null
1534
+ slice_stop: null
1535
+ joint_names: null
1536
+ light_ids:
1537
+ slice_start: null
1538
+ slice_step: null
1539
+ slice_stop: null
1540
+ light_names: null
1541
+ material_ids:
1542
+ slice_start: null
1543
+ slice_step: null
1544
+ slice_stop: null
1545
+ material_names: null
1546
+ name: robot
1547
+ pair_ids:
1548
+ slice_start: null
1549
+ slice_step: null
1550
+ slice_stop: null
1551
+ pair_names: null
1552
+ preserve_order: false
1553
+ site_ids:
1554
+ slice_start: null
1555
+ slice_step: null
1556
+ slice_stop: null
1557
+ site_names: null
1558
+ tendon_ids:
1559
+ slice_start: null
1560
+ slice_step: null
1561
+ slice_stop: null
1562
+ tendon_names: null
1563
+ weight: -0.05
1564
+ dof_pos_limits:
1565
+ func: mjlab.envs.mdp.rewards.joint_pos_limits
1566
+ weight: -1
1567
+ height_stand:
1568
+ func: mjlab_microduck.tasks.mdp.height_target_gaussian
1569
+ params:
1570
+ asset_cfg:
1571
+ actuator_ids:
1572
+ slice_start: null
1573
+ slice_step: null
1574
+ slice_stop: null
1575
+ actuator_names: null
1576
+ body_ids:
1577
+ slice_start: null
1578
+ slice_step: null
1579
+ slice_stop: null
1580
+ body_names:
1581
+ - trunk_base
1582
+ camera_ids:
1583
+ slice_start: null
1584
+ slice_step: null
1585
+ slice_stop: null
1586
+ camera_names: null
1587
+ geom_ids:
1588
+ slice_start: null
1589
+ slice_step: null
1590
+ slice_stop: null
1591
+ geom_names: null
1592
+ joint_ids:
1593
+ slice_start: null
1594
+ slice_step: null
1595
+ slice_stop: null
1596
+ joint_names: null
1597
+ light_ids:
1598
+ slice_start: null
1599
+ slice_step: null
1600
+ slice_stop: null
1601
+ light_names: null
1602
+ material_ids:
1603
+ slice_start: null
1604
+ slice_step: null
1605
+ slice_stop: null
1606
+ material_names: null
1607
+ name: robot
1608
+ pair_ids:
1609
+ slice_start: null
1610
+ slice_step: null
1611
+ slice_stop: null
1612
+ pair_names: null
1613
+ preserve_order: false
1614
+ site_ids:
1615
+ slice_start: null
1616
+ slice_step: null
1617
+ slice_stop: null
1618
+ site_names: null
1619
+ tendon_ids:
1620
+ slice_start: null
1621
+ slice_step: null
1622
+ slice_stop: null
1623
+ tendon_names: null
1624
+ std: 0.04
1625
+ target_height: 0.115
1626
+ weight: 1
1627
+ pose_stand_legs:
1628
+ func: mjlab_microduck.tasks.mdp.pose_target_match
1629
+ params:
1630
+ joint_indices:
1631
+ - 0
1632
+ - 1
1633
+ - 2
1634
+ - 3
1635
+ - 4
1636
+ - 9
1637
+ - 10
1638
+ - 11
1639
+ - 12
1640
+ - 13
1641
+ std: 0.5
1642
+ target_overrides: null
1643
+ weight: 2
1644
+ pose_stand_neck:
1645
+ func: mjlab_microduck.tasks.mdp.pose_target_match
1646
+ params:
1647
+ joint_indices:
1648
+ - 5
1649
+ - 6
1650
+ - 7
1651
+ - 8
1652
+ std: 0.3
1653
+ target_overrides: null
1654
+ weight: 1
1655
+ self_collisions:
1656
+ func: mjlab.tasks.velocity.mdp.rewards.self_collision_cost
1657
+ params:
1658
+ sensor_name: self_collision
1659
+ weight: -1
1660
+ support_foot_grounded:
1661
+ func: mjlab_microduck.tasks.mdp.single_foot_grounded_reward
1662
+ params:
1663
+ sensor_name: support_foot_ground_contact
1664
+ weight: 2
1665
+ upright:
1666
+ func: mjlab.tasks.velocity.mdp.rewards.upright
1667
+ params:
1668
+ asset_cfg:
1669
+ actuator_ids:
1670
+ slice_start: null
1671
+ slice_step: null
1672
+ slice_stop: null
1673
+ actuator_names: null
1674
+ body_ids:
1675
+ slice_start: null
1676
+ slice_step: null
1677
+ slice_stop: null
1678
+ body_names:
1679
+ - trunk_base
1680
+ camera_ids:
1681
+ slice_start: null
1682
+ slice_step: null
1683
+ slice_stop: null
1684
+ camera_names: null
1685
+ geom_ids:
1686
+ slice_start: null
1687
+ slice_step: null
1688
+ slice_stop: null
1689
+ geom_names: null
1690
+ joint_ids:
1691
+ slice_start: null
1692
+ slice_step: null
1693
+ slice_stop: null
1694
+ joint_names: null
1695
+ light_ids:
1696
+ slice_start: null
1697
+ slice_step: null
1698
+ slice_stop: null
1699
+ light_names: null
1700
+ material_ids:
1701
+ slice_start: null
1702
+ slice_step: null
1703
+ slice_stop: null
1704
+ material_names: null
1705
+ name: robot
1706
+ pair_ids:
1707
+ slice_start: null
1708
+ slice_step: null
1709
+ slice_stop: null
1710
+ pair_names: null
1711
+ preserve_order: false
1712
+ site_ids:
1713
+ slice_start: null
1714
+ slice_step: null
1715
+ slice_stop: null
1716
+ site_names: null
1717
+ tendon_ids:
1718
+ slice_start: null
1719
+ slice_step: null
1720
+ slice_stop: null
1721
+ tendon_names: null
1722
+ std: 0.22360679774997896
1723
+ weight: 2
1724
+ scale_rewards_by_dt: true
1725
+ scene:
1726
+ entities:
1727
+ ball:
1728
+ articulation: null
1729
+ cameras: []
1730
+ collisions: []
1731
+ init_state:
1732
+ ang_vel:
1733
+ - 0
1734
+ - 0
1735
+ - 0
1736
+ joint_pos:
1737
+ .*: 0
1738
+ joint_vel:
1739
+ .*: 0
1740
+ lin_vel:
1741
+ - 0
1742
+ - 0
1743
+ - 0
1744
+ pos:
1745
+ - 0.3
1746
+ - 0
1747
+ - 0.035
1748
+ rot:
1749
+ - 1
1750
+ - 0
1751
+ - 0
1752
+ - 0
1753
+ lights: []
1754
+ materials: []
1755
+ sort_actuators: false
1756
+ spec_fn: mjlab_microduck.robot.microduck_constants.get_ball_spec
1757
+ textures: []
1758
+ robot:
1759
+ articulation:
1760
+ actuators:
1761
+ - armature: null
1762
+ delay_hold_prob: 0
1763
+ delay_max_lag: 6
1764
+ delay_min_lag: 3
1765
+ delay_per_env_phase: true
1766
+ delay_update_period: 0
1767
+ frictionloss: null
1768
+ json_path: null
1769
+ kp_fw: 200
1770
+ model: m6
1771
+ motor_name: xl330
1772
+ stiff_frictionloss: true
1773
+ target_names_expr:
1774
+ - ^(?!passive_).*
1775
+ transmission_type: JOINT
1776
+ vin: null
1777
+ vin_drop_gain_range:
1778
+ - 0
1779
+ - 0.2
1780
+ vin_min: 6
1781
+ vin_range:
1782
+ - 6.5
1783
+ - 8.2
1784
+ viscous_damping: null
1785
+ soft_joint_pos_limit_factor: 0.9
1786
+ cameras: []
1787
+ collisions:
1788
+ - conaffinity: 1
1789
+ condim:
1790
+ .*_collision: 1
1791
+ ^(left|right)_foot_collision$: 3
1792
+ contype: 1
1793
+ disable_other_geoms: true
1794
+ friction:
1795
+ ^(left|right)_foot_collision$:
1796
+ - 1
1797
+ gap: null
1798
+ geom_names_expr:
1799
+ - .*_collision
1800
+ margin: null
1801
+ priority:
1802
+ ^(left|right)_foot_collision$: 1
1803
+ solimp: null
1804
+ solmix: null
1805
+ solref: null
1806
+ init_state:
1807
+ ang_vel:
1808
+ - 0
1809
+ - 0
1810
+ - 0
1811
+ joint_pos:
1812
+ .*head_pitch.*: 0.3491
1813
+ .*head_roll.*: 0
1814
+ .*head_yaw.*: 0
1815
+ .*hip_yaw.*: 0
1816
+ .*left_ankle.*: 0.453
1817
+ .*left_hip_pitch.*: -0.4579
1818
+ .*left_hip_roll.*: -0.0873
1819
+ .*left_knee.*: -0.0049
1820
+ .*neck_pitch.*: 0.3491
1821
+ .*right_ankle.*: -0.453
1822
+ .*right_hip_pitch.*: 0.4579
1823
+ .*right_hip_roll.*: 0.0873
1824
+ .*right_knee.*: 0.0049
1825
+ joint_vel:
1826
+ .*: 0
1827
+ lin_vel:
1828
+ - 0
1829
+ - 0
1830
+ - 0
1831
+ pos:
1832
+ - 0
1833
+ - 0
1834
+ - 0
1835
+ rot:
1836
+ - 1
1837
+ - 0
1838
+ - 0
1839
+ - 0
1840
+ lights: []
1841
+ materials: []
1842
+ sort_actuators: false
1843
+ spec_fn: mjlab_microduck.robot.microduck_constants.get_standup_spec
1844
+ textures: []
1845
+ env_spacing: 2
1846
+ extent: 2
1847
+ num_envs: 4096
1848
+ sensors:
1849
+ - debug: false
1850
+ fields:
1851
+ - found
1852
+ - force
1853
+ global_frame: false
1854
+ history_length: 0
1855
+ name: feet_ground_contact
1856
+ num_slots: 1
1857
+ primary:
1858
+ entity: robot
1859
+ exclude: []
1860
+ mode: geom
1861
+ pattern: ^(left_foot_collision|right_foot_collision)$
1862
+ reduce: netforce
1863
+ secondary:
1864
+ entity: null
1865
+ exclude: []
1866
+ mode: body
1867
+ pattern: terrain
1868
+ secondary_policy: first
1869
+ track_air_time: true
1870
+ - debug: false
1871
+ fields:
1872
+ - found
1873
+ global_frame: false
1874
+ history_length: 0
1875
+ name: support_foot_ground_contact
1876
+ num_slots: 1
1877
+ primary:
1878
+ entity: robot
1879
+ exclude: []
1880
+ mode: geom
1881
+ pattern: ^right_foot_collision$
1882
+ reduce: netforce
1883
+ secondary:
1884
+ entity: null
1885
+ exclude: []
1886
+ mode: body
1887
+ pattern: terrain
1888
+ secondary_policy: first
1889
+ track_air_time: false
1890
+ - debug: false
1891
+ fields:
1892
+ - found
1893
+ global_frame: false
1894
+ history_length: 0
1895
+ name: self_collision
1896
+ num_slots: 1
1897
+ primary:
1898
+ entity: robot
1899
+ exclude: []
1900
+ mode: subtree
1901
+ pattern: trunk_base
1902
+ reduce: none
1903
+ secondary:
1904
+ entity: robot
1905
+ exclude: []
1906
+ mode: subtree
1907
+ pattern: trunk_base
1908
+ secondary_policy: first
1909
+ track_air_time: false
1910
+ spec_fn: null
1911
+ terrain:
1912
+ articulation: null
1913
+ cameras: []
1914
+ collisions: []
1915
+ env_spacing: 2
1916
+ init_state:
1917
+ ang_vel:
1918
+ - 0
1919
+ - 0
1920
+ - 0
1921
+ joint_pos:
1922
+ .*: 0
1923
+ joint_vel:
1924
+ .*: 0
1925
+ lin_vel:
1926
+ - 0
1927
+ - 0
1928
+ - 0
1929
+ pos:
1930
+ - 0
1931
+ - 0
1932
+ - 0
1933
+ rot:
1934
+ - 1
1935
+ - 0
1936
+ - 0
1937
+ - 0
1938
+ lights:
1939
+ - body: world
1940
+ castshadow: true
1941
+ cutoff: 45
1942
+ dir:
1943
+ - 0
1944
+ - 0
1945
+ - -1
1946
+ exponent: 10
1947
+ mode: fixed
1948
+ name: sun
1949
+ pos:
1950
+ - 0
1951
+ - 0
1952
+ - 1.5
1953
+ target: null
1954
+ type: directional
1955
+ materials:
1956
+ - geom_names_expr:
1957
+ - terrain$
1958
+ name: groundplane
1959
+ reflectance: 0.2
1960
+ rgba:
1961
+ - 1
1962
+ - 1
1963
+ - 1
1964
+ - 1
1965
+ texrepeat:
1966
+ - 4
1967
+ - 4
1968
+ texture: groundplane
1969
+ texuniform: true
1970
+ max_init_terrain_level: 5
1971
+ num_envs: 4096
1972
+ sort_actuators: false
1973
+ spec_fn: mjlab.entity.entity.EntityCfg.<lambda>.<locals>.<lambda>
1974
+ terrain_generator: null
1975
+ terrain_type: plane
1976
+ textures:
1977
+ - builtin: checker
1978
+ height: 300
1979
+ mark: edge
1980
+ markrgb:
1981
+ - 0.8
1982
+ - 0.8
1983
+ - 0.8
1984
+ name: groundplane
1985
+ rgb1:
1986
+ - 0.2
1987
+ - 0.3
1988
+ - 0.4
1989
+ rgb2:
1990
+ - 0.1
1991
+ - 0.2
1992
+ - 0.3
1993
+ type: 2d
1994
+ width: 300
1995
+ seed: 42
1996
+ sim:
1997
+ contact_sensor_maxmatch: 64
1998
+ ls_parallel: true
1999
+ mujoco:
2000
+ ccd_iterations: 50
2001
+ cone: pyramidal
2002
+ disableflags: []
2003
+ enableflags: []
2004
+ gravity:
2005
+ - 0
2006
+ - 0
2007
+ - -9.81
2008
+ impratio: 1
2009
+ integrator: implicitfast
2010
+ iterations: 10
2011
+ jacobian: auto
2012
+ ls_iterations: 20
2013
+ ls_tolerance: 0.01
2014
+ solver: newton
2015
+ timestep: 0.005
2016
+ tolerance: 1e-08
2017
+ nan_guard:
2018
+ buffer_size: 100
2019
+ enabled: false
2020
+ max_envs_to_dump: 5
2021
+ output_dir: /tmp/mjlab/nan_dumps
2022
+ nconmax: 50
2023
+ njmax: 1500
2024
+ terminations:
2025
+ fell_over:
2026
+ func: mjlab.envs.mdp.terminations.bad_orientation
2027
+ params:
2028
+ limit_angle: 1.2217304763960306
2029
+ time_out: false
2030
+ nan_state:
2031
+ func: mjlab_microduck.tasks.mdp.robot_state_is_nan
2032
+ time_out: false
2033
+ out_of_terrain_bounds:
2034
+ func: mjlab.tasks.velocity.mdp.terminations.out_of_terrain_bounds
2035
+ time_out: true
2036
+ time_out:
2037
+ func: mjlab.envs.mdp.terminations.time_out
2038
+ time_out: true
2039
+ viewer:
2040
+ azimuth: 90
2041
+ body_name: trunk_base
2042
+ distance: 3
2043
+ elevation: -5
2044
+ enable_reflections: true
2045
+ enable_shadows: true
2046
+ entity_name: robot
2047
+ env_idx: 0
2048
+ fovy: null
2049
+ height: 240
2050
+ lookat:
2051
+ - 0
2052
+ - 0
2053
+ - 0
2054
+ max_extra_envs: 2
2055
+ origin_type: ASSET_BODY
2056
+ width: 320
2057
+ log_dir:
2058
+ value: logs/rsl_rl/ball_kick_left/2026-07-28_22-46-57_ball_kick_left
2059
+ train_cfg:
2060
+ value:
2061
+ actor:
2062
+ activation: elu
2063
+ distribution_cfg:
2064
+ init_std: 1
2065
+ std_type: scalar
2066
+ hidden_dims:
2067
+ - 512
2068
+ - 256
2069
+ - 128
2070
+ obs_normalization: true
2071
+ algorithm:
2072
+ clip_param: 0.2
2073
+ desired_kl: 0.01
2074
+ entropy_coef: 0.01
2075
+ gamma: 0.99
2076
+ lam: 0.95
2077
+ learning_rate: 0.001
2078
+ max_grad_norm: 1
2079
+ normalize_advantage_per_mini_batch: false
2080
+ num_learning_epochs: 5
2081
+ num_mini_batches: 4
2082
+ optimizer: adam
2083
+ rnd_cfg: null
2084
+ schedule: adaptive
2085
+ symmetry_cfg: null
2086
+ use_clipped_value_loss: true
2087
+ value_loss_coef: 1
2088
+ class_name: OnPolicyRunner
2089
+ clip_actions: null
2090
+ critic:
2091
+ activation: elu
2092
+ hidden_dims:
2093
+ - 512
2094
+ - 256
2095
+ - 128
2096
+ obs_normalization: true
2097
+ experiment_name: ball_kick_left
2098
+ load_checkpoint: model_.*.pt
2099
+ load_run: .*
2100
+ logger: wandb
2101
+ max_iterations: 10000
2102
+ multi_gpu: null
2103
+ num_steps_per_env: 24
2104
+ obs_groups:
2105
+ actor:
2106
+ - actor
2107
+ critic:
2108
+ - critic
2109
+ resume: false
2110
+ run_name: ball_kick_left
2111
+ save_interval: 250
2112
+ seed: 42
2113
+ upload_model: true
2114
+ wandb_project: mjlab_microduck
2115
+ wandb_tags: []