跳转至
⚙ 开发指南 > SDK > API > 数据结构

控制模式(Controller)#

Controllerarm_p7_sdk 顶层导出的控制模式枚举。它用于 switch_controller();枚举名称与 ServiceState.fsm_state 的显示名称并非全部相同。

可用的控制模式#

from arm_p7_sdk import Controller
枚举成员 预期 FSM 状态 用途
Controller.idle IDLE 不再接受普通运动目标;任务结束后切回空闲
Controller.planning_control PLANNING_CONTROL 规划并执行 PTP、LIN、CIRCLE、OMPL 或路点轨迹
Controller.servo_control SERVO_CONTROL 接收连续或单个 Servo 目标
Controller.mit_control FORCE_CONTROL 接收经过专项验证的低层 MIT 关节命令

重力补偿通过 enter_gravity_compensation_mode() 进入,不是 Controller 成员。线协议中的 POSITION_CONTROL 也没有对应的公开 Python 枚举成员。

使用规则#

调用 switch_controller() 前应显式取得控制权。方法返回 True 后,再读取 ServiceState.fsm_state 确认实际状态;不要用 controller_state 或 SDK 本地缓存代替 FSM 确认。

if not client.switch_controller(Controller.servo_control, timeout_ms=5000):
    raise RuntimeError("控制模式切换失败")

state = client.get_service_state()
if state is None or state.fsm_state != "SERVO_CONTROL":
    raise RuntimeError("尚未确认 SERVO_CONTROL")

各模式的命令行为、安全要求和后端等待差异见控制模式说明API 接口总览