Skip to main content

Stand Pose

set_stand_pose()​

Python
set_stand_pose(delta_z: float, delta_pitch: float, delta_yaw: float)

Sets stand-pose inputs for the GR-W policy task. Only effective in grw_policy_task (state 3); calls in other states have no effect.

The current GR-W deployment does not consume stand-pose offsets

The current GR-W deployment does not run a PdStand-type task that consumes stand-pose offset commands. Sending a non-zero offset such as set_stand_pose(-0.02, 0.0, 0.0) in state 3 publishes without error, but get_stand_pose() keeps returning [0.0, 0.0, 0.0, 0] and no posture change occurs. Do not use it for base height, pitch, or yaw control; adjust height/pitch with the joystick D-pad (policy task inputs).

ParameterTypeDescription
delta_zfloatHeight offset (m), negative lowers the center of gravity
delta_pitchfloatPitch angle offset (rad), positive leans forward
delta_yawfloatYaw angle offset (rad), positive turns left

Use the limits configured by grw_policy_task on the robot.

Example

Python
import os
import time

os.environ.setdefault("FASTDDS_BUILTIN_TRANSPORTS", "UDPv4") # required on the robot

from fourier_aurora_client import AuroraClient

client = AuroraClient.get_instance(domain_id=123, robot_name="grw")
try:
time.sleep(1.0)
if not client.set_fsm_state(3):
raise RuntimeError("state change request not accepted")
deadline = time.monotonic() + 4.0
while client.get_fsm_state() != 3:
if time.monotonic() >= deadline:
raise RuntimeError("did not switch to grw_policy_task")
time.sleep(0.05)

client.set_stand_pose(0.0, 0.0, 0.0) # zero offset (only usable value in the current deployment)
print(f"stand pose: {client.get_stand_pose()}, stable: {client.get_stable_level()}")
finally:
client.close()

get_stand_pose()​

Python
get_stand_pose() -> list[float]

Returns the current stand pose data as [delta_z, delta_pitch, delta_yaw, stable_level]. In the current GR-W deployment the three offsets stay 0.0 and do not mirror the set_stand_pose() command value.

IndexDescription
[0]Current height offset delta_z (m)
[1]Current pitch offset delta_pitch (rad)
[2]Current yaw offset delta_yaw (rad)
[3]Stability level (see get_stable_level())

get_stable_level()​

Python
get_stable_level() -> bool

Returns whether the stability-level service request succeeded: True on success, False when no successful response arrives. The current implementation does not return a numeric stability level; read element 4 of get_stand_pose() for the numeric value instead.