GRW 策略任务状态
GRW 策略任务状态运行 grw_policy_task,用于控制轮式底盘、腰部、双臂和末端执行器。
状态明细
| 状态名称 | 任务名称 | 手柄映射 | DDS 映射 | 频率 |
|---|---|---|---|---|
| UserController_A | grw_policy_task | RB+A | 3 | 50Hz |
| 可用于悬挂 | 可用于站立 | 自动保护切换 |
|---|---|---|
| 否 | 是 | 否 |
手柄控制
进入 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