> ## Documentation Index
> Fetch the complete documentation index at: https://docs.generalrobotics.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Legged Movement

Quadrupeds use `airgen.LeggedClient`. The current GRID builds ship with the Ghost V60 and Unitree Go2 models. Commands operate in world or body frames depending on the helper you choose.

```python theme={null}
import airgen

client = airgen.LeggedClient()
client.enableApiControl(True, robot_name="quadruped0")
client.armDisarm(True, robot_name="quadruped0")
```

## moveByVelocityAsync

Command body velocities in the world frame. Positive Z moves downward; use negative values to step upward.

```python theme={null}
client.moveByVelocityAsync(
    vx=1.0,
    vy=0.0,
    vz=0.0,
    duration=2.5,
    yaw_rate=45.0,
    robot_name="quadruped0",
).join()
```

## moveByVelocityBodyFrameAsync

Walk relative to the torso orientation with the body-frame helper. This is especially useful when the quadruped is dynamically reorienting while tracking a path.

```python theme={null}
client.moveByVelocityBodyFrameAsync(
    vx=0.6,   # forward pace in the robot's frame
    vy=0.2,   # sidestep to the right relative to the torso
    vz=0.0,
    duration=3.0,
    yaw_rate=30.0,
    robot_name="quadruped0",
).join()
```

Use `moveByVelocityBodyFrameAsyncV()` when you already have a `Vector3r` velocity vector.
