| name | pace |
| description | Paces back and forth in place by translating forward, turning around, and coming back via a looping sequence of root frames. Use when a command mentions pace, pacing, pace back and forth, walk back and forth, pace nervously, or wear a path walking to and fro. |
| category | locomotion |
| disable-model-invocation | true |
| subskills | ["walk","turn-and-face"] |
pace
Walk forward, turn around, walk back — repeat. This uses a looping sequence whose root frames RETURN to the start each cycle (so the ABSOLUTE root values stay consistent across loops).
How
- Use a
sequence with loop:true (or a count). Plan the frames so the final frame lands back at the starting z/faceDeg — then each loop is self-consistent (advance to z:d facing 0, flip faceDeg:180, return to z:0, flip back to 0).
- Compute the forward axis from
state.position+state.faceDeg (here origin facing +Z, so it walks to z:2 and back to z:0).
- Add light alternating steps on the travel frames; keep
durationMs long (~4000–4800) so it reads as deliberate pacing.
Example
- "pace back and forth" (at x:0,z:0,faceDeg:0) ->
{"durationMs":4400,"say":"Hmm, let me think...","sequence":{"loop":true,"frames":[{"t":0,"pose":{"LeftUpLeg":[35,0,0],"LeftLeg":[40,0,0]},"root":{"z":0,"faceDeg":0}},{"t":0.4,"pose":{"RightUpLeg":[35,0,0],"RightLeg":[40,0,0],"LeftUpLeg":[0,0,180],"LeftLeg":[0,0,0]},"root":{"z":2,"faceDeg":0}},{"t":0.5,"pose":{"RightUpLeg":[0,0,180],"RightLeg":[0,0,0]},"root":{"z":2,"faceDeg":180}},{"t":0.9,"pose":{"LeftUpLeg":[35,0,0],"LeftLeg":[40,0,0]},"root":{"z":0,"faceDeg":180}},{"t":1,"pose":{"LeftUpLeg":[0,0,180],"LeftLeg":[0,0,0]},"root":{"z":0,"faceDeg":0}}]}}