跳到主要内容

上半身遥操作任务状态

上半身遥操作任务状态运行 upper_body_tele_task,将外部关节、末端执行器和轮式底盘命令转发到 GR-W。

状态明细​

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

手柄控制​

进入上半身遥操作任务状态​

初始化 AuroraCore 后,同时按下肩键 RB 和按钮 B 进入上半身遥操作任务状态。

客户端控制​

速度控制站姿控制关节控制关节参数控制
是否腰部、头部、双臂、末端执行器否

进入上半身遥操作任务状态​

set_fsm_state() 返回 True 仅代表受理,应回读确认。状态 4 下 get_upper_fsm_state() 为 0(Default);set_upper_fsm_state() 在状态 3/4 下均返回 False,不要用它替代整机状态切换。

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(4):
raise RuntimeError("状态切换请求未受理")
deadline = time.monotonic() + 4.0
while client.get_fsm_state() != 4:
if time.monotonic() >= deadline:
raise RuntimeError("未切换到 upper_body_tele_task")
time.sleep(0.05)
print(f"after: {client.get_fsm_state()} ({client.get_fsm_name()})")
finally:
client.close()

关节控制​

可通过 set_group_cmd 发送位置、速度和力矩命令。每条命令必须包含对应控制组的全部关节。

命令需要连续流式发送

upper_body_tele_task 期望连续的关节命令流(推荐 100 Hz)。停止发送后,未被命令的关节会因重力缓慢下垂(1 s 内可达 0.09 rad):要么持续回发全部受控组的目标位置,要么尽快切回状态 3。get_group_motion_state() 在流式命令期间保持 0(idle),不能用于判断运动完成。

可用控制组: waist、head、left_manipulator、right_manipulator

末端执行器: left_end_effector、right_end_effector

危险

waist 有 5 个自由度。腰部安全默认位置是 [-1.25, 2.15, -0.918, 0, 0],禁止将腰部全部回零。