locomotion·
45s
Walking, turning, posture, the dangerous stuff. The user's explicit
request is the consent: NEON looks first (take_photo), walks if the path is
clear, otherwise says the specific reason. Every walk and turn measures its
own displacement on rt/odommodestate and reports moved=true/false; the
model may only say "done" when the tool says it moved.
Robot can fall
Clear floor, operator within reach, ~500 ms stop latency. See safety.
| intent | call |
|---|---|
| walk 30 cm | g1_walk_forward(distance=0.3, speed=0.2) |
| turn 90° | g1_turn(angle_rad=1.57, yaw_rate=0.4) |
| strafe right | g1_move_velocity(vx=0, vy=0.2, vyaw=0, duration=2) |
| stop (safe) | g1_stop_move() |
| squat → stand | use_unitree("loco", "SetFsmId", {"fsm_id": 500}) |
| damp (safe) | use_unitree("loco", "SetFsmId", {"fsm_id": 1}) |
voice-driven walking, live·
Strands bidirectional speech-to-speech → g1_move_velocity → the G1 steps.
Spoken command in, motion out, in real time.
clamps·
| parameter | clamp |
|---|---|
duration (g1_move_velocity) |
0 to 10 s |
distance (g1_walk_forward) |
0.1 to 1.0 m per request |
speed (g1_walk_forward) |
0.05 to 0.5 m/s, at least 0.15 under 0.3 m |
yaw_rate (g1_turn) |
0.1 to 0.6 rad/s |
Velocities passed to g1_move_velocity are not clamped; the prompt keeps them
at 0.2 m/s and 0.3 rad/s. All three tools read rt/odommodestate before and
0.5 s after the command; moved=false means rc=0 and no displacement.
The full exchange, including a refusal, is the measured walk recipe.
safety model gestures walk recipe
Edit page