Skip to content
控制接口示例

控制接口示例#

P7 的控制调用按“确认状态、取得控制权、切换模式、发送目标、确认完成、切回 idle、释放控制权” 组织。省略其中任一步,都可能让命令被拒绝或让应用误判机械臂是否已经完成运动。

不发送运动目标#

控制模式中的只读示例只创建客户端并读取 ServiceState,不会申请控制权、切换模式或发送运动目标。第一次接入应先运行该示例,确认能够区分 fsm_statecontroller_state

单次关节目标#

关节运动提供一份可运行的 gRPC 示例。它从当前关节反馈 构造目标,只让 J7 向零位变化最多 0.03 rad,并在发送前要求操作员确认。示例的状态检查和资源释放 路径已使用 fake client 测试;具体工位、工具和真机运动仍需现场复核。

笛卡尔和 EEF 输入检查#

笛卡尔运动提供只读预览脚本。它检查当前末端位姿的有限值和 单位四元数,构造一个不发送的 m 制目标,并读取 EEF 模式和型号。当前版本仍存在笛卡尔 planning 起点回退问题;线性 EEF 的 SDK 位置/速度单位已统一,但该只读示例仍不会申请控制权或调用运动方法。

路点的数据结构与逐段数量检查见路点运动

控制代码的基本结构#

下面的结构不会自行发送运动目标。实际调用还要按对应接口页补充状态、单位、限位和完成判据。

from arm_p7_sdk import AirbotClient, Controller

with AirbotClient(
    host="P7_IP_ADDRESS",
    port=50071,
    client_name="my-p7-controller",
) as client:
    if not client.acquire_control(lease_ms=15_000, renew_period_s=5.0):
        raise RuntimeError("无法获取控制权")

    mode_selected = False
    try:
        # 完成安全检查后,按任务切换模式并发送目标。
        pass
    finally:
        if mode_selected:
            client.switch_controller(Controller.idle, timeout_ms=5_000)
        client.release_control()

release_control() 不会停止已经接受的规划轨迹。只有确认运动已经完成或停止后,才能执行正常释放。 异常运动时应按停止和异常处理执行现场急停流程。

接口参考#