Add pretrained locomotion policies for EmbodiChain
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- CONTRIBUTING.md +17 -0
- README.md +28 -0
- index.json +209 -0
- policies/anymal-c-flat-ppo-default/checkpoint.pt +3 -0
- policies/anymal-c-flat-ppo-default/configs/env.yaml +152 -0
- policies/anymal-c-flat-ppo-default/configs/train.yaml +58 -0
- policies/anymal-c-flat-ppo-default/evaluation.json +63 -0
- policies/anymal-c-flat-ppo-default/run-manifest.json +11 -0
- policies/anymal-c-flat-ppo-newton/checkpoint.pt +3 -0
- policies/anymal-c-flat-ppo-newton/configs/env.yaml +163 -0
- policies/anymal-c-flat-ppo-newton/configs/train.yaml +58 -0
- policies/anymal-c-flat-ppo-newton/evaluation.json +63 -0
- policies/anymal-c-flat-ppo-newton/run-manifest.json +11 -0
- policies/g1-flat-ppo-default/checkpoint.pt +3 -0
- policies/g1-flat-ppo-default/configs/env.yaml +166 -0
- policies/g1-flat-ppo-default/configs/train.yaml +60 -0
- policies/g1-flat-ppo-default/evaluation.json +63 -0
- policies/g1-flat-ppo-default/run-manifest.json +11 -0
- policies/g1-flat-ppo-newton/checkpoint.pt +3 -0
- policies/g1-flat-ppo-newton/configs/env.yaml +176 -0
- policies/g1-flat-ppo-newton/configs/train.yaml +60 -0
- policies/g1-flat-ppo-newton/evaluation.json +63 -0
- policies/g1-flat-ppo-newton/run-manifest.json +11 -0
- policies/go1-flat-ppo-default/checkpoint.pt +3 -0
- policies/go1-flat-ppo-default/configs/env.yaml +132 -0
- policies/go1-flat-ppo-default/configs/train.yaml +60 -0
- policies/go1-flat-ppo-default/evaluation.json +64 -0
- policies/go1-flat-ppo-default/run-manifest.json +11 -0
- policies/go1-flat-ppo-newton/checkpoint.pt +3 -0
- policies/go1-flat-ppo-newton/configs/env.yaml +142 -0
- policies/go1-flat-ppo-newton/configs/train.yaml +60 -0
- policies/go1-flat-ppo-newton/evaluation.json +64 -0
- policies/go1-flat-ppo-newton/run-manifest.json +11 -0
- policies/go2-flat-ppo-default/checkpoint.pt +3 -0
- policies/go2-flat-ppo-default/configs/env.yaml +132 -0
- policies/go2-flat-ppo-default/configs/train.yaml +60 -0
- policies/go2-flat-ppo-default/evaluation.json +64 -0
- policies/go2-flat-ppo-default/run-manifest.json +11 -0
- policies/go2-flat-ppo-newton/checkpoint.pt +3 -0
- policies/go2-flat-ppo-newton/configs/env.yaml +142 -0
- policies/go2-flat-ppo-newton/configs/train.yaml +60 -0
- policies/go2-flat-ppo-newton/evaluation.json +64 -0
- policies/go2-flat-ppo-newton/run-manifest.json +11 -0
- policies/h1-2-flat-ppo-default/checkpoint.pt +3 -0
- policies/h1-2-flat-ppo-default/configs/env.yaml +162 -0
- policies/h1-2-flat-ppo-default/configs/train.yaml +60 -0
- policies/h1-2-flat-ppo-default/evaluation.json +63 -0
- policies/h1-2-flat-ppo-default/run-manifest.json +11 -0
- policies/h1-2-flat-ppo-newton/checkpoint.pt +3 -0
- policies/h1-2-flat-ppo-newton/configs/env.yaml +172 -0
CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Adding a policy
|
| 2 |
+
|
| 3 |
+
1. Use a unique lowercase, hyphenated model ID under `policies/`.
|
| 4 |
+
2. Include one selected checkpoint, a supported RunManifest, portable relative
|
| 5 |
+
configuration snapshots. State any applicable weight license explicitly.
|
| 6 |
+
3. Record the training source, checkpoint selection basis, tested software
|
| 7 |
+
versions, limitations and checkpoint metadata in evaluation.json. Keep MP4 files, robot
|
| 8 |
+
assets, local paths, credentials and training logs outside this repository.
|
| 9 |
+
4. Check checkpoint/configuration consistency and evaluate with the declared
|
| 10 |
+
runtime and an empty asset cache before publication.
|
| 11 |
+
5. Update index.json and the model files in the same reviewed repository
|
| 12 |
+
revision. Keep the revision history referenced by released EmbodiChain
|
| 13 |
+
versions. New environment implementations or model formats need matching
|
| 14 |
+
EmbodiChain/task-package support before they can be evaluated.
|
| 15 |
+
|
| 16 |
+
Keep shared usage instructions in EmbodiChain documentation and link them from
|
| 17 |
+
the repository README. Individual model README files are not required.
|
README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
tags:
|
| 3 |
+
- embodichain
|
| 4 |
+
- reinforcement-learning
|
| 5 |
+
- locomotion
|
| 6 |
+
---
|
| 7 |
+
|
| 8 |
+
# EmbodiChain models
|
| 9 |
+
|
| 10 |
+
Pretrained model bundles for [EmbodiChain](https://github.com/DexForce/EmbodiChain).
|
| 11 |
+
This repository contains 12 PPO policies: ANYmal-C, G1 flat locomotion, Go1, Go2,
|
| 12 |
+
H1_2 and MicroDuck, each with `default` and `newton` physics configurations.
|
| 13 |
+
|
| 14 |
+
- [Model index](index.json): model IDs, tasks and tested runtime information.
|
| 15 |
+
- `policies/<model-id>/`: weights, RunManifest, configuration snapshots and evaluation evidence.
|
| 16 |
+
- [Policy evaluation documentation](https://github.com/DexForce/EmbodiChain/blob/main/docs/source/guides/cli.md#policy-evaluation): installation prerequisites, commands and options are maintained in EmbodiChain.
|
| 17 |
+
- Robot assets are distributed separately in `DexForceAI/embodichain_data`.
|
| 18 |
+
|
| 19 |
+
HF revisions version the index and bundles together. No videos are included.
|
| 20 |
+
|
| 21 |
+
## Evaluation and licensing
|
| 22 |
+
|
| 23 |
+
No weight license is currently declared. EmbodiChain's code license does not
|
| 24 |
+
establish the redistribution terms of these weights.
|
| 25 |
+
|
| 26 |
+
Evaluation summaries record prior 1,000-step checks using a development DexSim
|
| 27 |
+
build and cached robot assets. Public-runtime and clean-cache validation remain
|
| 28 |
+
pending. Checkpoint training counters are recorded in each evaluation.json.
|
index.json
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"models": {
|
| 4 |
+
"anymal-c-flat-ppo-default": {
|
| 5 |
+
"format": "embodichain-rl-run-v1",
|
| 6 |
+
"task": "locomotion/velocity/anymal_c_flat",
|
| 7 |
+
"task_package": "embodichain_tasks",
|
| 8 |
+
"tags": [
|
| 9 |
+
"locomotion",
|
| 10 |
+
"velocity",
|
| 11 |
+
"anymal-c",
|
| 12 |
+
"ppo",
|
| 13 |
+
"default"
|
| 14 |
+
],
|
| 15 |
+
"tested_with": {
|
| 16 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 17 |
+
"dexsim": "development build",
|
| 18 |
+
"public_wheel_validated": false
|
| 19 |
+
}
|
| 20 |
+
},
|
| 21 |
+
"anymal-c-flat-ppo-newton": {
|
| 22 |
+
"format": "embodichain-rl-run-v1",
|
| 23 |
+
"task": "locomotion/velocity/anymal_c_flat",
|
| 24 |
+
"task_package": "embodichain_tasks",
|
| 25 |
+
"tags": [
|
| 26 |
+
"locomotion",
|
| 27 |
+
"velocity",
|
| 28 |
+
"anymal-c",
|
| 29 |
+
"ppo",
|
| 30 |
+
"newton"
|
| 31 |
+
],
|
| 32 |
+
"tested_with": {
|
| 33 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 34 |
+
"dexsim": "development build",
|
| 35 |
+
"public_wheel_validated": false
|
| 36 |
+
}
|
| 37 |
+
},
|
| 38 |
+
"g1-flat-ppo-default": {
|
| 39 |
+
"format": "embodichain-rl-run-v1",
|
| 40 |
+
"task": "locomotion/velocity/g1_flat",
|
| 41 |
+
"task_package": "embodichain_tasks",
|
| 42 |
+
"tags": [
|
| 43 |
+
"locomotion",
|
| 44 |
+
"velocity",
|
| 45 |
+
"g1",
|
| 46 |
+
"ppo",
|
| 47 |
+
"default"
|
| 48 |
+
],
|
| 49 |
+
"tested_with": {
|
| 50 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 51 |
+
"dexsim": "development build",
|
| 52 |
+
"public_wheel_validated": false
|
| 53 |
+
}
|
| 54 |
+
},
|
| 55 |
+
"g1-flat-ppo-newton": {
|
| 56 |
+
"format": "embodichain-rl-run-v1",
|
| 57 |
+
"task": "locomotion/velocity/g1_flat",
|
| 58 |
+
"task_package": "embodichain_tasks",
|
| 59 |
+
"tags": [
|
| 60 |
+
"locomotion",
|
| 61 |
+
"velocity",
|
| 62 |
+
"g1",
|
| 63 |
+
"ppo",
|
| 64 |
+
"newton"
|
| 65 |
+
],
|
| 66 |
+
"tested_with": {
|
| 67 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 68 |
+
"dexsim": "development build",
|
| 69 |
+
"public_wheel_validated": false
|
| 70 |
+
}
|
| 71 |
+
},
|
| 72 |
+
"go1-flat-ppo-default": {
|
| 73 |
+
"format": "embodichain-rl-run-v1",
|
| 74 |
+
"task": "locomotion/velocity/go1_flat",
|
| 75 |
+
"task_package": "embodichain_tasks",
|
| 76 |
+
"tags": [
|
| 77 |
+
"locomotion",
|
| 78 |
+
"velocity",
|
| 79 |
+
"go1",
|
| 80 |
+
"ppo",
|
| 81 |
+
"default"
|
| 82 |
+
],
|
| 83 |
+
"tested_with": {
|
| 84 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 85 |
+
"dexsim": "development build",
|
| 86 |
+
"public_wheel_validated": false
|
| 87 |
+
}
|
| 88 |
+
},
|
| 89 |
+
"go1-flat-ppo-newton": {
|
| 90 |
+
"format": "embodichain-rl-run-v1",
|
| 91 |
+
"task": "locomotion/velocity/go1_flat",
|
| 92 |
+
"task_package": "embodichain_tasks",
|
| 93 |
+
"tags": [
|
| 94 |
+
"locomotion",
|
| 95 |
+
"velocity",
|
| 96 |
+
"go1",
|
| 97 |
+
"ppo",
|
| 98 |
+
"newton"
|
| 99 |
+
],
|
| 100 |
+
"tested_with": {
|
| 101 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 102 |
+
"dexsim": "development build",
|
| 103 |
+
"public_wheel_validated": false
|
| 104 |
+
}
|
| 105 |
+
},
|
| 106 |
+
"go2-flat-ppo-default": {
|
| 107 |
+
"format": "embodichain-rl-run-v1",
|
| 108 |
+
"task": "locomotion/velocity/go2_flat",
|
| 109 |
+
"task_package": "embodichain_tasks",
|
| 110 |
+
"tags": [
|
| 111 |
+
"locomotion",
|
| 112 |
+
"velocity",
|
| 113 |
+
"go2",
|
| 114 |
+
"ppo",
|
| 115 |
+
"default"
|
| 116 |
+
],
|
| 117 |
+
"tested_with": {
|
| 118 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 119 |
+
"dexsim": "development build",
|
| 120 |
+
"public_wheel_validated": false
|
| 121 |
+
}
|
| 122 |
+
},
|
| 123 |
+
"go2-flat-ppo-newton": {
|
| 124 |
+
"format": "embodichain-rl-run-v1",
|
| 125 |
+
"task": "locomotion/velocity/go2_flat",
|
| 126 |
+
"task_package": "embodichain_tasks",
|
| 127 |
+
"tags": [
|
| 128 |
+
"locomotion",
|
| 129 |
+
"velocity",
|
| 130 |
+
"go2",
|
| 131 |
+
"ppo",
|
| 132 |
+
"newton"
|
| 133 |
+
],
|
| 134 |
+
"tested_with": {
|
| 135 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 136 |
+
"dexsim": "development build",
|
| 137 |
+
"public_wheel_validated": false
|
| 138 |
+
}
|
| 139 |
+
},
|
| 140 |
+
"h1-2-flat-ppo-default": {
|
| 141 |
+
"format": "embodichain-rl-run-v1",
|
| 142 |
+
"task": "locomotion/velocity/h1_2_flat",
|
| 143 |
+
"task_package": "embodichain_tasks",
|
| 144 |
+
"tags": [
|
| 145 |
+
"locomotion",
|
| 146 |
+
"velocity",
|
| 147 |
+
"h1-2",
|
| 148 |
+
"ppo",
|
| 149 |
+
"default"
|
| 150 |
+
],
|
| 151 |
+
"tested_with": {
|
| 152 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 153 |
+
"dexsim": "development build",
|
| 154 |
+
"public_wheel_validated": false
|
| 155 |
+
}
|
| 156 |
+
},
|
| 157 |
+
"h1-2-flat-ppo-newton": {
|
| 158 |
+
"format": "embodichain-rl-run-v1",
|
| 159 |
+
"task": "locomotion/velocity/h1_2_flat",
|
| 160 |
+
"task_package": "embodichain_tasks",
|
| 161 |
+
"tags": [
|
| 162 |
+
"locomotion",
|
| 163 |
+
"velocity",
|
| 164 |
+
"h1-2",
|
| 165 |
+
"ppo",
|
| 166 |
+
"newton"
|
| 167 |
+
],
|
| 168 |
+
"tested_with": {
|
| 169 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 170 |
+
"dexsim": "development build",
|
| 171 |
+
"public_wheel_validated": false
|
| 172 |
+
}
|
| 173 |
+
},
|
| 174 |
+
"microduck-flat-ppo-default": {
|
| 175 |
+
"format": "embodichain-rl-run-v1",
|
| 176 |
+
"task": "locomotion/velocity/microduck_flat",
|
| 177 |
+
"task_package": "embodichain_tasks",
|
| 178 |
+
"tags": [
|
| 179 |
+
"locomotion",
|
| 180 |
+
"velocity",
|
| 181 |
+
"microduck",
|
| 182 |
+
"ppo",
|
| 183 |
+
"default"
|
| 184 |
+
],
|
| 185 |
+
"tested_with": {
|
| 186 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 187 |
+
"dexsim": "development build",
|
| 188 |
+
"public_wheel_validated": false
|
| 189 |
+
}
|
| 190 |
+
},
|
| 191 |
+
"microduck-flat-ppo-newton": {
|
| 192 |
+
"format": "embodichain-rl-run-v1",
|
| 193 |
+
"task": "locomotion/velocity/microduck_flat",
|
| 194 |
+
"task_package": "embodichain_tasks",
|
| 195 |
+
"tags": [
|
| 196 |
+
"locomotion",
|
| 197 |
+
"velocity",
|
| 198 |
+
"microduck",
|
| 199 |
+
"ppo",
|
| 200 |
+
"newton"
|
| 201 |
+
],
|
| 202 |
+
"tested_with": {
|
| 203 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 204 |
+
"dexsim": "development build",
|
| 205 |
+
"public_wheel_validated": false
|
| 206 |
+
}
|
| 207 |
+
}
|
| 208 |
+
}
|
| 209 |
+
}
|
policies/anymal-c-flat-ppo-default/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9ff61e36c84d00361e84c0207ffe548038a7ae721180e382cb739ecadfdb08ec
|
| 3 |
+
size 986435
|
policies/anymal-c-flat-ppo-default/configs/env.yaml
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
id: ANYmalCFlatRL-v1
|
| 2 |
+
max_episode_steps: 1000
|
| 3 |
+
num_envs: 8
|
| 4 |
+
headless: true
|
| 5 |
+
device: cuda:0
|
| 6 |
+
arena_space: 4.0
|
| 7 |
+
render_cfg:
|
| 8 |
+
renderer: fast-rt
|
| 9 |
+
physics_config:
|
| 10 |
+
gravity:
|
| 11 |
+
- 0.0
|
| 12 |
+
- 0.0
|
| 13 |
+
- -9.81
|
| 14 |
+
physics_dt: 0.005
|
| 15 |
+
env:
|
| 16 |
+
sim_steps_per_control: 4
|
| 17 |
+
control_parts:
|
| 18 |
+
- locomotion
|
| 19 |
+
events: {}
|
| 20 |
+
observations:
|
| 21 |
+
policy:
|
| 22 |
+
func: velocity_locomotion_observation
|
| 23 |
+
mode: add
|
| 24 |
+
name: policy
|
| 25 |
+
params:
|
| 26 |
+
privileged: false
|
| 27 |
+
enable_corruption: false
|
| 28 |
+
critic:
|
| 29 |
+
func: velocity_locomotion_observation
|
| 30 |
+
mode: add
|
| 31 |
+
name: critic
|
| 32 |
+
params:
|
| 33 |
+
privileged: true
|
| 34 |
+
enable_corruption: false
|
| 35 |
+
rewards:
|
| 36 |
+
total:
|
| 37 |
+
func: velocity_locomotion_total_reward
|
| 38 |
+
mode: add
|
| 39 |
+
weight: 1.0
|
| 40 |
+
params: {}
|
| 41 |
+
actions:
|
| 42 |
+
joint_position:
|
| 43 |
+
func: DefaultJointPositionTerm
|
| 44 |
+
params: {}
|
| 45 |
+
extensions: {}
|
| 46 |
+
robot:
|
| 47 |
+
uid: robot
|
| 48 |
+
fpath: ANYmalCLocomotion/usd/anymal_c.usda
|
| 49 |
+
build_pk_chain: false
|
| 50 |
+
init_pos:
|
| 51 |
+
- 0.0
|
| 52 |
+
- 0.0
|
| 53 |
+
- 0.6
|
| 54 |
+
init_qpos:
|
| 55 |
+
- 0.0
|
| 56 |
+
- 0.0
|
| 57 |
+
- 0.0
|
| 58 |
+
- 0.0
|
| 59 |
+
- 0.4
|
| 60 |
+
- -0.4
|
| 61 |
+
- 0.4
|
| 62 |
+
- -0.4
|
| 63 |
+
- -0.8
|
| 64 |
+
- 0.8
|
| 65 |
+
- -0.8
|
| 66 |
+
- 0.8
|
| 67 |
+
qpos_limits:
|
| 68 |
+
LF_HAA:
|
| 69 |
+
- -0.72
|
| 70 |
+
- 0.49
|
| 71 |
+
LF_HFE:
|
| 72 |
+
- -6.283185307179586
|
| 73 |
+
- 6.283185307179586
|
| 74 |
+
LF_KFE:
|
| 75 |
+
- -6.283185307179586
|
| 76 |
+
- 6.283185307179586
|
| 77 |
+
LH_HAA:
|
| 78 |
+
- -0.72
|
| 79 |
+
- 0.49
|
| 80 |
+
LH_HFE:
|
| 81 |
+
- -6.283185307179586
|
| 82 |
+
- 6.283185307179586
|
| 83 |
+
LH_KFE:
|
| 84 |
+
- -6.283185307179586
|
| 85 |
+
- 6.283185307179586
|
| 86 |
+
RF_HAA:
|
| 87 |
+
- -0.49
|
| 88 |
+
- 0.72
|
| 89 |
+
RF_HFE:
|
| 90 |
+
- -6.283185307179586
|
| 91 |
+
- 6.283185307179586
|
| 92 |
+
RF_KFE:
|
| 93 |
+
- -6.283185307179586
|
| 94 |
+
- 6.283185307179586
|
| 95 |
+
RH_HAA:
|
| 96 |
+
- -0.49
|
| 97 |
+
- 0.72
|
| 98 |
+
RH_HFE:
|
| 99 |
+
- -6.283185307179586
|
| 100 |
+
- 6.283185307179586
|
| 101 |
+
RH_KFE:
|
| 102 |
+
- -6.283185307179586
|
| 103 |
+
- 6.283185307179586
|
| 104 |
+
control_parts:
|
| 105 |
+
locomotion:
|
| 106 |
+
- LF_HAA
|
| 107 |
+
- LF_HFE
|
| 108 |
+
- LF_KFE
|
| 109 |
+
- LH_HAA
|
| 110 |
+
- LH_HFE
|
| 111 |
+
- LH_KFE
|
| 112 |
+
- RF_HAA
|
| 113 |
+
- RF_HFE
|
| 114 |
+
- RF_KFE
|
| 115 |
+
- RH_HAA
|
| 116 |
+
- RH_HFE
|
| 117 |
+
- RH_KFE
|
| 118 |
+
root_props:
|
| 119 |
+
fixed_base: false
|
| 120 |
+
min_position_iters: 4
|
| 121 |
+
min_velocity_iters: 0
|
| 122 |
+
self_collision_enabled: true
|
| 123 |
+
joint_drive_props:
|
| 124 |
+
drive_type: force
|
| 125 |
+
stiffness: 40.0
|
| 126 |
+
damping: 5.0
|
| 127 |
+
max_effort: 80.0
|
| 128 |
+
max_velocity: 7.5
|
| 129 |
+
asset_physics_mode: overlay
|
| 130 |
+
sensor:
|
| 131 |
+
- uid: locomotion_contacts
|
| 132 |
+
sensor_type: ContactSensor
|
| 133 |
+
articulation_cfg_list:
|
| 134 |
+
- articulation_uid: robot
|
| 135 |
+
link_name_list:
|
| 136 |
+
- LF_FOOT
|
| 137 |
+
- LH_FOOT
|
| 138 |
+
- RF_FOOT
|
| 139 |
+
- RH_FOOT
|
| 140 |
+
- base
|
| 141 |
+
- LF_THIGH
|
| 142 |
+
- LH_THIGH
|
| 143 |
+
- RF_THIGH
|
| 144 |
+
- RH_THIGH
|
| 145 |
+
filter_need_both_actor: false
|
| 146 |
+
max_contacts_per_env: 96
|
| 147 |
+
light: {}
|
| 148 |
+
background: []
|
| 149 |
+
rigid_object: []
|
| 150 |
+
rigid_object_group: []
|
| 151 |
+
articulation: []
|
| 152 |
+
physics: default
|
policies/anymal-c-flat-ppo-default/configs/train.yaml
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
trainer:
|
| 2 |
+
exp_name: anymal_c_flat_ppo
|
| 3 |
+
gym_config: env.yaml
|
| 4 |
+
seed: 42
|
| 5 |
+
device: cuda:0
|
| 6 |
+
headless: true
|
| 7 |
+
renderer: fast-rt
|
| 8 |
+
num_envs: 4
|
| 9 |
+
iterations: 500
|
| 10 |
+
buffer_size: 24
|
| 11 |
+
enable_eval: false
|
| 12 |
+
save_frequency_updates: 50
|
| 13 |
+
use_wandb: false
|
| 14 |
+
wandb_project_name: embodichain-locomotion
|
| 15 |
+
policy:
|
| 16 |
+
name: actor_critic
|
| 17 |
+
obs_groups:
|
| 18 |
+
actor:
|
| 19 |
+
- policy
|
| 20 |
+
critic:
|
| 21 |
+
- critic
|
| 22 |
+
actor:
|
| 23 |
+
type: mlp
|
| 24 |
+
network_cfg:
|
| 25 |
+
hidden_sizes:
|
| 26 |
+
- 128
|
| 27 |
+
- 128
|
| 28 |
+
- 128
|
| 29 |
+
activation: elu
|
| 30 |
+
critic:
|
| 31 |
+
type: mlp
|
| 32 |
+
network_cfg:
|
| 33 |
+
hidden_sizes:
|
| 34 |
+
- 128
|
| 35 |
+
- 128
|
| 36 |
+
- 128
|
| 37 |
+
activation: elu
|
| 38 |
+
initial_action_std: 1.0
|
| 39 |
+
algorithm:
|
| 40 |
+
name: ppo
|
| 41 |
+
cfg:
|
| 42 |
+
optimizer:
|
| 43 |
+
name: adam
|
| 44 |
+
learning_rate: 0.001
|
| 45 |
+
schedule: adaptive
|
| 46 |
+
desired_kl: 0.01
|
| 47 |
+
minimum_learning_rate: 1.0e-05
|
| 48 |
+
maximum_learning_rate: 0.01
|
| 49 |
+
n_epochs: 5
|
| 50 |
+
num_mini_batches: 4
|
| 51 |
+
batch_size: 24576
|
| 52 |
+
gamma: 0.99
|
| 53 |
+
gae_lambda: 0.95
|
| 54 |
+
clip_coef: 0.2
|
| 55 |
+
ent_coef: 0.005
|
| 56 |
+
vf_coef: 1.0
|
| 57 |
+
use_clipped_value_loss: true
|
| 58 |
+
max_grad_norm: 1.0
|
policies/anymal-c-flat-ppo-default/evaluation.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"model_id": "anymal-c-flat-ppo-default",
|
| 4 |
+
"evidence_kind": "prior_source_policy_evaluation",
|
| 5 |
+
"created_at": "2026-09-23T02:19:47.929880+00:00",
|
| 6 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 7 |
+
"runtime": {
|
| 8 |
+
"dexsim": "development build",
|
| 9 |
+
"public_wheel_validated": false,
|
| 10 |
+
"torch": "2.10.0+cu128",
|
| 11 |
+
"newton": null
|
| 12 |
+
},
|
| 13 |
+
"conditions": {
|
| 14 |
+
"seed": 10042,
|
| 15 |
+
"renderer": "fast-rt",
|
| 16 |
+
"task_id": "ANYmalCFlatRL-v1",
|
| 17 |
+
"physics": "default",
|
| 18 |
+
"command": [
|
| 19 |
+
0.3,
|
| 20 |
+
0.0,
|
| 21 |
+
0.0
|
| 22 |
+
],
|
| 23 |
+
"mode": "viewer"
|
| 24 |
+
},
|
| 25 |
+
"exit_code": 0,
|
| 26 |
+
"result": {
|
| 27 |
+
"control_steps": 1000,
|
| 28 |
+
"effective_duration": 20.0,
|
| 29 |
+
"episodes": [
|
| 30 |
+
{
|
| 31 |
+
"index": 0,
|
| 32 |
+
"length": 1000,
|
| 33 |
+
"reason": "time limit",
|
| 34 |
+
"reward": 26.797237139660865,
|
| 35 |
+
"success": false
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"metrics": {
|
| 39 |
+
"eval/avg_length": 1000.0,
|
| 40 |
+
"eval/avg_reward": 26.797237139660865,
|
| 41 |
+
"eval/success_rate": 0.0,
|
| 42 |
+
"linear_velocity_error": 0.06984560936689377,
|
| 43 |
+
"reward": 0.02671574056148529,
|
| 44 |
+
"root_height": 0.2942751348018646,
|
| 45 |
+
"yaw_rate_error": 0.04916974529623985
|
| 46 |
+
},
|
| 47 |
+
"reason": "control steps reached",
|
| 48 |
+
"requested_duration": 20.0,
|
| 49 |
+
"simulation_steps": 4000,
|
| 50 |
+
"simulation_time": 20.0
|
| 51 |
+
},
|
| 52 |
+
"limits": [
|
| 53 |
+
"This summarizes the earlier source-policy evaluation, not a new evaluation of this staged bundle.",
|
| 54 |
+
"A cached robot asset and a development simulation runtime were used.",
|
| 55 |
+
"A clean-cache evaluation using publicly installable dependencies is pending.",
|
| 56 |
+
"Velocity tasks have no terminal success goal; time-limit episodes are not failures."
|
| 57 |
+
],
|
| 58 |
+
"checkpoint_metadata": {
|
| 59 |
+
"global_step": 93818880,
|
| 60 |
+
"num_updates": 954,
|
| 61 |
+
"best_eval_value": null
|
| 62 |
+
}
|
| 63 |
+
}
|
policies/anymal-c-flat-ppo-default/run-manifest.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"configs": {
|
| 4 |
+
"train": "configs/train.yaml",
|
| 5 |
+
"gym": "configs/env.yaml"
|
| 6 |
+
},
|
| 7 |
+
"checkpoints": {
|
| 8 |
+
"latest": "checkpoint.pt",
|
| 9 |
+
"best": null
|
| 10 |
+
}
|
| 11 |
+
}
|
policies/anymal-c-flat-ppo-newton/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6bfb791d8c9b01c9d326af0fb672fc4079bae579712269c9977d60a2a51977b7
|
| 3 |
+
size 986509
|
policies/anymal-c-flat-ppo-newton/configs/env.yaml
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
id: ANYmalCFlatRL-v1
|
| 2 |
+
max_episode_steps: 1000
|
| 3 |
+
num_envs: 8
|
| 4 |
+
headless: true
|
| 5 |
+
device: cuda:0
|
| 6 |
+
arena_space: 4.0
|
| 7 |
+
render_cfg:
|
| 8 |
+
renderer: fast-rt
|
| 9 |
+
physics_config:
|
| 10 |
+
sync_to_renderer: false
|
| 11 |
+
gravity:
|
| 12 |
+
- 0.0
|
| 13 |
+
- 0.0
|
| 14 |
+
- -9.81
|
| 15 |
+
num_substeps: 1
|
| 16 |
+
solver_cfg:
|
| 17 |
+
solver_type: mujoco_warp
|
| 18 |
+
njmax: 1024
|
| 19 |
+
nconmax: 256
|
| 20 |
+
iterations: 10
|
| 21 |
+
ls_iterations: 50
|
| 22 |
+
integrator: implicitfast
|
| 23 |
+
separate_worlds: true
|
| 24 |
+
tolerance: 1.0e-08
|
| 25 |
+
physics_dt: 0.005
|
| 26 |
+
env:
|
| 27 |
+
sim_steps_per_control: 4
|
| 28 |
+
control_parts:
|
| 29 |
+
- locomotion
|
| 30 |
+
events: {}
|
| 31 |
+
observations:
|
| 32 |
+
policy:
|
| 33 |
+
func: velocity_locomotion_observation
|
| 34 |
+
mode: add
|
| 35 |
+
name: policy
|
| 36 |
+
params:
|
| 37 |
+
privileged: false
|
| 38 |
+
enable_corruption: false
|
| 39 |
+
critic:
|
| 40 |
+
func: velocity_locomotion_observation
|
| 41 |
+
mode: add
|
| 42 |
+
name: critic
|
| 43 |
+
params:
|
| 44 |
+
privileged: true
|
| 45 |
+
enable_corruption: false
|
| 46 |
+
rewards:
|
| 47 |
+
total:
|
| 48 |
+
func: velocity_locomotion_total_reward
|
| 49 |
+
mode: add
|
| 50 |
+
weight: 1.0
|
| 51 |
+
params: {}
|
| 52 |
+
actions:
|
| 53 |
+
joint_position:
|
| 54 |
+
func: DefaultJointPositionTerm
|
| 55 |
+
params: {}
|
| 56 |
+
extensions: {}
|
| 57 |
+
robot:
|
| 58 |
+
uid: robot
|
| 59 |
+
fpath: ANYmalCLocomotion/usd/anymal_c.usda
|
| 60 |
+
build_pk_chain: false
|
| 61 |
+
init_pos:
|
| 62 |
+
- 0.0
|
| 63 |
+
- 0.0
|
| 64 |
+
- 0.6
|
| 65 |
+
init_qpos:
|
| 66 |
+
- 0.0
|
| 67 |
+
- 0.0
|
| 68 |
+
- 0.0
|
| 69 |
+
- 0.0
|
| 70 |
+
- 0.4
|
| 71 |
+
- -0.4
|
| 72 |
+
- 0.4
|
| 73 |
+
- -0.4
|
| 74 |
+
- -0.8
|
| 75 |
+
- 0.8
|
| 76 |
+
- -0.8
|
| 77 |
+
- 0.8
|
| 78 |
+
qpos_limits:
|
| 79 |
+
LF_HAA:
|
| 80 |
+
- -0.72
|
| 81 |
+
- 0.49
|
| 82 |
+
LF_HFE:
|
| 83 |
+
- -6.283185307179586
|
| 84 |
+
- 6.283185307179586
|
| 85 |
+
LF_KFE:
|
| 86 |
+
- -6.283185307179586
|
| 87 |
+
- 6.283185307179586
|
| 88 |
+
LH_HAA:
|
| 89 |
+
- -0.72
|
| 90 |
+
- 0.49
|
| 91 |
+
LH_HFE:
|
| 92 |
+
- -6.283185307179586
|
| 93 |
+
- 6.283185307179586
|
| 94 |
+
LH_KFE:
|
| 95 |
+
- -6.283185307179586
|
| 96 |
+
- 6.283185307179586
|
| 97 |
+
RF_HAA:
|
| 98 |
+
- -0.49
|
| 99 |
+
- 0.72
|
| 100 |
+
RF_HFE:
|
| 101 |
+
- -6.283185307179586
|
| 102 |
+
- 6.283185307179586
|
| 103 |
+
RF_KFE:
|
| 104 |
+
- -6.283185307179586
|
| 105 |
+
- 6.283185307179586
|
| 106 |
+
RH_HAA:
|
| 107 |
+
- -0.49
|
| 108 |
+
- 0.72
|
| 109 |
+
RH_HFE:
|
| 110 |
+
- -6.283185307179586
|
| 111 |
+
- 6.283185307179586
|
| 112 |
+
RH_KFE:
|
| 113 |
+
- -6.283185307179586
|
| 114 |
+
- 6.283185307179586
|
| 115 |
+
control_parts:
|
| 116 |
+
locomotion:
|
| 117 |
+
- LF_HAA
|
| 118 |
+
- LF_HFE
|
| 119 |
+
- LF_KFE
|
| 120 |
+
- LH_HAA
|
| 121 |
+
- LH_HFE
|
| 122 |
+
- LH_KFE
|
| 123 |
+
- RF_HAA
|
| 124 |
+
- RF_HFE
|
| 125 |
+
- RF_KFE
|
| 126 |
+
- RH_HAA
|
| 127 |
+
- RH_HFE
|
| 128 |
+
- RH_KFE
|
| 129 |
+
root_props:
|
| 130 |
+
fixed_base: false
|
| 131 |
+
min_position_iters: 4
|
| 132 |
+
min_velocity_iters: 0
|
| 133 |
+
self_collision_enabled: true
|
| 134 |
+
joint_drive_props:
|
| 135 |
+
drive_type: force
|
| 136 |
+
stiffness: 40.0
|
| 137 |
+
damping: 5.0
|
| 138 |
+
max_effort: 80.0
|
| 139 |
+
max_velocity: 7.5
|
| 140 |
+
asset_physics_mode: overlay
|
| 141 |
+
sensor:
|
| 142 |
+
- uid: locomotion_contacts
|
| 143 |
+
sensor_type: ContactSensor
|
| 144 |
+
articulation_cfg_list:
|
| 145 |
+
- articulation_uid: robot
|
| 146 |
+
link_name_list:
|
| 147 |
+
- LF_FOOT
|
| 148 |
+
- LH_FOOT
|
| 149 |
+
- RF_FOOT
|
| 150 |
+
- RH_FOOT
|
| 151 |
+
- base
|
| 152 |
+
- LF_THIGH
|
| 153 |
+
- LH_THIGH
|
| 154 |
+
- RF_THIGH
|
| 155 |
+
- RH_THIGH
|
| 156 |
+
filter_need_both_actor: false
|
| 157 |
+
max_contacts_per_env: 96
|
| 158 |
+
light: {}
|
| 159 |
+
background: []
|
| 160 |
+
rigid_object: []
|
| 161 |
+
rigid_object_group: []
|
| 162 |
+
articulation: []
|
| 163 |
+
physics: newton
|
policies/anymal-c-flat-ppo-newton/configs/train.yaml
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
trainer:
|
| 2 |
+
exp_name: anymal_c_flat_ppo_newton
|
| 3 |
+
gym_config: env.yaml
|
| 4 |
+
seed: 42
|
| 5 |
+
device: cuda:0
|
| 6 |
+
headless: true
|
| 7 |
+
renderer: fast-rt
|
| 8 |
+
num_envs: 4
|
| 9 |
+
iterations: 500
|
| 10 |
+
buffer_size: 24
|
| 11 |
+
enable_eval: false
|
| 12 |
+
save_frequency_updates: 50
|
| 13 |
+
use_wandb: false
|
| 14 |
+
wandb_project_name: embodichain-locomotion
|
| 15 |
+
policy:
|
| 16 |
+
name: actor_critic
|
| 17 |
+
obs_groups:
|
| 18 |
+
actor:
|
| 19 |
+
- policy
|
| 20 |
+
critic:
|
| 21 |
+
- critic
|
| 22 |
+
actor:
|
| 23 |
+
type: mlp
|
| 24 |
+
network_cfg:
|
| 25 |
+
hidden_sizes:
|
| 26 |
+
- 128
|
| 27 |
+
- 128
|
| 28 |
+
- 128
|
| 29 |
+
activation: elu
|
| 30 |
+
critic:
|
| 31 |
+
type: mlp
|
| 32 |
+
network_cfg:
|
| 33 |
+
hidden_sizes:
|
| 34 |
+
- 128
|
| 35 |
+
- 128
|
| 36 |
+
- 128
|
| 37 |
+
activation: elu
|
| 38 |
+
initial_action_std: 1.0
|
| 39 |
+
algorithm:
|
| 40 |
+
name: ppo
|
| 41 |
+
cfg:
|
| 42 |
+
optimizer:
|
| 43 |
+
name: adam
|
| 44 |
+
learning_rate: 0.001
|
| 45 |
+
schedule: adaptive
|
| 46 |
+
desired_kl: 0.01
|
| 47 |
+
minimum_learning_rate: 1.0e-05
|
| 48 |
+
maximum_learning_rate: 0.01
|
| 49 |
+
n_epochs: 5
|
| 50 |
+
num_mini_batches: 4
|
| 51 |
+
batch_size: 24576
|
| 52 |
+
gamma: 0.99
|
| 53 |
+
gae_lambda: 0.95
|
| 54 |
+
clip_coef: 0.2
|
| 55 |
+
ent_coef: 0.005
|
| 56 |
+
vf_coef: 1.0
|
| 57 |
+
use_clipped_value_loss: true
|
| 58 |
+
max_grad_norm: 1.0
|
policies/anymal-c-flat-ppo-newton/evaluation.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"model_id": "anymal-c-flat-ppo-newton",
|
| 4 |
+
"evidence_kind": "prior_source_policy_evaluation",
|
| 5 |
+
"created_at": "2026-09-23T02:15:08.583317+00:00",
|
| 6 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 7 |
+
"runtime": {
|
| 8 |
+
"dexsim": "development build",
|
| 9 |
+
"public_wheel_validated": false,
|
| 10 |
+
"torch": "2.10.0+cu128",
|
| 11 |
+
"newton": "1.6.0"
|
| 12 |
+
},
|
| 13 |
+
"conditions": {
|
| 14 |
+
"seed": 10042,
|
| 15 |
+
"renderer": "fast-rt",
|
| 16 |
+
"task_id": "ANYmalCFlatRL-v1",
|
| 17 |
+
"physics": "newton",
|
| 18 |
+
"command": [
|
| 19 |
+
0.3,
|
| 20 |
+
0.0,
|
| 21 |
+
0.0
|
| 22 |
+
],
|
| 23 |
+
"mode": "viewer"
|
| 24 |
+
},
|
| 25 |
+
"exit_code": 0,
|
| 26 |
+
"result": {
|
| 27 |
+
"control_steps": 1000,
|
| 28 |
+
"effective_duration": 20.0,
|
| 29 |
+
"episodes": [
|
| 30 |
+
{
|
| 31 |
+
"index": 0,
|
| 32 |
+
"length": 1000,
|
| 33 |
+
"reason": "time limit",
|
| 34 |
+
"reward": 27.580372218042612,
|
| 35 |
+
"success": false
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"metrics": {
|
| 39 |
+
"eval/avg_length": 1000.0,
|
| 40 |
+
"eval/avg_reward": 27.580372218042612,
|
| 41 |
+
"eval/success_rate": 0.0,
|
| 42 |
+
"linear_velocity_error": 0.026869812980294228,
|
| 43 |
+
"reward": 0.02956734225153923,
|
| 44 |
+
"root_height": 0.5411861538887024,
|
| 45 |
+
"yaw_rate_error": 0.045531656593084335
|
| 46 |
+
},
|
| 47 |
+
"reason": "control steps reached",
|
| 48 |
+
"requested_duration": 20.0,
|
| 49 |
+
"simulation_steps": 4000,
|
| 50 |
+
"simulation_time": 20.0
|
| 51 |
+
},
|
| 52 |
+
"limits": [
|
| 53 |
+
"This summarizes the earlier source-policy evaluation, not a new evaluation of this staged bundle.",
|
| 54 |
+
"A cached robot asset and a development simulation runtime were used.",
|
| 55 |
+
"A clean-cache evaluation using publicly installable dependencies is pending.",
|
| 56 |
+
"Velocity tasks have no terminal success goal; time-limit episodes are not failures."
|
| 57 |
+
],
|
| 58 |
+
"checkpoint_metadata": {
|
| 59 |
+
"global_step": 49152000,
|
| 60 |
+
"num_updates": 500,
|
| 61 |
+
"best_eval_value": null
|
| 62 |
+
}
|
| 63 |
+
}
|
policies/anymal-c-flat-ppo-newton/run-manifest.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"configs": {
|
| 4 |
+
"train": "configs/train.yaml",
|
| 5 |
+
"gym": "configs/env.yaml"
|
| 6 |
+
},
|
| 7 |
+
"checkpoints": {
|
| 8 |
+
"latest": "checkpoint.pt",
|
| 9 |
+
"best": null
|
| 10 |
+
}
|
| 11 |
+
}
|
policies/g1-flat-ppo-default/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f720c775e9d026b007a854b4231af077a608f0ca5f392d523795257edd1165a3
|
| 3 |
+
size 5325649
|
policies/g1-flat-ppo-default/configs/env.yaml
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
physics: default
|
| 2 |
+
id: UnitreeG1FlatRL-v1
|
| 3 |
+
max_episode_steps: 1000
|
| 4 |
+
num_envs: 8
|
| 5 |
+
scene_node_capacity: 262144
|
| 6 |
+
headless: true
|
| 7 |
+
device: cuda:0
|
| 8 |
+
arena_space: 2.5
|
| 9 |
+
render_cfg:
|
| 10 |
+
renderer: fast-rt
|
| 11 |
+
physics_config:
|
| 12 |
+
cache_material: true
|
| 13 |
+
gravity:
|
| 14 |
+
- 0.0
|
| 15 |
+
- 0.0
|
| 16 |
+
- -9.81
|
| 17 |
+
physics_dt: 0.005
|
| 18 |
+
env:
|
| 19 |
+
sim_steps_per_control: 4
|
| 20 |
+
control_parts:
|
| 21 |
+
- locomotion
|
| 22 |
+
events:
|
| 23 |
+
push_robot:
|
| 24 |
+
func: push_articulation_by_setting_velocity
|
| 25 |
+
mode: interval
|
| 26 |
+
interval_step: 1
|
| 27 |
+
is_global: false
|
| 28 |
+
params:
|
| 29 |
+
entity_cfg:
|
| 30 |
+
uid: robot
|
| 31 |
+
interval_range_s:
|
| 32 |
+
- 5.0
|
| 33 |
+
- 6.0
|
| 34 |
+
velocity_range:
|
| 35 |
+
x:
|
| 36 |
+
- -0.5
|
| 37 |
+
- 0.5
|
| 38 |
+
y:
|
| 39 |
+
- -0.5
|
| 40 |
+
- 0.5
|
| 41 |
+
z:
|
| 42 |
+
- -0.4
|
| 43 |
+
- 0.4
|
| 44 |
+
roll:
|
| 45 |
+
- -0.52
|
| 46 |
+
- 0.52
|
| 47 |
+
pitch:
|
| 48 |
+
- -0.52
|
| 49 |
+
- 0.52
|
| 50 |
+
yaw:
|
| 51 |
+
- -0.78
|
| 52 |
+
- 0.78
|
| 53 |
+
observations:
|
| 54 |
+
policy:
|
| 55 |
+
func: velocity_locomotion_observation
|
| 56 |
+
mode: add
|
| 57 |
+
name: policy
|
| 58 |
+
params:
|
| 59 |
+
privileged: false
|
| 60 |
+
enable_corruption: true
|
| 61 |
+
critic:
|
| 62 |
+
func: velocity_locomotion_observation
|
| 63 |
+
mode: add
|
| 64 |
+
name: critic
|
| 65 |
+
params:
|
| 66 |
+
privileged: true
|
| 67 |
+
enable_corruption: false
|
| 68 |
+
rewards:
|
| 69 |
+
total:
|
| 70 |
+
func: velocity_locomotion_total_reward
|
| 71 |
+
mode: add
|
| 72 |
+
weight: 1.0
|
| 73 |
+
params: {}
|
| 74 |
+
actions:
|
| 75 |
+
joint_position:
|
| 76 |
+
func: DefaultJointPositionTerm
|
| 77 |
+
params: {}
|
| 78 |
+
extensions: {}
|
| 79 |
+
robot:
|
| 80 |
+
uid: robot
|
| 81 |
+
fpath: UnitreeG1Locomotion/g1.usda
|
| 82 |
+
build_pk_chain: false
|
| 83 |
+
init_pos:
|
| 84 |
+
- 0.0
|
| 85 |
+
- 0.0
|
| 86 |
+
- 0.8
|
| 87 |
+
init_qpos:
|
| 88 |
+
- -0.1
|
| 89 |
+
- -0.1
|
| 90 |
+
- 0.0
|
| 91 |
+
- 0.0
|
| 92 |
+
- 0.0
|
| 93 |
+
- 0.0
|
| 94 |
+
- 0.0
|
| 95 |
+
- 0.0
|
| 96 |
+
- 0.0
|
| 97 |
+
- 0.3
|
| 98 |
+
- 0.3
|
| 99 |
+
- 0.35
|
| 100 |
+
- 0.35
|
| 101 |
+
- -0.2
|
| 102 |
+
- -0.2
|
| 103 |
+
- 0.18
|
| 104 |
+
- -0.18
|
| 105 |
+
- 0.0
|
| 106 |
+
- 0.0
|
| 107 |
+
- 0.0
|
| 108 |
+
- 0.0
|
| 109 |
+
- 0.87
|
| 110 |
+
- 0.87
|
| 111 |
+
- 0.0
|
| 112 |
+
- 0.0
|
| 113 |
+
- 0.0
|
| 114 |
+
- 0.0
|
| 115 |
+
- 0.0
|
| 116 |
+
- 0.0
|
| 117 |
+
control_parts:
|
| 118 |
+
locomotion:
|
| 119 |
+
- left_hip_pitch_joint
|
| 120 |
+
- left_hip_roll_joint
|
| 121 |
+
- left_hip_yaw_joint
|
| 122 |
+
- left_knee_joint
|
| 123 |
+
- left_ankle_pitch_joint
|
| 124 |
+
- left_ankle_roll_joint
|
| 125 |
+
- right_hip_pitch_joint
|
| 126 |
+
- right_hip_roll_joint
|
| 127 |
+
- right_hip_yaw_joint
|
| 128 |
+
- right_knee_joint
|
| 129 |
+
- right_ankle_pitch_joint
|
| 130 |
+
- right_ankle_roll_joint
|
| 131 |
+
- waist_yaw_joint
|
| 132 |
+
- waist_roll_joint
|
| 133 |
+
- waist_pitch_joint
|
| 134 |
+
- left_shoulder_pitch_joint
|
| 135 |
+
- left_shoulder_roll_joint
|
| 136 |
+
- left_shoulder_yaw_joint
|
| 137 |
+
- left_elbow_joint
|
| 138 |
+
- left_wrist_roll_joint
|
| 139 |
+
- left_wrist_pitch_joint
|
| 140 |
+
- left_wrist_yaw_joint
|
| 141 |
+
- right_shoulder_pitch_joint
|
| 142 |
+
- right_shoulder_roll_joint
|
| 143 |
+
- right_shoulder_yaw_joint
|
| 144 |
+
- right_elbow_joint
|
| 145 |
+
- right_wrist_roll_joint
|
| 146 |
+
- right_wrist_pitch_joint
|
| 147 |
+
- right_wrist_yaw_joint
|
| 148 |
+
asset_physics_mode: overlay
|
| 149 |
+
root_props:
|
| 150 |
+
fixed_base: false
|
| 151 |
+
self_collision_enabled: true
|
| 152 |
+
min_position_iters: 8
|
| 153 |
+
min_velocity_iters: 4
|
| 154 |
+
sensor:
|
| 155 |
+
- uid: locomotion_contacts
|
| 156 |
+
sensor_type: ContactSensor
|
| 157 |
+
articulation_cfg_list:
|
| 158 |
+
- articulation_uid: robot
|
| 159 |
+
link_name_list: []
|
| 160 |
+
filter_need_both_actor: false
|
| 161 |
+
max_contacts_per_env: 192
|
| 162 |
+
light: {}
|
| 163 |
+
background: []
|
| 164 |
+
rigid_object: []
|
| 165 |
+
rigid_object_group: []
|
| 166 |
+
articulation: []
|
policies/g1-flat-ppo-default/configs/train.yaml
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
trainer:
|
| 2 |
+
exp_name: unitree_g1_flat_ppo
|
| 3 |
+
gym_config: env.yaml
|
| 4 |
+
seed: 42
|
| 5 |
+
device: cuda:0
|
| 6 |
+
headless: true
|
| 7 |
+
renderer: fast-rt
|
| 8 |
+
num_envs: 4
|
| 9 |
+
iterations: 10001
|
| 10 |
+
buffer_size: 24
|
| 11 |
+
enable_eval: false
|
| 12 |
+
save_frequency_updates: 100
|
| 13 |
+
use_wandb: false
|
| 14 |
+
wandb_project_name: embodichain-locomotion
|
| 15 |
+
policy:
|
| 16 |
+
name: actor_critic
|
| 17 |
+
actor_obs_normalization: true
|
| 18 |
+
critic_obs_normalization: true
|
| 19 |
+
obs_groups:
|
| 20 |
+
actor:
|
| 21 |
+
- policy
|
| 22 |
+
critic:
|
| 23 |
+
- critic
|
| 24 |
+
actor:
|
| 25 |
+
type: mlp
|
| 26 |
+
network_cfg:
|
| 27 |
+
hidden_sizes:
|
| 28 |
+
- 512
|
| 29 |
+
- 256
|
| 30 |
+
- 128
|
| 31 |
+
activation: elu
|
| 32 |
+
critic:
|
| 33 |
+
type: mlp
|
| 34 |
+
network_cfg:
|
| 35 |
+
hidden_sizes:
|
| 36 |
+
- 512
|
| 37 |
+
- 256
|
| 38 |
+
- 128
|
| 39 |
+
activation: elu
|
| 40 |
+
initial_action_std: 1.0
|
| 41 |
+
algorithm:
|
| 42 |
+
name: ppo
|
| 43 |
+
cfg:
|
| 44 |
+
optimizer:
|
| 45 |
+
name: adam
|
| 46 |
+
learning_rate: 0.001
|
| 47 |
+
schedule: adaptive
|
| 48 |
+
desired_kl: 0.01
|
| 49 |
+
minimum_learning_rate: 1.0e-05
|
| 50 |
+
maximum_learning_rate: 0.01
|
| 51 |
+
n_epochs: 5
|
| 52 |
+
num_mini_batches: 4
|
| 53 |
+
batch_size: 24576
|
| 54 |
+
gamma: 0.99
|
| 55 |
+
gae_lambda: 0.95
|
| 56 |
+
clip_coef: 0.2
|
| 57 |
+
ent_coef: 0.01
|
| 58 |
+
vf_coef: 1.0
|
| 59 |
+
use_clipped_value_loss: true
|
| 60 |
+
max_grad_norm: 1.0
|
policies/g1-flat-ppo-default/evaluation.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"model_id": "g1-flat-ppo-default",
|
| 4 |
+
"evidence_kind": "prior_source_policy_evaluation",
|
| 5 |
+
"created_at": "2026-09-23T02:20:38.667324+00:00",
|
| 6 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 7 |
+
"runtime": {
|
| 8 |
+
"dexsim": "development build",
|
| 9 |
+
"public_wheel_validated": false,
|
| 10 |
+
"torch": "2.10.0+cu128",
|
| 11 |
+
"newton": null
|
| 12 |
+
},
|
| 13 |
+
"conditions": {
|
| 14 |
+
"seed": 10042,
|
| 15 |
+
"renderer": "fast-rt",
|
| 16 |
+
"task_id": "UnitreeG1FlatRL-v1",
|
| 17 |
+
"physics": "default",
|
| 18 |
+
"command": [
|
| 19 |
+
0.3,
|
| 20 |
+
0.0,
|
| 21 |
+
0.0
|
| 22 |
+
],
|
| 23 |
+
"mode": "viewer"
|
| 24 |
+
},
|
| 25 |
+
"exit_code": 0,
|
| 26 |
+
"result": {
|
| 27 |
+
"control_steps": 1000,
|
| 28 |
+
"effective_duration": 20.0,
|
| 29 |
+
"episodes": [
|
| 30 |
+
{
|
| 31 |
+
"index": 0,
|
| 32 |
+
"length": 1000,
|
| 33 |
+
"reason": "time limit",
|
| 34 |
+
"reward": 62.56870224373415,
|
| 35 |
+
"success": false
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"metrics": {
|
| 39 |
+
"eval/avg_length": 1000.0,
|
| 40 |
+
"eval/avg_reward": 62.56870224373415,
|
| 41 |
+
"eval/success_rate": 0.0,
|
| 42 |
+
"linear_velocity_error": 0.03544675558805466,
|
| 43 |
+
"reward": 0.06573096662759781,
|
| 44 |
+
"root_height": 0.786207914352417,
|
| 45 |
+
"yaw_rate_error": 0.07288753241300583
|
| 46 |
+
},
|
| 47 |
+
"reason": "control steps reached",
|
| 48 |
+
"requested_duration": 20.0,
|
| 49 |
+
"simulation_steps": 4000,
|
| 50 |
+
"simulation_time": 20.0
|
| 51 |
+
},
|
| 52 |
+
"limits": [
|
| 53 |
+
"This summarizes the earlier source-policy evaluation, not a new evaluation of this staged bundle.",
|
| 54 |
+
"A cached robot asset and a development simulation runtime were used.",
|
| 55 |
+
"A clean-cache evaluation using publicly installable dependencies is pending.",
|
| 56 |
+
"Velocity tasks have no terminal success goal; time-limit episodes are not failures."
|
| 57 |
+
],
|
| 58 |
+
"checkpoint_metadata": {
|
| 59 |
+
"global_step": 196608000,
|
| 60 |
+
"num_updates": 2000,
|
| 61 |
+
"best_eval_value": null
|
| 62 |
+
}
|
| 63 |
+
}
|
policies/g1-flat-ppo-default/run-manifest.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"configs": {
|
| 4 |
+
"train": "configs/train.yaml",
|
| 5 |
+
"gym": "configs/env.yaml"
|
| 6 |
+
},
|
| 7 |
+
"checkpoints": {
|
| 8 |
+
"latest": "checkpoint.pt",
|
| 9 |
+
"best": null
|
| 10 |
+
}
|
| 11 |
+
}
|
policies/g1-flat-ppo-newton/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9d1ec15e9905939f40eaa84763874c05b070d70afaeb7c84b09bd3b712d48f05
|
| 3 |
+
size 5325731
|
policies/g1-flat-ppo-newton/configs/env.yaml
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
physics: newton
|
| 2 |
+
id: UnitreeG1FlatRL-v1
|
| 3 |
+
max_episode_steps: 1000
|
| 4 |
+
num_envs: 8
|
| 5 |
+
scene_node_capacity: 262144
|
| 6 |
+
headless: true
|
| 7 |
+
device: cuda:0
|
| 8 |
+
arena_space: 2.5
|
| 9 |
+
render_cfg:
|
| 10 |
+
renderer: fast-rt
|
| 11 |
+
physics_config:
|
| 12 |
+
sync_to_renderer: false
|
| 13 |
+
gravity:
|
| 14 |
+
- 0.0
|
| 15 |
+
- 0.0
|
| 16 |
+
- -9.81
|
| 17 |
+
num_substeps: 1
|
| 18 |
+
solver_cfg:
|
| 19 |
+
solver_type: mujoco_warp
|
| 20 |
+
njmax: 1024
|
| 21 |
+
nconmax: 256
|
| 22 |
+
iterations: 10
|
| 23 |
+
ls_iterations: 50
|
| 24 |
+
integrator: implicitfast
|
| 25 |
+
separate_worlds: true
|
| 26 |
+
tolerance: 1.0e-08
|
| 27 |
+
physics_dt: 0.005
|
| 28 |
+
env:
|
| 29 |
+
sim_steps_per_control: 4
|
| 30 |
+
control_parts:
|
| 31 |
+
- locomotion
|
| 32 |
+
events:
|
| 33 |
+
push_robot:
|
| 34 |
+
func: push_articulation_by_setting_velocity
|
| 35 |
+
mode: interval
|
| 36 |
+
interval_step: 1
|
| 37 |
+
is_global: false
|
| 38 |
+
params:
|
| 39 |
+
entity_cfg:
|
| 40 |
+
uid: robot
|
| 41 |
+
interval_range_s:
|
| 42 |
+
- 5.0
|
| 43 |
+
- 6.0
|
| 44 |
+
velocity_range:
|
| 45 |
+
x:
|
| 46 |
+
- -0.5
|
| 47 |
+
- 0.5
|
| 48 |
+
y:
|
| 49 |
+
- -0.5
|
| 50 |
+
- 0.5
|
| 51 |
+
z:
|
| 52 |
+
- -0.4
|
| 53 |
+
- 0.4
|
| 54 |
+
roll:
|
| 55 |
+
- -0.52
|
| 56 |
+
- 0.52
|
| 57 |
+
pitch:
|
| 58 |
+
- -0.52
|
| 59 |
+
- 0.52
|
| 60 |
+
yaw:
|
| 61 |
+
- -0.78
|
| 62 |
+
- 0.78
|
| 63 |
+
observations:
|
| 64 |
+
policy:
|
| 65 |
+
func: velocity_locomotion_observation
|
| 66 |
+
mode: add
|
| 67 |
+
name: policy
|
| 68 |
+
params:
|
| 69 |
+
privileged: false
|
| 70 |
+
enable_corruption: true
|
| 71 |
+
critic:
|
| 72 |
+
func: velocity_locomotion_observation
|
| 73 |
+
mode: add
|
| 74 |
+
name: critic
|
| 75 |
+
params:
|
| 76 |
+
privileged: true
|
| 77 |
+
enable_corruption: false
|
| 78 |
+
rewards:
|
| 79 |
+
total:
|
| 80 |
+
func: velocity_locomotion_total_reward
|
| 81 |
+
mode: add
|
| 82 |
+
weight: 1.0
|
| 83 |
+
params: {}
|
| 84 |
+
actions:
|
| 85 |
+
joint_position:
|
| 86 |
+
func: DefaultJointPositionTerm
|
| 87 |
+
params: {}
|
| 88 |
+
extensions: {}
|
| 89 |
+
robot:
|
| 90 |
+
uid: robot
|
| 91 |
+
fpath: UnitreeG1Locomotion/g1.usda
|
| 92 |
+
build_pk_chain: false
|
| 93 |
+
init_pos:
|
| 94 |
+
- 0.0
|
| 95 |
+
- 0.0
|
| 96 |
+
- 0.8
|
| 97 |
+
init_qpos:
|
| 98 |
+
- -0.1
|
| 99 |
+
- -0.1
|
| 100 |
+
- 0.0
|
| 101 |
+
- 0.0
|
| 102 |
+
- 0.0
|
| 103 |
+
- 0.0
|
| 104 |
+
- 0.0
|
| 105 |
+
- 0.0
|
| 106 |
+
- 0.0
|
| 107 |
+
- 0.3
|
| 108 |
+
- 0.3
|
| 109 |
+
- 0.35
|
| 110 |
+
- 0.35
|
| 111 |
+
- -0.2
|
| 112 |
+
- -0.2
|
| 113 |
+
- 0.18
|
| 114 |
+
- -0.18
|
| 115 |
+
- 0.0
|
| 116 |
+
- 0.0
|
| 117 |
+
- 0.0
|
| 118 |
+
- 0.0
|
| 119 |
+
- 0.87
|
| 120 |
+
- 0.87
|
| 121 |
+
- 0.0
|
| 122 |
+
- 0.0
|
| 123 |
+
- 0.0
|
| 124 |
+
- 0.0
|
| 125 |
+
- 0.0
|
| 126 |
+
- 0.0
|
| 127 |
+
control_parts:
|
| 128 |
+
locomotion:
|
| 129 |
+
- left_hip_pitch_joint
|
| 130 |
+
- left_hip_roll_joint
|
| 131 |
+
- left_hip_yaw_joint
|
| 132 |
+
- left_knee_joint
|
| 133 |
+
- left_ankle_pitch_joint
|
| 134 |
+
- left_ankle_roll_joint
|
| 135 |
+
- right_hip_pitch_joint
|
| 136 |
+
- right_hip_roll_joint
|
| 137 |
+
- right_hip_yaw_joint
|
| 138 |
+
- right_knee_joint
|
| 139 |
+
- right_ankle_pitch_joint
|
| 140 |
+
- right_ankle_roll_joint
|
| 141 |
+
- waist_yaw_joint
|
| 142 |
+
- waist_roll_joint
|
| 143 |
+
- waist_pitch_joint
|
| 144 |
+
- left_shoulder_pitch_joint
|
| 145 |
+
- left_shoulder_roll_joint
|
| 146 |
+
- left_shoulder_yaw_joint
|
| 147 |
+
- left_elbow_joint
|
| 148 |
+
- left_wrist_roll_joint
|
| 149 |
+
- left_wrist_pitch_joint
|
| 150 |
+
- left_wrist_yaw_joint
|
| 151 |
+
- right_shoulder_pitch_joint
|
| 152 |
+
- right_shoulder_roll_joint
|
| 153 |
+
- right_shoulder_yaw_joint
|
| 154 |
+
- right_elbow_joint
|
| 155 |
+
- right_wrist_roll_joint
|
| 156 |
+
- right_wrist_pitch_joint
|
| 157 |
+
- right_wrist_yaw_joint
|
| 158 |
+
asset_physics_mode: overlay
|
| 159 |
+
root_props:
|
| 160 |
+
fixed_base: false
|
| 161 |
+
self_collision_enabled: true
|
| 162 |
+
min_position_iters: 8
|
| 163 |
+
min_velocity_iters: 4
|
| 164 |
+
sensor:
|
| 165 |
+
- uid: locomotion_contacts
|
| 166 |
+
sensor_type: ContactSensor
|
| 167 |
+
articulation_cfg_list:
|
| 168 |
+
- articulation_uid: robot
|
| 169 |
+
link_name_list: []
|
| 170 |
+
filter_need_both_actor: false
|
| 171 |
+
max_contacts_per_env: 192
|
| 172 |
+
light: {}
|
| 173 |
+
background: []
|
| 174 |
+
rigid_object: []
|
| 175 |
+
rigid_object_group: []
|
| 176 |
+
articulation: []
|
policies/g1-flat-ppo-newton/configs/train.yaml
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
trainer:
|
| 2 |
+
exp_name: unitree_g1_flat_ppo_newton
|
| 3 |
+
gym_config: env.yaml
|
| 4 |
+
seed: 42
|
| 5 |
+
device: cuda:0
|
| 6 |
+
headless: true
|
| 7 |
+
renderer: fast-rt
|
| 8 |
+
num_envs: 4
|
| 9 |
+
iterations: 10001
|
| 10 |
+
buffer_size: 24
|
| 11 |
+
enable_eval: false
|
| 12 |
+
save_frequency_updates: 100
|
| 13 |
+
use_wandb: false
|
| 14 |
+
wandb_project_name: embodichain-locomotion
|
| 15 |
+
policy:
|
| 16 |
+
name: actor_critic
|
| 17 |
+
actor_obs_normalization: true
|
| 18 |
+
critic_obs_normalization: true
|
| 19 |
+
obs_groups:
|
| 20 |
+
actor:
|
| 21 |
+
- policy
|
| 22 |
+
critic:
|
| 23 |
+
- critic
|
| 24 |
+
actor:
|
| 25 |
+
type: mlp
|
| 26 |
+
network_cfg:
|
| 27 |
+
hidden_sizes:
|
| 28 |
+
- 512
|
| 29 |
+
- 256
|
| 30 |
+
- 128
|
| 31 |
+
activation: elu
|
| 32 |
+
critic:
|
| 33 |
+
type: mlp
|
| 34 |
+
network_cfg:
|
| 35 |
+
hidden_sizes:
|
| 36 |
+
- 512
|
| 37 |
+
- 256
|
| 38 |
+
- 128
|
| 39 |
+
activation: elu
|
| 40 |
+
initial_action_std: 1.0
|
| 41 |
+
algorithm:
|
| 42 |
+
name: ppo
|
| 43 |
+
cfg:
|
| 44 |
+
optimizer:
|
| 45 |
+
name: adam
|
| 46 |
+
learning_rate: 0.001
|
| 47 |
+
schedule: adaptive
|
| 48 |
+
desired_kl: 0.01
|
| 49 |
+
minimum_learning_rate: 1.0e-05
|
| 50 |
+
maximum_learning_rate: 0.01
|
| 51 |
+
n_epochs: 5
|
| 52 |
+
num_mini_batches: 4
|
| 53 |
+
batch_size: 24576
|
| 54 |
+
gamma: 0.99
|
| 55 |
+
gae_lambda: 0.95
|
| 56 |
+
clip_coef: 0.2
|
| 57 |
+
ent_coef: 0.01
|
| 58 |
+
vf_coef: 1.0
|
| 59 |
+
use_clipped_value_loss: true
|
| 60 |
+
max_grad_norm: 1.0
|
policies/g1-flat-ppo-newton/evaluation.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"model_id": "g1-flat-ppo-newton",
|
| 4 |
+
"evidence_kind": "prior_source_policy_evaluation",
|
| 5 |
+
"created_at": "2026-09-23T02:16:07.647394+00:00",
|
| 6 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 7 |
+
"runtime": {
|
| 8 |
+
"dexsim": "development build",
|
| 9 |
+
"public_wheel_validated": false,
|
| 10 |
+
"torch": "2.10.0+cu128",
|
| 11 |
+
"newton": "1.6.0"
|
| 12 |
+
},
|
| 13 |
+
"conditions": {
|
| 14 |
+
"seed": 10042,
|
| 15 |
+
"renderer": "fast-rt",
|
| 16 |
+
"task_id": "UnitreeG1FlatRL-v1",
|
| 17 |
+
"physics": "newton",
|
| 18 |
+
"command": [
|
| 19 |
+
0.3,
|
| 20 |
+
0.0,
|
| 21 |
+
0.0
|
| 22 |
+
],
|
| 23 |
+
"mode": "viewer"
|
| 24 |
+
},
|
| 25 |
+
"exit_code": 0,
|
| 26 |
+
"result": {
|
| 27 |
+
"control_steps": 1000,
|
| 28 |
+
"effective_duration": 20.0,
|
| 29 |
+
"episodes": [
|
| 30 |
+
{
|
| 31 |
+
"index": 0,
|
| 32 |
+
"length": 1000,
|
| 33 |
+
"reason": "time limit",
|
| 34 |
+
"reward": 61.99140815157443,
|
| 35 |
+
"success": false
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"metrics": {
|
| 39 |
+
"eval/avg_length": 1000.0,
|
| 40 |
+
"eval/avg_reward": 61.99140815157443,
|
| 41 |
+
"eval/success_rate": 0.0,
|
| 42 |
+
"linear_velocity_error": 0.06406232714653015,
|
| 43 |
+
"reward": 0.06581515818834305,
|
| 44 |
+
"root_height": 0.7908007502555847,
|
| 45 |
+
"yaw_rate_error": 0.03285869583487511
|
| 46 |
+
},
|
| 47 |
+
"reason": "control steps reached",
|
| 48 |
+
"requested_duration": 20.0,
|
| 49 |
+
"simulation_steps": 4000,
|
| 50 |
+
"simulation_time": 20.0
|
| 51 |
+
},
|
| 52 |
+
"limits": [
|
| 53 |
+
"This summarizes the earlier source-policy evaluation, not a new evaluation of this staged bundle.",
|
| 54 |
+
"A cached robot asset and a development simulation runtime were used.",
|
| 55 |
+
"A clean-cache evaluation using publicly installable dependencies is pending.",
|
| 56 |
+
"Velocity tasks have no terminal success goal; time-limit episodes are not failures."
|
| 57 |
+
],
|
| 58 |
+
"checkpoint_metadata": {
|
| 59 |
+
"global_step": 206438400,
|
| 60 |
+
"num_updates": 2100,
|
| 61 |
+
"best_eval_value": null
|
| 62 |
+
}
|
| 63 |
+
}
|
policies/g1-flat-ppo-newton/run-manifest.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"configs": {
|
| 4 |
+
"train": "configs/train.yaml",
|
| 5 |
+
"gym": "configs/env.yaml"
|
| 6 |
+
},
|
| 7 |
+
"checkpoints": {
|
| 8 |
+
"latest": "checkpoint.pt",
|
| 9 |
+
"best": null
|
| 10 |
+
}
|
| 11 |
+
}
|
policies/go1-flat-ppo-default/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d934d0e2de75eb6dba23e86a5cb0dcc58f8cfde69fc02af732638d5bfd3cd95c
|
| 3 |
+
size 4739089
|
policies/go1-flat-ppo-default/configs/env.yaml
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
physics: default
|
| 2 |
+
id: UnitreeGo1FlatRL-v1
|
| 3 |
+
max_episode_steps: 1000
|
| 4 |
+
num_envs: 8
|
| 5 |
+
scene_node_capacity: 262144
|
| 6 |
+
headless: true
|
| 7 |
+
device: cuda:0
|
| 8 |
+
arena_space: 2.0
|
| 9 |
+
render_cfg:
|
| 10 |
+
renderer: fast-rt
|
| 11 |
+
physics_config:
|
| 12 |
+
cache_material: true
|
| 13 |
+
gravity:
|
| 14 |
+
- 0.0
|
| 15 |
+
- 0.0
|
| 16 |
+
- -9.81
|
| 17 |
+
physics_dt: 0.005
|
| 18 |
+
env:
|
| 19 |
+
sim_steps_per_control: 4
|
| 20 |
+
control_parts:
|
| 21 |
+
- locomotion
|
| 22 |
+
events:
|
| 23 |
+
push_robot:
|
| 24 |
+
func: push_articulation_by_setting_velocity
|
| 25 |
+
mode: interval
|
| 26 |
+
interval_step: 1
|
| 27 |
+
is_global: false
|
| 28 |
+
params:
|
| 29 |
+
entity_cfg:
|
| 30 |
+
uid: robot
|
| 31 |
+
interval_range_s:
|
| 32 |
+
- 1.0
|
| 33 |
+
- 3.0
|
| 34 |
+
velocity_range:
|
| 35 |
+
x:
|
| 36 |
+
- -0.5
|
| 37 |
+
- 0.5
|
| 38 |
+
y:
|
| 39 |
+
- -0.5
|
| 40 |
+
- 0.5
|
| 41 |
+
z:
|
| 42 |
+
- -0.4
|
| 43 |
+
- 0.4
|
| 44 |
+
roll:
|
| 45 |
+
- -0.52
|
| 46 |
+
- 0.52
|
| 47 |
+
pitch:
|
| 48 |
+
- -0.52
|
| 49 |
+
- 0.52
|
| 50 |
+
yaw:
|
| 51 |
+
- -0.78
|
| 52 |
+
- 0.78
|
| 53 |
+
observations:
|
| 54 |
+
policy:
|
| 55 |
+
func: velocity_locomotion_observation
|
| 56 |
+
mode: add
|
| 57 |
+
name: policy
|
| 58 |
+
params:
|
| 59 |
+
privileged: false
|
| 60 |
+
enable_corruption: true
|
| 61 |
+
critic:
|
| 62 |
+
func: velocity_locomotion_observation
|
| 63 |
+
mode: add
|
| 64 |
+
name: critic
|
| 65 |
+
params:
|
| 66 |
+
privileged: true
|
| 67 |
+
enable_corruption: false
|
| 68 |
+
rewards:
|
| 69 |
+
total:
|
| 70 |
+
func: velocity_locomotion_total_reward
|
| 71 |
+
mode: add
|
| 72 |
+
weight: 1.0
|
| 73 |
+
params: {}
|
| 74 |
+
actions:
|
| 75 |
+
joint_position:
|
| 76 |
+
func: DefaultJointPositionTerm
|
| 77 |
+
params: {}
|
| 78 |
+
extensions: {}
|
| 79 |
+
robot:
|
| 80 |
+
uid: robot
|
| 81 |
+
fpath: UnitreeGo1Locomotion/go1.usda
|
| 82 |
+
build_pk_chain: false
|
| 83 |
+
init_pos:
|
| 84 |
+
- 0.0
|
| 85 |
+
- 0.0
|
| 86 |
+
- 0.278
|
| 87 |
+
init_qpos:
|
| 88 |
+
- -0.1
|
| 89 |
+
- 0.1
|
| 90 |
+
- -0.1
|
| 91 |
+
- 0.1
|
| 92 |
+
- 0.9
|
| 93 |
+
- 0.9
|
| 94 |
+
- 0.9
|
| 95 |
+
- 0.9
|
| 96 |
+
- -1.8
|
| 97 |
+
- -1.8
|
| 98 |
+
- -1.8
|
| 99 |
+
- -1.8
|
| 100 |
+
control_parts:
|
| 101 |
+
locomotion:
|
| 102 |
+
- FR_hip_joint
|
| 103 |
+
- FR_thigh_joint
|
| 104 |
+
- FR_calf_joint
|
| 105 |
+
- FL_hip_joint
|
| 106 |
+
- FL_thigh_joint
|
| 107 |
+
- FL_calf_joint
|
| 108 |
+
- RR_hip_joint
|
| 109 |
+
- RR_thigh_joint
|
| 110 |
+
- RR_calf_joint
|
| 111 |
+
- RL_hip_joint
|
| 112 |
+
- RL_thigh_joint
|
| 113 |
+
- RL_calf_joint
|
| 114 |
+
asset_physics_mode: overlay
|
| 115 |
+
root_props:
|
| 116 |
+
fixed_base: false
|
| 117 |
+
self_collision_enabled: false
|
| 118 |
+
min_position_iters: 4
|
| 119 |
+
min_velocity_iters: 0
|
| 120 |
+
sensor:
|
| 121 |
+
- uid: locomotion_contacts
|
| 122 |
+
sensor_type: ContactSensor
|
| 123 |
+
articulation_cfg_list:
|
| 124 |
+
- articulation_uid: robot
|
| 125 |
+
link_name_list: []
|
| 126 |
+
filter_need_both_actor: false
|
| 127 |
+
max_contacts_per_env: 96
|
| 128 |
+
light: {}
|
| 129 |
+
background: []
|
| 130 |
+
rigid_object: []
|
| 131 |
+
rigid_object_group: []
|
| 132 |
+
articulation: []
|
policies/go1-flat-ppo-default/configs/train.yaml
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
trainer:
|
| 2 |
+
exp_name: unitree_go1_flat_ppo
|
| 3 |
+
gym_config: env.yaml
|
| 4 |
+
seed: 42
|
| 5 |
+
device: cuda:0
|
| 6 |
+
headless: true
|
| 7 |
+
renderer: fast-rt
|
| 8 |
+
num_envs: 4
|
| 9 |
+
iterations: 10000
|
| 10 |
+
buffer_size: 24
|
| 11 |
+
enable_eval: false
|
| 12 |
+
save_frequency_updates: 50
|
| 13 |
+
use_wandb: false
|
| 14 |
+
wandb_project_name: embodichain-locomotion
|
| 15 |
+
policy:
|
| 16 |
+
name: actor_critic
|
| 17 |
+
actor_obs_normalization: true
|
| 18 |
+
critic_obs_normalization: true
|
| 19 |
+
obs_groups:
|
| 20 |
+
actor:
|
| 21 |
+
- policy
|
| 22 |
+
critic:
|
| 23 |
+
- critic
|
| 24 |
+
actor:
|
| 25 |
+
type: mlp
|
| 26 |
+
network_cfg:
|
| 27 |
+
hidden_sizes:
|
| 28 |
+
- 512
|
| 29 |
+
- 256
|
| 30 |
+
- 128
|
| 31 |
+
activation: elu
|
| 32 |
+
critic:
|
| 33 |
+
type: mlp
|
| 34 |
+
network_cfg:
|
| 35 |
+
hidden_sizes:
|
| 36 |
+
- 512
|
| 37 |
+
- 256
|
| 38 |
+
- 128
|
| 39 |
+
activation: elu
|
| 40 |
+
initial_action_std: 1.0
|
| 41 |
+
algorithm:
|
| 42 |
+
name: ppo
|
| 43 |
+
cfg:
|
| 44 |
+
optimizer:
|
| 45 |
+
name: adam
|
| 46 |
+
learning_rate: 0.001
|
| 47 |
+
schedule: adaptive
|
| 48 |
+
desired_kl: 0.01
|
| 49 |
+
minimum_learning_rate: 1.0e-05
|
| 50 |
+
maximum_learning_rate: 0.01
|
| 51 |
+
n_epochs: 5
|
| 52 |
+
num_mini_batches: 4
|
| 53 |
+
batch_size: 24576
|
| 54 |
+
gamma: 0.99
|
| 55 |
+
gae_lambda: 0.95
|
| 56 |
+
clip_coef: 0.2
|
| 57 |
+
ent_coef: 0.01
|
| 58 |
+
vf_coef: 1.0
|
| 59 |
+
use_clipped_value_loss: true
|
| 60 |
+
max_grad_norm: 1.0
|
policies/go1-flat-ppo-default/evaluation.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"model_id": "go1-flat-ppo-default",
|
| 4 |
+
"evidence_kind": "prior_source_policy_evaluation",
|
| 5 |
+
"created_at": "2026-09-23T02:21:27.110398+00:00",
|
| 6 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 7 |
+
"runtime": {
|
| 8 |
+
"dexsim": "development build",
|
| 9 |
+
"public_wheel_validated": false,
|
| 10 |
+
"torch": "2.10.0+cu128",
|
| 11 |
+
"newton": null
|
| 12 |
+
},
|
| 13 |
+
"conditions": {
|
| 14 |
+
"seed": 10042,
|
| 15 |
+
"renderer": "fast-rt",
|
| 16 |
+
"task_id": "UnitreeGo1FlatRL-v1",
|
| 17 |
+
"physics": "default",
|
| 18 |
+
"command": [
|
| 19 |
+
0.3,
|
| 20 |
+
0.0,
|
| 21 |
+
0.0
|
| 22 |
+
],
|
| 23 |
+
"mode": "viewer"
|
| 24 |
+
},
|
| 25 |
+
"exit_code": 0,
|
| 26 |
+
"result": {
|
| 27 |
+
"control_steps": 1000,
|
| 28 |
+
"effective_duration": 20.0,
|
| 29 |
+
"episodes": [
|
| 30 |
+
{
|
| 31 |
+
"index": 0,
|
| 32 |
+
"length": 1000,
|
| 33 |
+
"reason": "time limit",
|
| 34 |
+
"reward": 110.90168414264917,
|
| 35 |
+
"success": false
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"metrics": {
|
| 39 |
+
"eval/avg_length": 1000.0,
|
| 40 |
+
"eval/avg_reward": 110.90168414264917,
|
| 41 |
+
"eval/success_rate": 0.0,
|
| 42 |
+
"linear_velocity_error": 0.14509788155555725,
|
| 43 |
+
"maximum_illegal_contact_force": 0.0,
|
| 44 |
+
"reward": 0.09589947015047073,
|
| 45 |
+
"root_height": 0.29751354455947876,
|
| 46 |
+
"yaw_rate_error": 0.20959775149822235
|
| 47 |
+
},
|
| 48 |
+
"reason": "control steps reached",
|
| 49 |
+
"requested_duration": 20.0,
|
| 50 |
+
"simulation_steps": 4000,
|
| 51 |
+
"simulation_time": 20.0
|
| 52 |
+
},
|
| 53 |
+
"limits": [
|
| 54 |
+
"This summarizes the earlier source-policy evaluation, not a new evaluation of this staged bundle.",
|
| 55 |
+
"A cached robot asset and a development simulation runtime were used.",
|
| 56 |
+
"A clean-cache evaluation using publicly installable dependencies is pending.",
|
| 57 |
+
"Velocity tasks have no terminal success goal; time-limit episodes are not failures."
|
| 58 |
+
],
|
| 59 |
+
"checkpoint_metadata": {
|
| 60 |
+
"global_step": 68812800,
|
| 61 |
+
"num_updates": 700,
|
| 62 |
+
"best_eval_value": null
|
| 63 |
+
}
|
| 64 |
+
}
|
policies/go1-flat-ppo-default/run-manifest.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"configs": {
|
| 4 |
+
"train": "configs/train.yaml",
|
| 5 |
+
"gym": "configs/env.yaml"
|
| 6 |
+
},
|
| 7 |
+
"checkpoints": {
|
| 8 |
+
"latest": "checkpoint.pt",
|
| 9 |
+
"best": null
|
| 10 |
+
}
|
| 11 |
+
}
|
policies/go1-flat-ppo-newton/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:fb2d62d05b56892cbfa8d2e69f4e45a9f2eb5ce23b3f50495f49cdcebc9e618c
|
| 3 |
+
size 4739171
|
policies/go1-flat-ppo-newton/configs/env.yaml
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
physics: newton
|
| 2 |
+
id: UnitreeGo1FlatRL-v1
|
| 3 |
+
max_episode_steps: 1000
|
| 4 |
+
num_envs: 8
|
| 5 |
+
scene_node_capacity: 262144
|
| 6 |
+
headless: true
|
| 7 |
+
device: cuda:0
|
| 8 |
+
arena_space: 2.0
|
| 9 |
+
render_cfg:
|
| 10 |
+
renderer: fast-rt
|
| 11 |
+
physics_config:
|
| 12 |
+
sync_to_renderer: false
|
| 13 |
+
gravity:
|
| 14 |
+
- 0.0
|
| 15 |
+
- 0.0
|
| 16 |
+
- -9.81
|
| 17 |
+
num_substeps: 1
|
| 18 |
+
solver_cfg:
|
| 19 |
+
solver_type: mujoco_warp
|
| 20 |
+
njmax: 1024
|
| 21 |
+
nconmax: 256
|
| 22 |
+
iterations: 10
|
| 23 |
+
ls_iterations: 50
|
| 24 |
+
integrator: implicitfast
|
| 25 |
+
separate_worlds: true
|
| 26 |
+
tolerance: 1.0e-08
|
| 27 |
+
physics_dt: 0.005
|
| 28 |
+
env:
|
| 29 |
+
sim_steps_per_control: 4
|
| 30 |
+
control_parts:
|
| 31 |
+
- locomotion
|
| 32 |
+
events:
|
| 33 |
+
push_robot:
|
| 34 |
+
func: push_articulation_by_setting_velocity
|
| 35 |
+
mode: interval
|
| 36 |
+
interval_step: 1
|
| 37 |
+
is_global: false
|
| 38 |
+
params:
|
| 39 |
+
entity_cfg:
|
| 40 |
+
uid: robot
|
| 41 |
+
interval_range_s:
|
| 42 |
+
- 1.0
|
| 43 |
+
- 3.0
|
| 44 |
+
velocity_range:
|
| 45 |
+
x:
|
| 46 |
+
- -0.5
|
| 47 |
+
- 0.5
|
| 48 |
+
y:
|
| 49 |
+
- -0.5
|
| 50 |
+
- 0.5
|
| 51 |
+
z:
|
| 52 |
+
- -0.4
|
| 53 |
+
- 0.4
|
| 54 |
+
roll:
|
| 55 |
+
- -0.52
|
| 56 |
+
- 0.52
|
| 57 |
+
pitch:
|
| 58 |
+
- -0.52
|
| 59 |
+
- 0.52
|
| 60 |
+
yaw:
|
| 61 |
+
- -0.78
|
| 62 |
+
- 0.78
|
| 63 |
+
observations:
|
| 64 |
+
policy:
|
| 65 |
+
func: velocity_locomotion_observation
|
| 66 |
+
mode: add
|
| 67 |
+
name: policy
|
| 68 |
+
params:
|
| 69 |
+
privileged: false
|
| 70 |
+
enable_corruption: true
|
| 71 |
+
critic:
|
| 72 |
+
func: velocity_locomotion_observation
|
| 73 |
+
mode: add
|
| 74 |
+
name: critic
|
| 75 |
+
params:
|
| 76 |
+
privileged: true
|
| 77 |
+
enable_corruption: false
|
| 78 |
+
rewards:
|
| 79 |
+
total:
|
| 80 |
+
func: velocity_locomotion_total_reward
|
| 81 |
+
mode: add
|
| 82 |
+
weight: 1.0
|
| 83 |
+
params: {}
|
| 84 |
+
actions:
|
| 85 |
+
joint_position:
|
| 86 |
+
func: DefaultJointPositionTerm
|
| 87 |
+
params: {}
|
| 88 |
+
extensions: {}
|
| 89 |
+
robot:
|
| 90 |
+
uid: robot
|
| 91 |
+
fpath: UnitreeGo1Locomotion/go1.usda
|
| 92 |
+
build_pk_chain: false
|
| 93 |
+
init_pos:
|
| 94 |
+
- 0.0
|
| 95 |
+
- 0.0
|
| 96 |
+
- 0.278
|
| 97 |
+
init_qpos:
|
| 98 |
+
- -0.1
|
| 99 |
+
- 0.1
|
| 100 |
+
- -0.1
|
| 101 |
+
- 0.1
|
| 102 |
+
- 0.9
|
| 103 |
+
- 0.9
|
| 104 |
+
- 0.9
|
| 105 |
+
- 0.9
|
| 106 |
+
- -1.8
|
| 107 |
+
- -1.8
|
| 108 |
+
- -1.8
|
| 109 |
+
- -1.8
|
| 110 |
+
control_parts:
|
| 111 |
+
locomotion:
|
| 112 |
+
- FR_hip_joint
|
| 113 |
+
- FR_thigh_joint
|
| 114 |
+
- FR_calf_joint
|
| 115 |
+
- FL_hip_joint
|
| 116 |
+
- FL_thigh_joint
|
| 117 |
+
- FL_calf_joint
|
| 118 |
+
- RR_hip_joint
|
| 119 |
+
- RR_thigh_joint
|
| 120 |
+
- RR_calf_joint
|
| 121 |
+
- RL_hip_joint
|
| 122 |
+
- RL_thigh_joint
|
| 123 |
+
- RL_calf_joint
|
| 124 |
+
asset_physics_mode: overlay
|
| 125 |
+
root_props:
|
| 126 |
+
fixed_base: false
|
| 127 |
+
self_collision_enabled: false
|
| 128 |
+
min_position_iters: 4
|
| 129 |
+
min_velocity_iters: 0
|
| 130 |
+
sensor:
|
| 131 |
+
- uid: locomotion_contacts
|
| 132 |
+
sensor_type: ContactSensor
|
| 133 |
+
articulation_cfg_list:
|
| 134 |
+
- articulation_uid: robot
|
| 135 |
+
link_name_list: []
|
| 136 |
+
filter_need_both_actor: false
|
| 137 |
+
max_contacts_per_env: 96
|
| 138 |
+
light: {}
|
| 139 |
+
background: []
|
| 140 |
+
rigid_object: []
|
| 141 |
+
rigid_object_group: []
|
| 142 |
+
articulation: []
|
policies/go1-flat-ppo-newton/configs/train.yaml
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
trainer:
|
| 2 |
+
exp_name: unitree_go1_flat_ppo_newton
|
| 3 |
+
gym_config: env.yaml
|
| 4 |
+
seed: 42
|
| 5 |
+
device: cuda:0
|
| 6 |
+
headless: true
|
| 7 |
+
renderer: fast-rt
|
| 8 |
+
num_envs: 4
|
| 9 |
+
iterations: 10000
|
| 10 |
+
buffer_size: 24
|
| 11 |
+
enable_eval: false
|
| 12 |
+
save_frequency_updates: 50
|
| 13 |
+
use_wandb: false
|
| 14 |
+
wandb_project_name: embodichain-locomotion
|
| 15 |
+
policy:
|
| 16 |
+
name: actor_critic
|
| 17 |
+
actor_obs_normalization: true
|
| 18 |
+
critic_obs_normalization: true
|
| 19 |
+
obs_groups:
|
| 20 |
+
actor:
|
| 21 |
+
- policy
|
| 22 |
+
critic:
|
| 23 |
+
- critic
|
| 24 |
+
actor:
|
| 25 |
+
type: mlp
|
| 26 |
+
network_cfg:
|
| 27 |
+
hidden_sizes:
|
| 28 |
+
- 512
|
| 29 |
+
- 256
|
| 30 |
+
- 128
|
| 31 |
+
activation: elu
|
| 32 |
+
critic:
|
| 33 |
+
type: mlp
|
| 34 |
+
network_cfg:
|
| 35 |
+
hidden_sizes:
|
| 36 |
+
- 512
|
| 37 |
+
- 256
|
| 38 |
+
- 128
|
| 39 |
+
activation: elu
|
| 40 |
+
initial_action_std: 1.0
|
| 41 |
+
algorithm:
|
| 42 |
+
name: ppo
|
| 43 |
+
cfg:
|
| 44 |
+
optimizer:
|
| 45 |
+
name: adam
|
| 46 |
+
learning_rate: 0.001
|
| 47 |
+
schedule: adaptive
|
| 48 |
+
desired_kl: 0.01
|
| 49 |
+
minimum_learning_rate: 1.0e-05
|
| 50 |
+
maximum_learning_rate: 0.01
|
| 51 |
+
n_epochs: 5
|
| 52 |
+
num_mini_batches: 4
|
| 53 |
+
batch_size: 24576
|
| 54 |
+
gamma: 0.99
|
| 55 |
+
gae_lambda: 0.95
|
| 56 |
+
clip_coef: 0.2
|
| 57 |
+
ent_coef: 0.01
|
| 58 |
+
vf_coef: 1.0
|
| 59 |
+
use_clipped_value_loss: true
|
| 60 |
+
max_grad_norm: 1.0
|
policies/go1-flat-ppo-newton/evaluation.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"model_id": "go1-flat-ppo-newton",
|
| 4 |
+
"evidence_kind": "prior_source_policy_evaluation",
|
| 5 |
+
"created_at": "2026-09-23T02:17:09.194399+00:00",
|
| 6 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 7 |
+
"runtime": {
|
| 8 |
+
"dexsim": "development build",
|
| 9 |
+
"public_wheel_validated": false,
|
| 10 |
+
"torch": "2.10.0+cu128",
|
| 11 |
+
"newton": "1.6.0"
|
| 12 |
+
},
|
| 13 |
+
"conditions": {
|
| 14 |
+
"seed": 10042,
|
| 15 |
+
"renderer": "fast-rt",
|
| 16 |
+
"task_id": "UnitreeGo1FlatRL-v1",
|
| 17 |
+
"physics": "newton",
|
| 18 |
+
"command": [
|
| 19 |
+
0.3,
|
| 20 |
+
0.0,
|
| 21 |
+
0.0
|
| 22 |
+
],
|
| 23 |
+
"mode": "viewer"
|
| 24 |
+
},
|
| 25 |
+
"exit_code": 0,
|
| 26 |
+
"result": {
|
| 27 |
+
"control_steps": 1000,
|
| 28 |
+
"effective_duration": 20.0,
|
| 29 |
+
"episodes": [
|
| 30 |
+
{
|
| 31 |
+
"index": 0,
|
| 32 |
+
"length": 1000,
|
| 33 |
+
"reason": "time limit",
|
| 34 |
+
"reward": 109.75560356676579,
|
| 35 |
+
"success": false
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"metrics": {
|
| 39 |
+
"eval/avg_length": 1000.0,
|
| 40 |
+
"eval/avg_reward": 109.75560356676579,
|
| 41 |
+
"eval/success_rate": 0.0,
|
| 42 |
+
"linear_velocity_error": 0.1238803118467331,
|
| 43 |
+
"maximum_illegal_contact_force": 0.0,
|
| 44 |
+
"reward": 0.11315512657165527,
|
| 45 |
+
"root_height": 0.295845627784729,
|
| 46 |
+
"yaw_rate_error": 0.029608920216560364
|
| 47 |
+
},
|
| 48 |
+
"reason": "control steps reached",
|
| 49 |
+
"requested_duration": 20.0,
|
| 50 |
+
"simulation_steps": 4000,
|
| 51 |
+
"simulation_time": 20.0
|
| 52 |
+
},
|
| 53 |
+
"limits": [
|
| 54 |
+
"This summarizes the earlier source-policy evaluation, not a new evaluation of this staged bundle.",
|
| 55 |
+
"A cached robot asset and a development simulation runtime were used.",
|
| 56 |
+
"A clean-cache evaluation using publicly installable dependencies is pending.",
|
| 57 |
+
"Velocity tasks have no terminal success goal; time-limit episodes are not failures."
|
| 58 |
+
],
|
| 59 |
+
"checkpoint_metadata": {
|
| 60 |
+
"global_step": 39321600,
|
| 61 |
+
"num_updates": 400,
|
| 62 |
+
"best_eval_value": null
|
| 63 |
+
}
|
| 64 |
+
}
|
policies/go1-flat-ppo-newton/run-manifest.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"configs": {
|
| 4 |
+
"train": "configs/train.yaml",
|
| 5 |
+
"gym": "configs/env.yaml"
|
| 6 |
+
},
|
| 7 |
+
"checkpoints": {
|
| 8 |
+
"latest": "checkpoint.pt",
|
| 9 |
+
"best": null
|
| 10 |
+
}
|
| 11 |
+
}
|
policies/go2-flat-ppo-default/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ce2a67c411ff63c0464e5ea98e1f5281f661d5e3817d0bcb6dd24b225749d6b1
|
| 3 |
+
size 4745233
|
policies/go2-flat-ppo-default/configs/env.yaml
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
physics: default
|
| 2 |
+
id: UnitreeGo2FlatRL-v1
|
| 3 |
+
max_episode_steps: 1000
|
| 4 |
+
num_envs: 8
|
| 5 |
+
scene_node_capacity: 262144
|
| 6 |
+
headless: true
|
| 7 |
+
device: cuda:0
|
| 8 |
+
arena_space: 2.0
|
| 9 |
+
render_cfg:
|
| 10 |
+
renderer: fast-rt
|
| 11 |
+
physics_config:
|
| 12 |
+
cache_material: true
|
| 13 |
+
gravity:
|
| 14 |
+
- 0.0
|
| 15 |
+
- 0.0
|
| 16 |
+
- -9.81
|
| 17 |
+
physics_dt: 0.005
|
| 18 |
+
env:
|
| 19 |
+
sim_steps_per_control: 4
|
| 20 |
+
control_parts:
|
| 21 |
+
- locomotion
|
| 22 |
+
events:
|
| 23 |
+
push_robot:
|
| 24 |
+
func: push_articulation_by_setting_velocity
|
| 25 |
+
mode: interval
|
| 26 |
+
interval_step: 1
|
| 27 |
+
is_global: false
|
| 28 |
+
params:
|
| 29 |
+
entity_cfg:
|
| 30 |
+
uid: robot
|
| 31 |
+
interval_range_s:
|
| 32 |
+
- 5.0
|
| 33 |
+
- 6.0
|
| 34 |
+
velocity_range:
|
| 35 |
+
x:
|
| 36 |
+
- -0.5
|
| 37 |
+
- 0.5
|
| 38 |
+
y:
|
| 39 |
+
- -0.5
|
| 40 |
+
- 0.5
|
| 41 |
+
z:
|
| 42 |
+
- -0.4
|
| 43 |
+
- 0.4
|
| 44 |
+
roll:
|
| 45 |
+
- -0.52
|
| 46 |
+
- 0.52
|
| 47 |
+
pitch:
|
| 48 |
+
- -0.52
|
| 49 |
+
- 0.52
|
| 50 |
+
yaw:
|
| 51 |
+
- -0.78
|
| 52 |
+
- 0.78
|
| 53 |
+
observations:
|
| 54 |
+
policy:
|
| 55 |
+
func: velocity_locomotion_observation
|
| 56 |
+
mode: add
|
| 57 |
+
name: policy
|
| 58 |
+
params:
|
| 59 |
+
privileged: false
|
| 60 |
+
enable_corruption: true
|
| 61 |
+
critic:
|
| 62 |
+
func: velocity_locomotion_observation
|
| 63 |
+
mode: add
|
| 64 |
+
name: critic
|
| 65 |
+
params:
|
| 66 |
+
privileged: true
|
| 67 |
+
enable_corruption: false
|
| 68 |
+
rewards:
|
| 69 |
+
total:
|
| 70 |
+
func: velocity_locomotion_total_reward
|
| 71 |
+
mode: add
|
| 72 |
+
weight: 1.0
|
| 73 |
+
params: {}
|
| 74 |
+
actions:
|
| 75 |
+
joint_position:
|
| 76 |
+
func: DefaultJointPositionTerm
|
| 77 |
+
params: {}
|
| 78 |
+
extensions: {}
|
| 79 |
+
robot:
|
| 80 |
+
uid: robot
|
| 81 |
+
fpath: UnitreeGo2Locomotion/go2.usda
|
| 82 |
+
build_pk_chain: false
|
| 83 |
+
init_pos:
|
| 84 |
+
- 0.0
|
| 85 |
+
- 0.0
|
| 86 |
+
- 0.32
|
| 87 |
+
init_qpos:
|
| 88 |
+
- -0.1
|
| 89 |
+
- 0.1
|
| 90 |
+
- -0.1
|
| 91 |
+
- 0.1
|
| 92 |
+
- 0.9
|
| 93 |
+
- 0.9
|
| 94 |
+
- 0.9
|
| 95 |
+
- 0.9
|
| 96 |
+
- -1.8
|
| 97 |
+
- -1.8
|
| 98 |
+
- -1.8
|
| 99 |
+
- -1.8
|
| 100 |
+
control_parts:
|
| 101 |
+
locomotion:
|
| 102 |
+
- FL_hip_joint
|
| 103 |
+
- FL_thigh_joint
|
| 104 |
+
- FL_calf_joint
|
| 105 |
+
- FR_hip_joint
|
| 106 |
+
- FR_thigh_joint
|
| 107 |
+
- FR_calf_joint
|
| 108 |
+
- RL_hip_joint
|
| 109 |
+
- RL_thigh_joint
|
| 110 |
+
- RL_calf_joint
|
| 111 |
+
- RR_hip_joint
|
| 112 |
+
- RR_thigh_joint
|
| 113 |
+
- RR_calf_joint
|
| 114 |
+
asset_physics_mode: overlay
|
| 115 |
+
root_props:
|
| 116 |
+
fixed_base: false
|
| 117 |
+
self_collision_enabled: false
|
| 118 |
+
min_position_iters: 4
|
| 119 |
+
min_velocity_iters: 0
|
| 120 |
+
sensor:
|
| 121 |
+
- uid: locomotion_contacts
|
| 122 |
+
sensor_type: ContactSensor
|
| 123 |
+
articulation_cfg_list:
|
| 124 |
+
- articulation_uid: robot
|
| 125 |
+
link_name_list: []
|
| 126 |
+
filter_need_both_actor: false
|
| 127 |
+
max_contacts_per_env: 96
|
| 128 |
+
light: {}
|
| 129 |
+
background: []
|
| 130 |
+
rigid_object: []
|
| 131 |
+
rigid_object_group: []
|
| 132 |
+
articulation: []
|
policies/go2-flat-ppo-default/configs/train.yaml
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
trainer:
|
| 2 |
+
exp_name: unitree_go2_flat_ppo
|
| 3 |
+
gym_config: env.yaml
|
| 4 |
+
seed: 42
|
| 5 |
+
device: cuda:0
|
| 6 |
+
headless: true
|
| 7 |
+
renderer: fast-rt
|
| 8 |
+
num_envs: 4
|
| 9 |
+
iterations: 10001
|
| 10 |
+
buffer_size: 24
|
| 11 |
+
enable_eval: false
|
| 12 |
+
save_frequency_updates: 100
|
| 13 |
+
use_wandb: false
|
| 14 |
+
wandb_project_name: embodichain-locomotion
|
| 15 |
+
policy:
|
| 16 |
+
name: actor_critic
|
| 17 |
+
actor_obs_normalization: true
|
| 18 |
+
critic_obs_normalization: true
|
| 19 |
+
obs_groups:
|
| 20 |
+
actor:
|
| 21 |
+
- policy
|
| 22 |
+
critic:
|
| 23 |
+
- critic
|
| 24 |
+
actor:
|
| 25 |
+
type: mlp
|
| 26 |
+
network_cfg:
|
| 27 |
+
hidden_sizes:
|
| 28 |
+
- 512
|
| 29 |
+
- 256
|
| 30 |
+
- 128
|
| 31 |
+
activation: elu
|
| 32 |
+
critic:
|
| 33 |
+
type: mlp
|
| 34 |
+
network_cfg:
|
| 35 |
+
hidden_sizes:
|
| 36 |
+
- 512
|
| 37 |
+
- 256
|
| 38 |
+
- 128
|
| 39 |
+
activation: elu
|
| 40 |
+
initial_action_std: 1.0
|
| 41 |
+
algorithm:
|
| 42 |
+
name: ppo
|
| 43 |
+
cfg:
|
| 44 |
+
optimizer:
|
| 45 |
+
name: adam
|
| 46 |
+
learning_rate: 0.001
|
| 47 |
+
schedule: adaptive
|
| 48 |
+
desired_kl: 0.01
|
| 49 |
+
minimum_learning_rate: 1.0e-05
|
| 50 |
+
maximum_learning_rate: 0.01
|
| 51 |
+
n_epochs: 5
|
| 52 |
+
num_mini_batches: 4
|
| 53 |
+
batch_size: 24576
|
| 54 |
+
gamma: 0.99
|
| 55 |
+
gae_lambda: 0.95
|
| 56 |
+
clip_coef: 0.2
|
| 57 |
+
ent_coef: 0.01
|
| 58 |
+
vf_coef: 1.0
|
| 59 |
+
use_clipped_value_loss: true
|
| 60 |
+
max_grad_norm: 1.0
|
policies/go2-flat-ppo-default/evaluation.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"model_id": "go2-flat-ppo-default",
|
| 4 |
+
"evidence_kind": "prior_source_policy_evaluation",
|
| 5 |
+
"created_at": "2026-09-23T02:22:07.574341+00:00",
|
| 6 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 7 |
+
"runtime": {
|
| 8 |
+
"dexsim": "development build",
|
| 9 |
+
"public_wheel_validated": false,
|
| 10 |
+
"torch": "2.10.0+cu128",
|
| 11 |
+
"newton": null
|
| 12 |
+
},
|
| 13 |
+
"conditions": {
|
| 14 |
+
"seed": 10042,
|
| 15 |
+
"renderer": "fast-rt",
|
| 16 |
+
"task_id": "UnitreeGo2FlatRL-v1",
|
| 17 |
+
"physics": "default",
|
| 18 |
+
"command": [
|
| 19 |
+
0.3,
|
| 20 |
+
0.0,
|
| 21 |
+
0.0
|
| 22 |
+
],
|
| 23 |
+
"mode": "viewer"
|
| 24 |
+
},
|
| 25 |
+
"exit_code": 0,
|
| 26 |
+
"result": {
|
| 27 |
+
"control_steps": 1000,
|
| 28 |
+
"effective_duration": 20.0,
|
| 29 |
+
"episodes": [
|
| 30 |
+
{
|
| 31 |
+
"index": 0,
|
| 32 |
+
"length": 1000,
|
| 33 |
+
"reason": "time limit",
|
| 34 |
+
"reward": 65.62835970893502,
|
| 35 |
+
"success": false
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"metrics": {
|
| 39 |
+
"eval/avg_length": 1000.0,
|
| 40 |
+
"eval/avg_reward": 65.62835970893502,
|
| 41 |
+
"eval/success_rate": 0.0,
|
| 42 |
+
"linear_velocity_error": 0.06811629980802536,
|
| 43 |
+
"maximum_illegal_contact_force": 0.0,
|
| 44 |
+
"reward": 0.06804674863815308,
|
| 45 |
+
"root_height": 0.30811384320259094,
|
| 46 |
+
"yaw_rate_error": 0.03535405173897743
|
| 47 |
+
},
|
| 48 |
+
"reason": "control steps reached",
|
| 49 |
+
"requested_duration": 20.0,
|
| 50 |
+
"simulation_steps": 4000,
|
| 51 |
+
"simulation_time": 20.0
|
| 52 |
+
},
|
| 53 |
+
"limits": [
|
| 54 |
+
"This summarizes the earlier source-policy evaluation, not a new evaluation of this staged bundle.",
|
| 55 |
+
"A cached robot asset and a development simulation runtime were used.",
|
| 56 |
+
"A clean-cache evaluation using publicly installable dependencies is pending.",
|
| 57 |
+
"Velocity tasks have no terminal success goal; time-limit episodes are not failures."
|
| 58 |
+
],
|
| 59 |
+
"checkpoint_metadata": {
|
| 60 |
+
"global_step": 88473600,
|
| 61 |
+
"num_updates": 900,
|
| 62 |
+
"best_eval_value": null
|
| 63 |
+
}
|
| 64 |
+
}
|
policies/go2-flat-ppo-default/run-manifest.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"configs": {
|
| 4 |
+
"train": "configs/train.yaml",
|
| 5 |
+
"gym": "configs/env.yaml"
|
| 6 |
+
},
|
| 7 |
+
"checkpoints": {
|
| 8 |
+
"latest": "checkpoint.pt",
|
| 9 |
+
"best": null
|
| 10 |
+
}
|
| 11 |
+
}
|
policies/go2-flat-ppo-newton/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:242c5900d9ac4e74b050ec291552386094e85454fcc786d2f0173df187817a26
|
| 3 |
+
size 4745315
|
policies/go2-flat-ppo-newton/configs/env.yaml
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
physics: newton
|
| 2 |
+
id: UnitreeGo2FlatRL-v1
|
| 3 |
+
max_episode_steps: 1000
|
| 4 |
+
num_envs: 8
|
| 5 |
+
scene_node_capacity: 262144
|
| 6 |
+
headless: true
|
| 7 |
+
device: cuda:0
|
| 8 |
+
arena_space: 2.0
|
| 9 |
+
render_cfg:
|
| 10 |
+
renderer: fast-rt
|
| 11 |
+
physics_config:
|
| 12 |
+
sync_to_renderer: false
|
| 13 |
+
gravity:
|
| 14 |
+
- 0.0
|
| 15 |
+
- 0.0
|
| 16 |
+
- -9.81
|
| 17 |
+
num_substeps: 1
|
| 18 |
+
solver_cfg:
|
| 19 |
+
solver_type: mujoco_warp
|
| 20 |
+
njmax: 1024
|
| 21 |
+
nconmax: 256
|
| 22 |
+
iterations: 10
|
| 23 |
+
ls_iterations: 50
|
| 24 |
+
integrator: implicitfast
|
| 25 |
+
separate_worlds: true
|
| 26 |
+
tolerance: 1.0e-08
|
| 27 |
+
physics_dt: 0.005
|
| 28 |
+
env:
|
| 29 |
+
sim_steps_per_control: 4
|
| 30 |
+
control_parts:
|
| 31 |
+
- locomotion
|
| 32 |
+
events:
|
| 33 |
+
push_robot:
|
| 34 |
+
func: push_articulation_by_setting_velocity
|
| 35 |
+
mode: interval
|
| 36 |
+
interval_step: 1
|
| 37 |
+
is_global: false
|
| 38 |
+
params:
|
| 39 |
+
entity_cfg:
|
| 40 |
+
uid: robot
|
| 41 |
+
interval_range_s:
|
| 42 |
+
- 5.0
|
| 43 |
+
- 6.0
|
| 44 |
+
velocity_range:
|
| 45 |
+
x:
|
| 46 |
+
- -0.5
|
| 47 |
+
- 0.5
|
| 48 |
+
y:
|
| 49 |
+
- -0.5
|
| 50 |
+
- 0.5
|
| 51 |
+
z:
|
| 52 |
+
- -0.4
|
| 53 |
+
- 0.4
|
| 54 |
+
roll:
|
| 55 |
+
- -0.52
|
| 56 |
+
- 0.52
|
| 57 |
+
pitch:
|
| 58 |
+
- -0.52
|
| 59 |
+
- 0.52
|
| 60 |
+
yaw:
|
| 61 |
+
- -0.78
|
| 62 |
+
- 0.78
|
| 63 |
+
observations:
|
| 64 |
+
policy:
|
| 65 |
+
func: velocity_locomotion_observation
|
| 66 |
+
mode: add
|
| 67 |
+
name: policy
|
| 68 |
+
params:
|
| 69 |
+
privileged: false
|
| 70 |
+
enable_corruption: true
|
| 71 |
+
critic:
|
| 72 |
+
func: velocity_locomotion_observation
|
| 73 |
+
mode: add
|
| 74 |
+
name: critic
|
| 75 |
+
params:
|
| 76 |
+
privileged: true
|
| 77 |
+
enable_corruption: false
|
| 78 |
+
rewards:
|
| 79 |
+
total:
|
| 80 |
+
func: velocity_locomotion_total_reward
|
| 81 |
+
mode: add
|
| 82 |
+
weight: 1.0
|
| 83 |
+
params: {}
|
| 84 |
+
actions:
|
| 85 |
+
joint_position:
|
| 86 |
+
func: DefaultJointPositionTerm
|
| 87 |
+
params: {}
|
| 88 |
+
extensions: {}
|
| 89 |
+
robot:
|
| 90 |
+
uid: robot
|
| 91 |
+
fpath: UnitreeGo2Locomotion/go2.usda
|
| 92 |
+
build_pk_chain: false
|
| 93 |
+
init_pos:
|
| 94 |
+
- 0.0
|
| 95 |
+
- 0.0
|
| 96 |
+
- 0.32
|
| 97 |
+
init_qpos:
|
| 98 |
+
- -0.1
|
| 99 |
+
- 0.1
|
| 100 |
+
- -0.1
|
| 101 |
+
- 0.1
|
| 102 |
+
- 0.9
|
| 103 |
+
- 0.9
|
| 104 |
+
- 0.9
|
| 105 |
+
- 0.9
|
| 106 |
+
- -1.8
|
| 107 |
+
- -1.8
|
| 108 |
+
- -1.8
|
| 109 |
+
- -1.8
|
| 110 |
+
control_parts:
|
| 111 |
+
locomotion:
|
| 112 |
+
- FL_hip_joint
|
| 113 |
+
- FL_thigh_joint
|
| 114 |
+
- FL_calf_joint
|
| 115 |
+
- FR_hip_joint
|
| 116 |
+
- FR_thigh_joint
|
| 117 |
+
- FR_calf_joint
|
| 118 |
+
- RL_hip_joint
|
| 119 |
+
- RL_thigh_joint
|
| 120 |
+
- RL_calf_joint
|
| 121 |
+
- RR_hip_joint
|
| 122 |
+
- RR_thigh_joint
|
| 123 |
+
- RR_calf_joint
|
| 124 |
+
asset_physics_mode: overlay
|
| 125 |
+
root_props:
|
| 126 |
+
fixed_base: false
|
| 127 |
+
self_collision_enabled: false
|
| 128 |
+
min_position_iters: 4
|
| 129 |
+
min_velocity_iters: 0
|
| 130 |
+
sensor:
|
| 131 |
+
- uid: locomotion_contacts
|
| 132 |
+
sensor_type: ContactSensor
|
| 133 |
+
articulation_cfg_list:
|
| 134 |
+
- articulation_uid: robot
|
| 135 |
+
link_name_list: []
|
| 136 |
+
filter_need_both_actor: false
|
| 137 |
+
max_contacts_per_env: 96
|
| 138 |
+
light: {}
|
| 139 |
+
background: []
|
| 140 |
+
rigid_object: []
|
| 141 |
+
rigid_object_group: []
|
| 142 |
+
articulation: []
|
policies/go2-flat-ppo-newton/configs/train.yaml
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
trainer:
|
| 2 |
+
exp_name: unitree_go2_flat_ppo_newton
|
| 3 |
+
gym_config: env.yaml
|
| 4 |
+
seed: 42
|
| 5 |
+
device: cuda:0
|
| 6 |
+
headless: true
|
| 7 |
+
renderer: fast-rt
|
| 8 |
+
num_envs: 4
|
| 9 |
+
iterations: 10001
|
| 10 |
+
buffer_size: 24
|
| 11 |
+
enable_eval: false
|
| 12 |
+
save_frequency_updates: 100
|
| 13 |
+
use_wandb: false
|
| 14 |
+
wandb_project_name: embodichain-locomotion
|
| 15 |
+
policy:
|
| 16 |
+
name: actor_critic
|
| 17 |
+
actor_obs_normalization: true
|
| 18 |
+
critic_obs_normalization: true
|
| 19 |
+
obs_groups:
|
| 20 |
+
actor:
|
| 21 |
+
- policy
|
| 22 |
+
critic:
|
| 23 |
+
- critic
|
| 24 |
+
actor:
|
| 25 |
+
type: mlp
|
| 26 |
+
network_cfg:
|
| 27 |
+
hidden_sizes:
|
| 28 |
+
- 512
|
| 29 |
+
- 256
|
| 30 |
+
- 128
|
| 31 |
+
activation: elu
|
| 32 |
+
critic:
|
| 33 |
+
type: mlp
|
| 34 |
+
network_cfg:
|
| 35 |
+
hidden_sizes:
|
| 36 |
+
- 512
|
| 37 |
+
- 256
|
| 38 |
+
- 128
|
| 39 |
+
activation: elu
|
| 40 |
+
initial_action_std: 1.0
|
| 41 |
+
algorithm:
|
| 42 |
+
name: ppo
|
| 43 |
+
cfg:
|
| 44 |
+
optimizer:
|
| 45 |
+
name: adam
|
| 46 |
+
learning_rate: 0.001
|
| 47 |
+
schedule: adaptive
|
| 48 |
+
desired_kl: 0.01
|
| 49 |
+
minimum_learning_rate: 1.0e-05
|
| 50 |
+
maximum_learning_rate: 0.01
|
| 51 |
+
n_epochs: 5
|
| 52 |
+
num_mini_batches: 4
|
| 53 |
+
batch_size: 24576
|
| 54 |
+
gamma: 0.99
|
| 55 |
+
gae_lambda: 0.95
|
| 56 |
+
clip_coef: 0.2
|
| 57 |
+
ent_coef: 0.01
|
| 58 |
+
vf_coef: 1.0
|
| 59 |
+
use_clipped_value_loss: true
|
| 60 |
+
max_grad_norm: 1.0
|
policies/go2-flat-ppo-newton/evaluation.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"model_id": "go2-flat-ppo-newton",
|
| 4 |
+
"evidence_kind": "prior_source_policy_evaluation",
|
| 5 |
+
"created_at": "2026-09-23T02:17:55.903488+00:00",
|
| 6 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 7 |
+
"runtime": {
|
| 8 |
+
"dexsim": "development build",
|
| 9 |
+
"public_wheel_validated": false,
|
| 10 |
+
"torch": "2.10.0+cu128",
|
| 11 |
+
"newton": "1.6.0"
|
| 12 |
+
},
|
| 13 |
+
"conditions": {
|
| 14 |
+
"seed": 10042,
|
| 15 |
+
"renderer": "fast-rt",
|
| 16 |
+
"task_id": "UnitreeGo2FlatRL-v1",
|
| 17 |
+
"physics": "newton",
|
| 18 |
+
"command": [
|
| 19 |
+
0.3,
|
| 20 |
+
0.0,
|
| 21 |
+
0.0
|
| 22 |
+
],
|
| 23 |
+
"mode": "viewer"
|
| 24 |
+
},
|
| 25 |
+
"exit_code": 0,
|
| 26 |
+
"result": {
|
| 27 |
+
"control_steps": 1000,
|
| 28 |
+
"effective_duration": 20.0,
|
| 29 |
+
"episodes": [
|
| 30 |
+
{
|
| 31 |
+
"index": 0,
|
| 32 |
+
"length": 1000,
|
| 33 |
+
"reason": "time limit",
|
| 34 |
+
"reward": 65.37921412661672,
|
| 35 |
+
"success": false
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"metrics": {
|
| 39 |
+
"eval/avg_length": 1000.0,
|
| 40 |
+
"eval/avg_reward": 65.37921412661672,
|
| 41 |
+
"eval/success_rate": 0.0,
|
| 42 |
+
"linear_velocity_error": 0.061211440712213516,
|
| 43 |
+
"maximum_illegal_contact_force": 0.0,
|
| 44 |
+
"reward": 0.06784547120332718,
|
| 45 |
+
"root_height": 0.30683282017707825,
|
| 46 |
+
"yaw_rate_error": 0.006454401649534702
|
| 47 |
+
},
|
| 48 |
+
"reason": "control steps reached",
|
| 49 |
+
"requested_duration": 20.0,
|
| 50 |
+
"simulation_steps": 4000,
|
| 51 |
+
"simulation_time": 20.0
|
| 52 |
+
},
|
| 53 |
+
"limits": [
|
| 54 |
+
"This summarizes the earlier source-policy evaluation, not a new evaluation of this staged bundle.",
|
| 55 |
+
"A cached robot asset and a development simulation runtime were used.",
|
| 56 |
+
"A clean-cache evaluation using publicly installable dependencies is pending.",
|
| 57 |
+
"Velocity tasks have no terminal success goal; time-limit episodes are not failures."
|
| 58 |
+
],
|
| 59 |
+
"checkpoint_metadata": {
|
| 60 |
+
"global_step": 68812800,
|
| 61 |
+
"num_updates": 700,
|
| 62 |
+
"best_eval_value": null
|
| 63 |
+
}
|
| 64 |
+
}
|
policies/go2-flat-ppo-newton/run-manifest.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"configs": {
|
| 4 |
+
"train": "configs/train.yaml",
|
| 5 |
+
"gym": "configs/env.yaml"
|
| 6 |
+
},
|
| 7 |
+
"checkpoints": {
|
| 8 |
+
"latest": "checkpoint.pt",
|
| 9 |
+
"best": null
|
| 10 |
+
}
|
| 11 |
+
}
|
policies/h1-2-flat-ppo-default/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0c109105da54e9159f97cae16282c29c9b0689a534395b5d1a1d2908b176d271
|
| 3 |
+
size 5249013
|
policies/h1-2-flat-ppo-default/configs/env.yaml
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
physics: default
|
| 2 |
+
id: UnitreeH1_2FlatRL-v1
|
| 3 |
+
max_episode_steps: 1000
|
| 4 |
+
num_envs: 8
|
| 5 |
+
scene_node_capacity: 262144
|
| 6 |
+
headless: true
|
| 7 |
+
device: cuda:0
|
| 8 |
+
arena_space: 2.5
|
| 9 |
+
render_cfg:
|
| 10 |
+
renderer: fast-rt
|
| 11 |
+
physics_config:
|
| 12 |
+
cache_material: true
|
| 13 |
+
gravity:
|
| 14 |
+
- 0.0
|
| 15 |
+
- 0.0
|
| 16 |
+
- -9.81
|
| 17 |
+
physics_dt: 0.005
|
| 18 |
+
env:
|
| 19 |
+
sim_steps_per_control: 4
|
| 20 |
+
control_parts:
|
| 21 |
+
- locomotion
|
| 22 |
+
events:
|
| 23 |
+
push_robot:
|
| 24 |
+
func: push_articulation_by_setting_velocity
|
| 25 |
+
mode: interval
|
| 26 |
+
interval_step: 1
|
| 27 |
+
is_global: false
|
| 28 |
+
params:
|
| 29 |
+
entity_cfg:
|
| 30 |
+
uid: robot
|
| 31 |
+
interval_range_s:
|
| 32 |
+
- 5.0
|
| 33 |
+
- 6.0
|
| 34 |
+
velocity_range:
|
| 35 |
+
x:
|
| 36 |
+
- -0.5
|
| 37 |
+
- 0.5
|
| 38 |
+
y:
|
| 39 |
+
- -0.5
|
| 40 |
+
- 0.5
|
| 41 |
+
z:
|
| 42 |
+
- -0.4
|
| 43 |
+
- 0.4
|
| 44 |
+
roll:
|
| 45 |
+
- -0.52
|
| 46 |
+
- 0.52
|
| 47 |
+
pitch:
|
| 48 |
+
- -0.52
|
| 49 |
+
- 0.52
|
| 50 |
+
yaw:
|
| 51 |
+
- -0.78
|
| 52 |
+
- 0.78
|
| 53 |
+
observations:
|
| 54 |
+
policy:
|
| 55 |
+
func: velocity_locomotion_observation
|
| 56 |
+
mode: add
|
| 57 |
+
name: policy
|
| 58 |
+
params:
|
| 59 |
+
privileged: false
|
| 60 |
+
enable_corruption: true
|
| 61 |
+
critic:
|
| 62 |
+
func: velocity_locomotion_observation
|
| 63 |
+
mode: add
|
| 64 |
+
name: critic
|
| 65 |
+
params:
|
| 66 |
+
privileged: true
|
| 67 |
+
enable_corruption: false
|
| 68 |
+
rewards:
|
| 69 |
+
total:
|
| 70 |
+
func: velocity_locomotion_total_reward
|
| 71 |
+
mode: add
|
| 72 |
+
weight: 1.0
|
| 73 |
+
params: {}
|
| 74 |
+
actions:
|
| 75 |
+
joint_position:
|
| 76 |
+
func: DefaultJointPositionTerm
|
| 77 |
+
params: {}
|
| 78 |
+
extensions: {}
|
| 79 |
+
robot:
|
| 80 |
+
uid: robot
|
| 81 |
+
fpath: UnitreeH1_2Locomotion/h1_2.usda
|
| 82 |
+
build_pk_chain: false
|
| 83 |
+
init_pos:
|
| 84 |
+
- 0.0
|
| 85 |
+
- 0.0
|
| 86 |
+
- 1.02
|
| 87 |
+
init_qpos:
|
| 88 |
+
- 0.0
|
| 89 |
+
- 0.0
|
| 90 |
+
- 0.0
|
| 91 |
+
- -0.2
|
| 92 |
+
- -0.2
|
| 93 |
+
- 0.28
|
| 94 |
+
- 0.28
|
| 95 |
+
- 0.0
|
| 96 |
+
- 0.0
|
| 97 |
+
- 0.0
|
| 98 |
+
- 0.0
|
| 99 |
+
- 0.5
|
| 100 |
+
- 0.5
|
| 101 |
+
- 0.0
|
| 102 |
+
- 0.0
|
| 103 |
+
- -0.3
|
| 104 |
+
- -0.3
|
| 105 |
+
- 0.52
|
| 106 |
+
- 0.52
|
| 107 |
+
- 0.0
|
| 108 |
+
- 0.0
|
| 109 |
+
- 0.0
|
| 110 |
+
- 0.0
|
| 111 |
+
- 0.0
|
| 112 |
+
- 0.0
|
| 113 |
+
- 0.0
|
| 114 |
+
- 0.0
|
| 115 |
+
control_parts:
|
| 116 |
+
locomotion:
|
| 117 |
+
- left_hip_yaw_joint
|
| 118 |
+
- left_hip_pitch_joint
|
| 119 |
+
- left_hip_roll_joint
|
| 120 |
+
- left_knee_joint
|
| 121 |
+
- left_ankle_pitch_joint
|
| 122 |
+
- left_ankle_roll_joint
|
| 123 |
+
- right_hip_yaw_joint
|
| 124 |
+
- right_hip_pitch_joint
|
| 125 |
+
- right_hip_roll_joint
|
| 126 |
+
- right_knee_joint
|
| 127 |
+
- right_ankle_pitch_joint
|
| 128 |
+
- right_ankle_roll_joint
|
| 129 |
+
- torso_joint
|
| 130 |
+
- left_shoulder_pitch_joint
|
| 131 |
+
- left_shoulder_roll_joint
|
| 132 |
+
- left_shoulder_yaw_joint
|
| 133 |
+
- left_elbow_joint
|
| 134 |
+
- left_wrist_roll_joint
|
| 135 |
+
- left_wrist_pitch_joint
|
| 136 |
+
- left_wrist_yaw_joint
|
| 137 |
+
- right_shoulder_pitch_joint
|
| 138 |
+
- right_shoulder_roll_joint
|
| 139 |
+
- right_shoulder_yaw_joint
|
| 140 |
+
- right_elbow_joint
|
| 141 |
+
- right_wrist_roll_joint
|
| 142 |
+
- right_wrist_pitch_joint
|
| 143 |
+
- right_wrist_yaw_joint
|
| 144 |
+
asset_physics_mode: overlay
|
| 145 |
+
root_props:
|
| 146 |
+
fixed_base: false
|
| 147 |
+
self_collision_enabled: true
|
| 148 |
+
min_position_iters: 4
|
| 149 |
+
min_velocity_iters: 4
|
| 150 |
+
sensor:
|
| 151 |
+
- uid: locomotion_contacts
|
| 152 |
+
sensor_type: ContactSensor
|
| 153 |
+
articulation_cfg_list:
|
| 154 |
+
- articulation_uid: robot
|
| 155 |
+
link_name_list: []
|
| 156 |
+
filter_need_both_actor: false
|
| 157 |
+
max_contacts_per_env: 192
|
| 158 |
+
light: {}
|
| 159 |
+
background: []
|
| 160 |
+
rigid_object: []
|
| 161 |
+
rigid_object_group: []
|
| 162 |
+
articulation: []
|
policies/h1-2-flat-ppo-default/configs/train.yaml
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
trainer:
|
| 2 |
+
exp_name: unitree_h1_2_flat_ppo
|
| 3 |
+
gym_config: env.yaml
|
| 4 |
+
seed: 42
|
| 5 |
+
device: cuda:0
|
| 6 |
+
headless: true
|
| 7 |
+
renderer: fast-rt
|
| 8 |
+
num_envs: 4
|
| 9 |
+
iterations: 10001
|
| 10 |
+
buffer_size: 24
|
| 11 |
+
enable_eval: false
|
| 12 |
+
save_frequency_updates: 100
|
| 13 |
+
use_wandb: false
|
| 14 |
+
wandb_project_name: embodichain-locomotion
|
| 15 |
+
policy:
|
| 16 |
+
name: actor_critic
|
| 17 |
+
actor_obs_normalization: true
|
| 18 |
+
critic_obs_normalization: true
|
| 19 |
+
obs_groups:
|
| 20 |
+
actor:
|
| 21 |
+
- policy
|
| 22 |
+
critic:
|
| 23 |
+
- critic
|
| 24 |
+
actor:
|
| 25 |
+
type: mlp
|
| 26 |
+
network_cfg:
|
| 27 |
+
hidden_sizes:
|
| 28 |
+
- 512
|
| 29 |
+
- 256
|
| 30 |
+
- 128
|
| 31 |
+
activation: elu
|
| 32 |
+
critic:
|
| 33 |
+
type: mlp
|
| 34 |
+
network_cfg:
|
| 35 |
+
hidden_sizes:
|
| 36 |
+
- 512
|
| 37 |
+
- 256
|
| 38 |
+
- 128
|
| 39 |
+
activation: elu
|
| 40 |
+
initial_action_std: 1.0
|
| 41 |
+
algorithm:
|
| 42 |
+
name: ppo
|
| 43 |
+
cfg:
|
| 44 |
+
optimizer:
|
| 45 |
+
name: adam
|
| 46 |
+
learning_rate: 0.001
|
| 47 |
+
schedule: adaptive
|
| 48 |
+
desired_kl: 0.01
|
| 49 |
+
minimum_learning_rate: 1.0e-05
|
| 50 |
+
maximum_learning_rate: 0.01
|
| 51 |
+
n_epochs: 5
|
| 52 |
+
num_mini_batches: 4
|
| 53 |
+
batch_size: 24576
|
| 54 |
+
gamma: 0.99
|
| 55 |
+
gae_lambda: 0.95
|
| 56 |
+
clip_coef: 0.2
|
| 57 |
+
ent_coef: 0.01
|
| 58 |
+
vf_coef: 1.0
|
| 59 |
+
use_clipped_value_loss: true
|
| 60 |
+
max_grad_norm: 1.0
|
policies/h1-2-flat-ppo-default/evaluation.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"model_id": "h1-2-flat-ppo-default",
|
| 4 |
+
"evidence_kind": "prior_source_policy_evaluation",
|
| 5 |
+
"created_at": "2026-09-23T02:22:49.776090+00:00",
|
| 6 |
+
"embodichain_revision": "6f20b0603f784599201a7ee9b0d82a057d7c8bbf",
|
| 7 |
+
"runtime": {
|
| 8 |
+
"dexsim": "development build",
|
| 9 |
+
"public_wheel_validated": false,
|
| 10 |
+
"torch": "2.10.0+cu128",
|
| 11 |
+
"newton": null
|
| 12 |
+
},
|
| 13 |
+
"conditions": {
|
| 14 |
+
"seed": 10042,
|
| 15 |
+
"renderer": "fast-rt",
|
| 16 |
+
"task_id": "UnitreeH1_2FlatRL-v1",
|
| 17 |
+
"physics": "default",
|
| 18 |
+
"command": [
|
| 19 |
+
0.3,
|
| 20 |
+
0.0,
|
| 21 |
+
0.0
|
| 22 |
+
],
|
| 23 |
+
"mode": "viewer"
|
| 24 |
+
},
|
| 25 |
+
"exit_code": 0,
|
| 26 |
+
"result": {
|
| 27 |
+
"control_steps": 1000,
|
| 28 |
+
"effective_duration": 20.0,
|
| 29 |
+
"episodes": [
|
| 30 |
+
{
|
| 31 |
+
"index": 0,
|
| 32 |
+
"length": 1000,
|
| 33 |
+
"reason": "time limit",
|
| 34 |
+
"reward": 58.88337729498744,
|
| 35 |
+
"success": false
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
"metrics": {
|
| 39 |
+
"eval/avg_length": 1000.0,
|
| 40 |
+
"eval/avg_reward": 58.88337729498744,
|
| 41 |
+
"eval/success_rate": 0.0,
|
| 42 |
+
"linear_velocity_error": 0.11185938119888306,
|
| 43 |
+
"reward": 0.0634588673710823,
|
| 44 |
+
"root_height": 0.9720747470855713,
|
| 45 |
+
"yaw_rate_error": 0.04812958464026451
|
| 46 |
+
},
|
| 47 |
+
"reason": "control steps reached",
|
| 48 |
+
"requested_duration": 20.0,
|
| 49 |
+
"simulation_steps": 4000,
|
| 50 |
+
"simulation_time": 20.0
|
| 51 |
+
},
|
| 52 |
+
"limits": [
|
| 53 |
+
"This summarizes the earlier source-policy evaluation, not a new evaluation of this staged bundle.",
|
| 54 |
+
"A cached robot asset and a development simulation runtime were used.",
|
| 55 |
+
"A clean-cache evaluation using publicly installable dependencies is pending.",
|
| 56 |
+
"Velocity tasks have no terminal success goal; time-limit episodes are not failures."
|
| 57 |
+
],
|
| 58 |
+
"checkpoint_metadata": {
|
| 59 |
+
"global_step": 108134400,
|
| 60 |
+
"num_updates": 1100,
|
| 61 |
+
"best_eval_value": null
|
| 62 |
+
}
|
| 63 |
+
}
|
policies/h1-2-flat-ppo-default/run-manifest.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"configs": {
|
| 4 |
+
"train": "configs/train.yaml",
|
| 5 |
+
"gym": "configs/env.yaml"
|
| 6 |
+
},
|
| 7 |
+
"checkpoints": {
|
| 8 |
+
"latest": "checkpoint.pt",
|
| 9 |
+
"best": null
|
| 10 |
+
}
|
| 11 |
+
}
|
policies/h1-2-flat-ppo-newton/checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a1222cc14b2a75699ba9b93f0513cba631b00865998cbfa34c4e52f0c002232a
|
| 3 |
+
size 5249095
|
policies/h1-2-flat-ppo-newton/configs/env.yaml
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
physics: newton
|
| 2 |
+
id: UnitreeH1_2FlatRL-v1
|
| 3 |
+
max_episode_steps: 1000
|
| 4 |
+
num_envs: 8
|
| 5 |
+
scene_node_capacity: 262144
|
| 6 |
+
headless: true
|
| 7 |
+
device: cuda:0
|
| 8 |
+
arena_space: 2.5
|
| 9 |
+
render_cfg:
|
| 10 |
+
renderer: fast-rt
|
| 11 |
+
physics_config:
|
| 12 |
+
sync_to_renderer: false
|
| 13 |
+
gravity:
|
| 14 |
+
- 0.0
|
| 15 |
+
- 0.0
|
| 16 |
+
- -9.81
|
| 17 |
+
num_substeps: 1
|
| 18 |
+
solver_cfg:
|
| 19 |
+
solver_type: mujoco_warp
|
| 20 |
+
njmax: 1024
|
| 21 |
+
nconmax: 256
|
| 22 |
+
iterations: 10
|
| 23 |
+
ls_iterations: 50
|
| 24 |
+
integrator: implicitfast
|
| 25 |
+
separate_worlds: true
|
| 26 |
+
tolerance: 1.0e-08
|
| 27 |
+
physics_dt: 0.005
|
| 28 |
+
env:
|
| 29 |
+
sim_steps_per_control: 4
|
| 30 |
+
control_parts:
|
| 31 |
+
- locomotion
|
| 32 |
+
events:
|
| 33 |
+
push_robot:
|
| 34 |
+
func: push_articulation_by_setting_velocity
|
| 35 |
+
mode: interval
|
| 36 |
+
interval_step: 1
|
| 37 |
+
is_global: false
|
| 38 |
+
params:
|
| 39 |
+
entity_cfg:
|
| 40 |
+
uid: robot
|
| 41 |
+
interval_range_s:
|
| 42 |
+
- 5.0
|
| 43 |
+
- 6.0
|
| 44 |
+
velocity_range:
|
| 45 |
+
x:
|
| 46 |
+
- -0.5
|
| 47 |
+
- 0.5
|
| 48 |
+
y:
|
| 49 |
+
- -0.5
|
| 50 |
+
- 0.5
|
| 51 |
+
z:
|
| 52 |
+
- -0.4
|
| 53 |
+
- 0.4
|
| 54 |
+
roll:
|
| 55 |
+
- -0.52
|
| 56 |
+
- 0.52
|
| 57 |
+
pitch:
|
| 58 |
+
- -0.52
|
| 59 |
+
- 0.52
|
| 60 |
+
yaw:
|
| 61 |
+
- -0.78
|
| 62 |
+
- 0.78
|
| 63 |
+
observations:
|
| 64 |
+
policy:
|
| 65 |
+
func: velocity_locomotion_observation
|
| 66 |
+
mode: add
|
| 67 |
+
name: policy
|
| 68 |
+
params:
|
| 69 |
+
privileged: false
|
| 70 |
+
enable_corruption: true
|
| 71 |
+
critic:
|
| 72 |
+
func: velocity_locomotion_observation
|
| 73 |
+
mode: add
|
| 74 |
+
name: critic
|
| 75 |
+
params:
|
| 76 |
+
privileged: true
|
| 77 |
+
enable_corruption: false
|
| 78 |
+
rewards:
|
| 79 |
+
total:
|
| 80 |
+
func: velocity_locomotion_total_reward
|
| 81 |
+
mode: add
|
| 82 |
+
weight: 1.0
|
| 83 |
+
params: {}
|
| 84 |
+
actions:
|
| 85 |
+
joint_position:
|
| 86 |
+
func: DefaultJointPositionTerm
|
| 87 |
+
params: {}
|
| 88 |
+
extensions: {}
|
| 89 |
+
robot:
|
| 90 |
+
uid: robot
|
| 91 |
+
fpath: UnitreeH1_2Locomotion/h1_2.usda
|
| 92 |
+
build_pk_chain: false
|
| 93 |
+
init_pos:
|
| 94 |
+
- 0.0
|
| 95 |
+
- 0.0
|
| 96 |
+
- 1.02
|
| 97 |
+
init_qpos:
|
| 98 |
+
- 0.0
|
| 99 |
+
- 0.0
|
| 100 |
+
- 0.0
|
| 101 |
+
- -0.2
|
| 102 |
+
- -0.2
|
| 103 |
+
- 0.28
|
| 104 |
+
- 0.28
|
| 105 |
+
- 0.0
|
| 106 |
+
- 0.0
|
| 107 |
+
- 0.0
|
| 108 |
+
- 0.0
|
| 109 |
+
- 0.5
|
| 110 |
+
- 0.5
|
| 111 |
+
- 0.0
|
| 112 |
+
- 0.0
|
| 113 |
+
- -0.3
|
| 114 |
+
- -0.3
|
| 115 |
+
- 0.52
|
| 116 |
+
- 0.52
|
| 117 |
+
- 0.0
|
| 118 |
+
- 0.0
|
| 119 |
+
- 0.0
|
| 120 |
+
- 0.0
|
| 121 |
+
- 0.0
|
| 122 |
+
- 0.0
|
| 123 |
+
- 0.0
|
| 124 |
+
- 0.0
|
| 125 |
+
control_parts:
|
| 126 |
+
locomotion:
|
| 127 |
+
- left_hip_yaw_joint
|
| 128 |
+
- left_hip_pitch_joint
|
| 129 |
+
- left_hip_roll_joint
|
| 130 |
+
- left_knee_joint
|
| 131 |
+
- left_ankle_pitch_joint
|
| 132 |
+
- left_ankle_roll_joint
|
| 133 |
+
- right_hip_yaw_joint
|
| 134 |
+
- right_hip_pitch_joint
|
| 135 |
+
- right_hip_roll_joint
|
| 136 |
+
- right_knee_joint
|
| 137 |
+
- right_ankle_pitch_joint
|
| 138 |
+
- right_ankle_roll_joint
|
| 139 |
+
- torso_joint
|
| 140 |
+
- left_shoulder_pitch_joint
|
| 141 |
+
- left_shoulder_roll_joint
|
| 142 |
+
- left_shoulder_yaw_joint
|
| 143 |
+
- left_elbow_joint
|
| 144 |
+
- left_wrist_roll_joint
|
| 145 |
+
- left_wrist_pitch_joint
|
| 146 |
+
- left_wrist_yaw_joint
|
| 147 |
+
- right_shoulder_pitch_joint
|
| 148 |
+
- right_shoulder_roll_joint
|
| 149 |
+
- right_shoulder_yaw_joint
|
| 150 |
+
- right_elbow_joint
|
| 151 |
+
- right_wrist_roll_joint
|
| 152 |
+
- right_wrist_pitch_joint
|
| 153 |
+
- right_wrist_yaw_joint
|
| 154 |
+
asset_physics_mode: overlay
|
| 155 |
+
root_props:
|
| 156 |
+
fixed_base: false
|
| 157 |
+
self_collision_enabled: true
|
| 158 |
+
min_position_iters: 4
|
| 159 |
+
min_velocity_iters: 4
|
| 160 |
+
sensor:
|
| 161 |
+
- uid: locomotion_contacts
|
| 162 |
+
sensor_type: ContactSensor
|
| 163 |
+
articulation_cfg_list:
|
| 164 |
+
- articulation_uid: robot
|
| 165 |
+
link_name_list: []
|
| 166 |
+
filter_need_both_actor: false
|
| 167 |
+
max_contacts_per_env: 192
|
| 168 |
+
light: {}
|
| 169 |
+
background: []
|
| 170 |
+
rigid_object: []
|
| 171 |
+
rigid_object_group: []
|
| 172 |
+
articulation: []
|