⚙ 开发指南
> SDK
> 附录
电机错误码查询#
P7 SDK 通过 ArmMotorState.error_ids 和 EEFMotorState.eef_error_id 返回原始错误整数。错误位或错误码
的含义取决于电机、固件和整机版本,因此这里不提供从其他产品复制的完整数字对照表。
先保存现场信息#
发现非零错误值后,先停止需要该设备保持健康的后续操作,并保存:
ServiceState.fsm_state、service_state和valid;- 全部机械臂或 EEF 原始错误整数,不只保存第一项;
- 对应电机温度、关节位置及速度;
ArmFirmwareInfo、Python SDK 和 Arm App 版本;- 发生时间、当时模式、负载、工具、供电、线缆和现场现象。
不要把 None 当作全零状态,也不要在记录前调用清错。
根据状态选择动作#
| 现象 | 下一步 | 不应执行 |
|---|---|---|
非零机械臂 error_ids,FSM 为 UNKNOWN_ERROR |
排除供电、线缆、负载、温度或固件所指原因;取得控制权后使用受支持的清错流程 | 无界重试或丢弃原错误码 |
| EEF 错误为非零 | 保持停止,记录 EEF 型号、模式、状态和版本,使用对应交付恢复说明 | 调用当前不受支持的 EEF 清错入口试探 |
FSM 为 IN_COLLISION |
保持停止并按碰撞恢复流程处理 | 用电机清错、普通 stop 或急停复位绕过碰撞状态 |
| 状态缺失、陈旧或无法确认停止 | 隔离现场,检查通信和服务;必要时使用实体急停 | 根据旧缓存继续控制或自动恢复 |
机械臂清错接口#
clear_error() 和 clear_arm_motor_err() 当前进入同一个 UNKNOWN_ERROR 清除路径。服务必须处于
UNKNOWN_ERROR,最新机械臂电机状态必须完整,错误原因必须已经排除,客户端还需要控制权。
清错返回 True 后仍应读取 ServiceState,确认回到 IDLE,再读取电机状态确认错误没有复现。
返回 False、超时或错误再次出现时,停止重试并保留日志和原始错误值。
clear_eef_motor_err() 虽然是公开方法,但当前 gRPC 和 DDS 后端都会抛出
UnsupportedOperationError。不要把它加入自动恢复流程。
软件急停不能替代实体急停
SDK 软件急停依赖上位机、网络和板端服务。出现意外运动、人员侵入或无法确认停止时,应由现场 人员操作实体急停,并按现场安全流程处理。
安全与恢复接口见API 接口总览;字段定义见 ArmState(机械臂状态)和 EEFState(末端执行器状态)。