AdsumSOK commited on
Commit
614b968
·
verified ·
1 Parent(s): 01fd80e

bow v7: révérence, phase 10 s, geste 6.1 s

Browse files
Files changed (3) hide show
  1. README.md +40 -0
  2. manifest.json +57 -0
  3. policy.onnx +3 -0
README.md ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ tags: [microduck, policy, bow]
4
+ ---
5
+
6
+ # microduck-bow
7
+
8
+ Révérence pour le Microduck (Pollen Robotics). Politique épisodique pilotée en phase (cycle 10 s, geste 6.1 s, coupure à 7 s),
9
+ entraînée avec `pollen-robotics/microduck_rl` (tâche maison `Mjlab-Bow-Flat-MicroDuck`).
10
+
11
+ Geste : descente du bec jusqu'au sol, contact léger, relevé de 2 cm, tête à 85° à gauche et
12
+ retour, plié des genoux, remontée.
13
+
14
+ ## Installation sur le robot
15
+
16
+ Politique en encodage `phase` : elle se charge dans le slot `ground_pick` (le bouton du ground
17
+ pick la déclenche), pas comme skill (`policy add` refuse les encodages non constants).
18
+
19
+ ```
20
+ sudo robotctl policy load ground_pick <user>/microduck-bow
21
+ ```
22
+
23
+ Retour au ground pick officiel : `sudo robotctl policy reset ground_pick`.
24
+
25
+ Le daemon pilote la phase avec la période de `robotd.toml` et rend la main à φ = 0.7 (valeur du
26
+ set officiel, non réglable). La politique est entraînée sur un cycle de 10 s dont le geste occupe
27
+ les 6.1 premières secondes : avec `ground_pick_period = 10.0`, la coupure tombe à 7 s, après la
28
+ remontée.
29
+
30
+ ```
31
+ sudo robotctl policy load ground_pick <user>/microduck-bow
32
+ # puis dans /etc/robot/robotd.toml : ground_pick_period = 10.0
33
+ ```
34
+
35
+ ## Répétition en simulation
36
+
37
+ ```
38
+ uv run scripts/infer_policy.py --walking alpha_walking.onnx --standing alpha_stand.onnx \
39
+ --ground-pick policy.onnx --ground-pick-period 10.0 --ground-pick-end-phase 0.7 --new-cmd-obs
40
+ ```
manifest.json ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 2,
3
+ "model_api": 1,
4
+ "obs_len": 61,
5
+ "action_len": 14,
6
+ "robot": {
7
+ "model": "microduck",
8
+ "hw_rev": 1,
9
+ "servos": "xl330",
10
+ "control_hz": 50
11
+ },
12
+ "name": "bow",
13
+ "kind": "episodic",
14
+ "duration_s": 7.0,
15
+ "chain": false,
16
+ "entry_pose": "standing",
17
+ "slot": "ground_pick",
18
+ "description": "Révérence : descend le bec jusqu'au sol (contact léger ~1.4 N), le décolle de 2 cm, tourne la tête de ~84° à gauche et revient, plie les genoux (~60°), puis se relève. Geste de 6.1 s sur un cycle de phase de 10 s ; le daemon rend la main à φ = 0.7 (7 s), après la remontée. À charger dans le slot ground_pick avec ground_pick_period = 10.0 dans robotd.toml, pas comme skill.",
19
+ "command": {
20
+ "encoding": "phase",
21
+ "slots": "twist.vx,twist.vy",
22
+ "period_s": 10.0,
23
+ "end_phase": 0.7,
24
+ "idle": [
25
+ 0.0,
26
+ 0.0,
27
+ 0.0
28
+ ],
29
+ "twist": "[cos 2πφ, sin 2πφ, 0], φ de 0 à 1 sur 10 s (segments : descente 0-0.15, contact 0.15-0.18, relevé 0.18-0.21, rotation 0.21-0.31, retour 0.31-0.41, plié 0.41-0.46, remontée 0.46-0.61, repos 0.61-1.0 ; coupure daemon à 0.7)",
30
+ "head": "unused (zeros)",
31
+ "body": "unused (zeros)"
32
+ },
33
+ "training": {
34
+ "task_id": "Mjlab-Bow-Flat-MicroDuck",
35
+ "repo": "pollen-robotics/microduck_rl",
36
+ "commit": "b02fdea49",
37
+ "branch": "develop",
38
+ "dirty": true,
39
+ "run": "logs/rsl_rl/bow/2026-10-27_17-35-33_v7_resume (wandb offline, local)",
40
+ "checkpoint": 748,
41
+ "source_file": "model_748.pt",
42
+ "exported": "2026-10-27T16:50:00Z",
43
+ "lineage": "v6_resume/model_748 -> v7_period10 (warm start, période 10 s) -> v7_resume (250 it., yaw_std 0.12)"
44
+ },
45
+ "eval": {
46
+ "sim": "mjlab 1.3.0 / MuJoCo Warp, BAM XL330, scripts/bow_eval.py, 256 envs x 20 s, sans poussées",
47
+ "falls": "0 %",
48
+ "beak_contact": "100 % des cycles, force moyenne 1.46 N (bande 0.3-2 N 94 % du temps)",
49
+ "head_yaw_max_deg": 83.8,
50
+ "knees_end_of_crouch_deg": [
51
+ 60.7,
52
+ -59.0
53
+ ],
54
+ "trunk_tilt_at_contact_deg": 36,
55
+ "note": "lignée v1 -> v2 (plafond force, pieds stricts, cible glissante) -> v4 (bande de force) -> v5 (sans second contact) -> v6 (plié des genoux) -> v7 (période 10 s pour la coupure du daemon à 0.7)"
56
+ }
57
+ }
policy.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:71e606f1ede3cf8a7b4070e0228947aab93c35f1c836321eb0386b7bb8b0c497
3
+ size 793739