buzinguyen commited on
Commit
c9a41ea
·
verified ·
1 Parent(s): c923466

Model card

Browse files
Files changed (1) hide show
  1. README.md +71 -0
README.md CHANGED
@@ -1,3 +1,74 @@
1
  ---
2
  license: mit
 
 
 
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: mit
3
+ tags:
4
+ - robotics
5
+ - reinforcement-learning
6
+ - safe-reinforcement-learning
7
+ - reach-avoid
8
+ - unitree-go2
9
+ - mujoco
10
  ---
11
+
12
+ # ODD-conditioned safety filters — trained policies
13
+
14
+ Trained policies for **ODD-conditioned safety filters** on a Unitree Go2 in MuJoCo (mjlab): safety filters whose
15
+ guarantee survives runtime changes of the operating design domain — a payload loaded mid-mission, a motor that
16
+ derates. The filter is an automaton over specification modes (stand/walk ↔ rest) with certified transition
17
+ funnels between them.
18
+
19
+ Code, documentation and the evaluation that reproduces every result:
20
+ **[SafeRoboticsLab/odd-conditioned](https://github.com/SafeRoboticsLab/odd-conditioned/tree/cleanup)** (branch
21
+ `cleanup`). These weights are meant to be used with it.
22
+
23
+ ## Use
24
+
25
+ ```bash
26
+ # in a clone of the code repository, after `source activate.sh`
27
+ bash scripts/fetch_weights.sh https://huggingface.co/buzinguyen/odd-conditioned-dev/resolve/c923466bd1c68132b643f6806b9e8a2c532e4f1f/odd-conditioned-weights-v1.tar.gz
28
+ pytest -q tests/ && bash scripts/reproduce.sh payload figures
29
+ ```
30
+
31
+ `fetch_weights.sh` installs the policies under `checkpoints/` and checks every file against the manifest
32
+ committed in the code repository (`weights/MANIFEST.sha256`, also included here).
33
+
34
+ ## Files
35
+
36
+ | path | contents |
37
+ |---|---|
38
+ | `odd-conditioned-weights-v1.tar.gz` | everything below, as one archive (what `fetch_weights.sh` installs) |
39
+ | `checkpoints/<name>/model.zip` | a two-player reach-avoid PPO twin (`ReachAvoidPPO2P`, safety-stable-baselines 0.4.0): control policy + state-value net, whose sign is the mode's certificate |
40
+ | `checkpoints/<name>/tensornormalize.pt` | its frozen observation-normalization statistics (48-d actor observation) |
41
+ | `checkpoints/<name>/config.yaml` | the exact training configuration of the run |
42
+ | `checkpoints/{rest,getup_stage1}/final/` | final models used as warm starts when retraining `descend` and `getup` |
43
+ | `MANIFEST.sha256` | sha256 of every file |
44
+
45
+ | policy | role |
46
+ |---|---|
47
+ | `stand` | STAND expert under a carried load W ∈ [0, 120] N with a raised centre of mass; its value is `V_stand` |
48
+ | `rest` | REST expert: lie down and settle under any load — the anchor safe set |
49
+ | `getup` | certified get-up funnel REST → STAND; its value `V_up` gates the return and the abort |
50
+ | `descend` | certified descent funnel STAND → REST |
51
+ | `stand_wide` | STAND expert trained on W ∈ [0, 150] N (a noisier certificate; the single-spec comparison) |
52
+ | `unified`, `unified_discounted` | single-specification baselines (one policy for stand-or-rest) |
53
+ | `leg_stand` | STAND expert for a derated front-right leg (the negative control) |
54
+ | `compound_stand`, `compound_rest` | STAND / REST experts for a leg that derates while carrying 80 N |
55
+
56
+ The nominal walking policy is not here: it ships with
57
+ [go2_atomic_skills](https://github.com/SafeRoboticsLab/go2_atomic_skills).
58
+
59
+ ## Training
60
+
61
+ Every policy was trained with the two-player safety-PPO recipe of safety-stable-baselines on tasks of
62
+ [robot-safety-sandbox](https://github.com/SafeRoboticsLab/robot-safety-sandbox/tree/project/odd-conditioned)
63
+ (branch `project/odd-conditioned`): 1024 environments, 50M steps, seed 0, a learned adversarial push of up to
64
+ 25 N. The released checkpoint of each run is the one at 49,999,872 steps. `scripts/train.sh` in the code
65
+ repository retrains any of them.
66
+
67
+ **Training variance.** Each policy is a single training run, and the stance-type policies (`stand`,
68
+ `compound_stand`) vary a lot from run to run: retrained with other seeds, most stand experts fail the acceptance
69
+ test that the released one passes. The code repository documents an acceptance test (`scripts/check_policies.py`)
70
+ and a threshold-calibration script for retrained policies.
71
+
72
+ ## License
73
+
74
+ MIT, as the code.