安全保护状态
安全保护状态是为机器人失控的场景准备的。进入安全保护状态时,控制器将首先将所有执行器设置为阻尼模式 2 秒,然后将所有执行器设置为零扭矩模式。用户仍然可以在零扭矩模式下读取关节状态。
某些控制器带有自动保护切换机制。当它们发现自己超出可控范围时,它们将自动切换到安全保护状态。
状态明细
| 状态名称 | 任务名称 | 手柄映射 | DDS 映射 | 频率 |
|---|---|---|---|---|
| Security Protection | SecurityProtectionTask | LT+RT | 9 | 500Hz |
| 可用于悬挂 | 可用于站立 | 自动保护切换 |
|---|---|---|
| 是 | 否 | 否 |
手柄控制
进入安全保护状态
初始化 AuroraCore 后,同时按下扳机 LT 和 RT 进入安全保护状态。
客户端控制
| 速度控制 | 站姿控制 | 关节控制 | 关节参数控制 |
|---|---|---|---|
| 否 | 否 | 否 | 否 |
进入安全保护状态
初始化 AuroraCore 后,使用 aurora 客户端的 set_fsm_state 函数进入安全保护状态。
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(9):
raise RuntimeError("状 态切换请求未受理")
time.sleep(2.5) # 阻尼 2 s 后进入零扭矩
print(f"after: {client.get_fsm_state()} ({client.get_fsm_name()})")
print(f"joints still readable: {client.get_group_state('head', key='position')}")
finally:
client.close()
GR-W 说明
- 站立的 GR-W(轮式底盘支撑)进入状态 9 后先阻尼再零扭矩,上肢/腰部关节松弛但整机由轮式底盘支撑,不会倾倒;上方"可用于悬挂/站立"表为 GR-3 沿用语义。
- 零扭矩模式下
get_group_state()仍可正常读取各关节状态(含waist、head、双臂)。 - 恢复路径
9 → 1(JointStand)→ 3(grw_policy_task):关节会重新收敛到 JointStand 目标位。恢复期间现场人员应扶稳机器人并保证急停可用。