跳到主要内容

GRW 策略任务状态

GRW 策略任务状态运行 grw_policy_task,用于控制轮式底盘、腰部、双臂和末端执行器。

状态明细​

状态名称任务名称手柄映射DDS 映射频率
UserController_Agrw_policy_taskRB+A350Hz
可用于悬挂可用于站立自动保护切换
否是否

手柄控制​

进入 GRW 策略任务状态​

初始化 AuroraCore 后,同时按下肩键 RB 和按钮 A 进入 GRW 策略任务状态。

速度控制​

使用左右摇杆控制轮式底盘的前后、横向和偏航速度。

站姿控制​

使用方向键调整策略任务的高度和俯仰输入。

客户端控制​

速度控制站姿控制关节控制关节参数控制
是当前部署不生效腰部、双臂、末端执行器否

进入 GRW 策略任务状态​

set_fsm_state() 返回 True 仅代表受理;状态反馈通常在约 50 ms 内更新,仍应回读确认。

Python
import os
import time

os.environ.setdefault("FASTDDS_BUILTIN_TRANSPORTS", "UDPv4") # 机器人上运行必须设置

from fourier_aurora_client import AuroraClient

client = AuroraClient.get_instance(domain_id=123, robot_name="grw")
try:
time.sleep(1.0)
print(f"before: {client.get_fsm_state()} ({client.get_fsm_name()})")
if not client.set_fsm_state(3):
raise RuntimeError("状态切换请求未受理")
deadline = time.monotonic() + 4.0
while client.get_fsm_state() != 3:
if time.monotonic() >= deadline:
raise RuntimeError("未切换到 grw_policy_task")
time.sleep(0.05)
print(f"after: {client.get_fsm_state()} ({client.get_fsm_name()})")
finally:
client.close()

速度控制​

Python
import os
import time

os.environ.setdefault("FASTDDS_BUILTIN_TRANSPORTS", "UDPv4") # 机器人上运行必须设置

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_velocity_source(2):
raise RuntimeError("速度源切换请求未受理")
deadline = time.monotonic() + 2.0
while client.get_velocity_source() != 2:
if time.monotonic() >= deadline:
raise RuntimeError("速度源未切换到 Navigation")
time.sleep(0.05)

client.set_velocity(0.2, 0.0, 0.0, 2.0) # 前进 0.2 m/s,2 s 后自动停止
time.sleep(2.0)
client.set_velocity(0.0, 0.0, 0.0, 1.0) # 显式停止
finally:
client.set_velocity(0.0, 0.0, 0.0, 1.0) # 兜底零速度
client.set_velocity_source(0) # 交还手柄控制
client.close()

站姿控制​

当前部署不消费站姿偏移命令:set_stand_pose() 可发布但无姿态变化,读数保持零(详见站立姿态)。高度/俯仰请使用手柄方向键。

Python
import os
import time

os.environ.setdefault("FASTDDS_BUILTIN_TRANSPORTS", "UDPv4") # 机器人上运行必须设置

from fourier_aurora_client import AuroraClient

client = AuroraClient.get_instance(domain_id=123, robot_name="grw")
try:
time.sleep(1.0)
client.set_stand_pose(0.0, 0.0, 0.0) # 零偏移(当前部署下唯一可用的取值)
print(f"stand pose: {client.get_stand_pose()}")
finally:
client.close()

关节控制​

通过 set_group_cmd 发送完整控制组命令。控制腰部时必须发送 5 个关节值;安全默认位置为 [-1.25, 2.15, -0.918, 0, 0],不要将腰部全部设为 0。

可用控制组: waist、left_manipulator、right_manipulator

末端执行器: left_end_effector、right_end_effector