Skip to main content
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.
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.
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.
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.