⚙ 开发指南
> SDK
> 概念指南
控制模式说明#
控制模式决定 P7 如何处理后续运动命令。模式切换需要服务可用和控制权;切换成功后仍应读取
ServiceState.fsm_state 确认实际状态。
模式选择#
| SDK 模式 | 对应 FSM 状态 | 适用任务 | 主要限制 |
|---|---|---|---|
Controller.idle |
IDLE |
任务开始前或结束后的空闲状态 | 不接受普通运动目标 |
Controller.planning_control |
PLANNING_CONTROL |
PTP、LIN、CIRCLE、OMPL 和路点规划 | 规划成功与执行完成是不同阶段 |
Controller.servo_control |
SERVO_CONTROL |
连续关节或末端位姿目标 | 应保持稳定发送节拍并准备主动停止流程 |
Controller.mit_control |
FORCE_CONTROL |
经专项验证的低层 MIT 关节控制 | 需要与负载、安装和整机版本匹配的参数 |
enter_gravity_compensation_mode() |
GRAVITY_COMPENSATION |
人工拖动和示教 | 不属于 Controller 枚举,机械臂可在外力作用下移动 |
线协议中仍可能观察到 POSITION_CONTROL,但当前 Python SDK 没有对应的公开 Controller 成员。
不要根据状态名构造未公开的直接位置控制命令。
切换并确认#
from arm_p7_sdk import Controller
if not client.switch_controller(Controller.planning_control, timeout_ms=5000):
raise RuntimeError("无法进入 planning_control")
state = client.get_service_state()
if state is None or state.fsm_state != "PLANNING_CONTROL":
raise RuntimeError("尚未确认 PLANNING_CONTROL")
controller_state 是服务报告的底层控制器名称,不能代替 fsm_state。SDK 本地保存的模式也可能因
外部切换、重力补偿或状态缓存延迟而与实际 FSM 不同。
MIT 与重力补偿需要额外安全检查
MIT 参数会进入低层命令;重力补偿会让机械臂在外力作用下移动。没有与当前负载和整机版本匹配 的参数时不要进入 MIT。进入重力补偿前清空运动范围、托住机械臂,并确保实体急停可立即操作。
模式枚举和确认方式见控制模式(Controller),接口入口见 API 接口总览。