snake-rl-sdc β€” Snake Robot Locomotion Checkpoints (SDC line)

PPO policy checkpoints for the SDC (serpenoid curve control) snake-robot research line, trained in IsaacLab with rsl_rl. This repository is the single archive for the whole line: one directory per training round, each holding the final checkpoints together with the exact env.yaml / agent.yaml they were trained with.

Rounds

Round Date Task Summary
sdc3d20_20260727/ 2026-07-27 Uniteboa-SDC3D20-AllTerrains-v0 First 12D 3D-SDC policies on the 20-DoF snake, 8-family terrain grid: att-OFF vs att-ON

Round sdc3d20_20260727 β€” 3D Serpenoid Curve Control for a 20-DoF Snake Robot

Originally published as snake-rl-sdc3d20-20260727; renamed into this repository on 2026-07-27 (the old URL redirects here).

Two PPO policies trained in IsaacLab on a 20-DoF snake robot with a 12-dimensional 3D SDC action space (yaw + pitch amplitude groups, shared Gaussian window, inter-plane phase offset). Both were trained for 3000 iterations at 4096 environments over a single 160-tile terrain grid covering 8 families.

Code commit: cb903bf on branch feature/sdc3d-action-space.

Contents

sdc3d20_20260727/attoff/model_2999.pt     attitude penalties disabled  (roll_rate = 0.0,  vz = 0.0)
sdc3d20_20260727/attoff/env.yaml          environment config as run
sdc3d20_20260727/attoff/agent.yaml        PPO config as run
sdc3d20_20260727/atton/model_2999.pt      attitude penalties enabled   (roll_rate = -1.0, vz = -3.0)
sdc3d20_20260727/atton/env.yaml
sdc3d20_20260727/atton/agent.yaml

The two runs are identical except for those two scalars: same seed (42), same task Uniteboa-SDC3D20-AllTerrains-v0, same 4096 environments, same 3000 iterations, progress_cap_to_cmd = true in both.

Action space

12 continuous dimensions per step:

index meaning
0:3 Gaussian group centres along the body
3:6 yaw-plane amplitude weights
6:9 pitch-plane amplitude weights
9 window width sigma
10 yaw offset kappa, used for turning
11 yaw/pitch phase offset phi

Joint targets follow a travelling serpenoid wave. Even joints are yaw, odd joints are pitch. The pitch plane reuses the same Gaussian amplitude map as yaw, so the existing sdc_basis ablation applies identically to both planes. phi = +/- pi/2 corresponds to sidewinding, phi = 0 to sinus lifting.

Evaluation

4096 environments, 2000 steps, measurement window [200, first reset), net progress projected onto the spawn heading. The 2D column is the previous 8-dimensional SDC champion, measured under the same protocol at command -0.035 m/s.

Fleet mean net progress over 36 s at command -0.035 m/s:

att-OFF att-ON 2D baseline
net progress (m) 3.380 0.234 1.078
fleet dz (m) -0.455 +0.026 +0.002
body path length (m) 30.51 25.51 6.29
3D/2D path ratio 1.025 1.006 1.008
stationary environments 0.6 % 22.6 % 0.8 %
command gain dv/dcmd -0.04 +0.18 +0.453
pitch amplitude collapsed 0.0 % 100 % n/a

Per family, restricted to the families where the comparison was verified directly:

terrain family dz (m) att-OFF (m) 2D baseline (m) ratio
tr07 flat -0.001 3.193 0.756 4.2x
tr06 inverted slope -0.006 3.080 0.779 4.0x
tr02 inverted stairs +0.004 1.007 0.394 2.6x
tr08 pole forest +0.033 0.406 2.657 0.15x, regression

Fleet speed against commanded speed:

command (m/s) att-OFF speed att-ON speed
-0.020 0.0959 0.0103
-0.035 0.0940 0.0065
-0.050 0.0971 0.0049

Honest limitations

Neither policy is a clean win.

att-ON collapsed. The pitch amplitude weight sits at -1.56 with 100 percent of environments at the lower bound, and the yaw amplitude collapsed as well, to -1.68. The policy froze rather than reverting to a 2D gait; 68.6 percent of environments on stairs are completely stationary, and fleet progress falls below the 2D baseline. Penalising vertical velocity removes the very mechanism 3D locomotion depends on. Roll rate is the tumbling-exploit channel and should be penalised separately from vz.

att-OFF is command-blind and partly gravity-assisted. Speed is essentially constant across three different commanded speeds, so the policy does not track the command at all. On stairs it descends 2.638 m in 36 s and on slopes 0.844 m, so a substantial part of the headline progress is falling rather than locomotion.

The defensible 3D gain is narrow but real: on flat ground, where no descent is available, att-OFF reaches 3.193 m against 0.756 m for 2D at dz = -0.001. Pole forest regresses to 0.406 m against 2.657 m, so lifting destroys the pole-contact propulsion the 2D gait relies on.

Both policies keep |phi| > 0.7 at 0.0 percent of environments, att-OFF averaging 0.44 rad, so the gain does not come from sidewinding but from a mild yaw/pitch phase offset, morphologically closer to sinus lifting combined with lateral undulation.

Efficiency is worse in 3D: att-OFF spends 30.5 m of body path for 3.38 m of net displacement (11 percent), against 6.29 m for 1.078 m (17 percent) in 2D.

Single seed (42) per arm. No seed replication was run.

Simulation setup

IsaacLab / Isaac Sim 5.1, direct RL environment, rsl_rl PPO. Isotropic friction (static = dynamic = 0.2, combine mode min), no passive wheels, scales or anisotropy. Control step 0.02 s (decimation 4, sim dt 1/200), episode 2000 steps or 40 s.

Citation

Adaptive Learning System Control Laboratory, Okayama University.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading