28. 跳转至

28. 接口总览#

AirbotClient为AIRBOT Play SDK的统一入口类,提供机械臂的控制与状态查询API接口实现。

功能 子功能 接口 参数说明
初始化 初始化并连接机械臂服务端 init(self, host: str = "localhost", port: int = 50051, arm_dof: int = 6) -> None - host:服务端ip地址
- port:服务端端口
- arm_dof:机械臂的自由度
GRPC控制权接口 获取服务端控制服务权限 acquire_control(lease_ms: int = 15000, renew_period_s: float = 5.0) -> bool - 功能:获取服务端控制服务句柄,使得客户端可以控制机械臂进行运动
- lease_ms:向服务端申请的“独占控制权”的有效期/租约时长
- renew_period_s:客户端在后台自动“续租/续约”的周期/频率
- 返回:若成功获取句柄,返回 True,反之则返回 False
释放服务端控制服务权限,变为只读状态 release_control() -> None - 功能:释放服务端控制服务句柄,使得客户端只能读取机械臂状态信息,而不能控制
关闭客户端连接,释放客户端相关资源 close() -> None - 功能:对客户端做一次安全收尾清理,释放线程、控制权和网络资源,让客户端安全退出
数据反馈获取接口 获取当前机械臂关节数据 get_arm_joint_state() -> Optional[ArmJointState] - 功能:获取机械臂关节的当前状态
- 返回:若成功获取,则返回 ArmJointState 结构数据(参考 机械臂状态),包含位置、速度、电流的关节状态对象;若获取失败,则返回 None
获取当前机械臂电机数据 get_arm_motor_state() -> Optional[ArmMotorState] - 功能:获取机械臂电机的当前状态
- 返回:若成功获取,则返回 ArmMotorState 结构数据(参考 机械臂状态),包含电机温度、MOS管温度和错误码的电机状态对象;若获取失败,则返回 None
获取当前末端执行器关节数据 get_eef_joint_state() -> Optional[EEFJointState] - 功能:获取末端执行器关节的当前状态
- 返回:若成功获取,则返回 EEFJointState 结构数据(参考 末端执行器状态),包含位置、速度、电流的关节状态对象;若获取失败,则返回 None
获取当前末端执行器电机数据 get_eef_motor_state() -> Optional[EEFMotorState] - 功能:获取末端执行器电机的当前状态
- 返回:若成功获取,则返回 EEFMotorState 结构数据(参考 末端执行器状态),包含电机温度、MOS管温度和错误码的电机状态对象;若获取失败,则返回 None
获取当前机械臂末端的笛卡尔空间位姿 get_end_pose() -> Optional[CartesianPose] - 功能:获取当前机械臂末端的笛卡尔空间位姿
- 返回:若成功获取,则返回 CartesianPose 结构数据(参考 末端位姿),包含位置和姿态的状态对象;若获取失败,则返回 None
获取当前机械臂服务端的运行状态 get_service_state() -> Optional[ServiceState] - 功能:获取当前机械臂服务端的运行状态
- 返回:若成功获取,则返回 ServiceState 结构数据(参考 服务端状态),包含服务端运行状态、服务端状态机状态和服务端控制器状态的数据对象;若获取失败,则返回 None
获取当前机械臂固件信息 get_firmware_info(self) -> Optional[ArmFirmwareInfo] - 功能:获取当前机械臂的固件信息
- 返回:若成功获取,则返回 ArmFirmwareInfo 结构数据(参考 固件信息),包含固件类型、SN码和固件版本等数据;若获取失败,则返回 None
客户端参数设置接口 设置机械臂关节的最大运动速度 set_arm_speed(self, arm_speed: list[float]) -> bool - 功能:设置机械臂电机最大运行速度
- arm_speed:电机最大运行速度(0 到 2.0 * pi)
- 返回:是否设置成功
机械臂控制接口 设置机械臂控制器(需要控制权) switch_controller(controller: Controller, timeout_ms: int = 1000) -> bool - 功能:设置机械臂控制器类型
- controllerController 类型的控制器名称(参考 控制器
- timeout_ms:超时时间,单位 ms
- 返回:若成功设置,则返回 True,否则返回 False
进入重力补偿模式(需要控制权) enter_gravity_compensation_mode(timeout_ms: int = 1000) -> bool - 功能:进入重力补偿模式,可通过调用 switch_controller 接口切换到别的控制器退出该模式
- timeout_ms:超时时间,单位 ms
- 返回:若成功设置,则返回 True,否则返回 False
机械臂关节空间控制(需要控制权) move_joint(pos: list[float], options: ArmControlOptions, timeout_ms: int = 1000) -> bool - 功能:机械臂关节空间控制
- pos:机械臂各个电机的目标关节空间位置(关节位置限制参考 关节限位值说明
- optionsArmControlOptions 数据类型的控制参数(参考控制选项),各控制模式的必需参数参见控制模式说明
- timeout_ms:超时时间,单位 ms
- 返回:若成功发送控制指令,则返回 True,否则返回 False
末端执行器关节空间控制(需要控制权) move_eef(pos: float, options: ArmControlOptions, timeout_ms: int = 1000) -> bool - 功能:末端执行器关节空间控制(关节位置限制参考 关节限位值说明
- pos:末端执行器的目标关节空间位置
- optionsArmControlOptions 数据类型的控制参数(参考控制选项),各控制模式的必需参数参见控制模式说明
- timeout_ms:超时时间,单位 ms
- 返回:若成功发送控制指令,则返回 True,否则返回 False
机械臂笛卡尔空间控制(需要控制权) move_end_pose(pos: CartesianPose, options: ArmControlOptions, timeout_ms: int = 1000) -> bool - 功能:机械臂笛卡尔空间控制
- pos:数据结构为 CartesianPose 的机械臂目标末端位姿(参考 末端位姿
- optionsArmControlOptions 数据类型的控制参数(参考 控制选项),各个控制模式的必需参数参见 控制模式说明
- timeout_ms:超时时间,单位 ms
- 返回:若成功发送控制指令,则返回 True,否则返回 False
机械臂笛卡尔空间直线轨迹规划控制(需要控制权) move_end_pose_linear(start: CartesianPose, target: CartesianPose, options: ArmControlOptions, timeout_ms: int = 1000) -> bool - 功能:机械臂笛卡尔空间直线轨迹规划控制
- start:数据结构为 CartesianPose 的机械臂起始末端位姿(参考 末端位姿
- target:数据结构为 CartesianPose 的机械臂目标末端位姿(参考 末端位姿
- optionsArmControlOptions 数据类型的控制参数(参考 控制选项),各个控制模式的必需参数参见 控制模式说明
- timeout_ms:超时时间,单位 ms
- 返回:若成功发送控制指令,则返回 True,否则返回 False
机械臂笛卡尔空间圆弧轨迹规划控制(需要控制权) move_end_pose_circle(start: CartesianPose, path: CartesianPose, target: CartesianPose, options: ArmControlOptions, timeout_ms: int = 1000) -> bool - 功能:机械臂笛卡尔空间圆弧轨迹规划控制
- start:数据结构为 CartesianPose 的机械臂起始末端位姿(参考 末端位姿
- path:数据结构为 CartesianPose 的机械臂途经点末端位姿(参考 末端位姿
- target:数据结构为 CartesianPose 的机械臂目标末端位姿(参考 末端位姿
- optionsArmControlOptions 数据类型的控制参数(参考 控制选项),各个控制模式的必需参数参见 控制模式说明
- timeout_ms:超时时间,单位 ms
- 返回:若成功发送控制指令,则返回 True,否则返回 False
机械臂关节空间多路点规划控制(需要控制权) move_joint_waypoints(waypoints: list[list[float]], options: ArmControlOptions, timeout_ms: int = 1000) -> bool - 功能:机械臂关节空间多路点规划控制
- waypoints:机械臂关节空间位置点集,关节位置限制(参考 关节限位值说明
- optionsArmControlOptions 数据类型的控制参数(参考 控制选项),各个控制模式的必需参数参见 控制模式说明
- timeout_ms:超时时间,单位 ms
- 返回:若成功发送控制指令,则返回 True,否则返回 False
机械臂笛卡尔空间多路点规划控制(需要控制权) move_end_pose_waypoints(waypoints: list[CartesianPose], options: ArmControlOptions, timeout_ms: int = 1000) -> bool - 功能:机械臂笛卡尔空间多路点规划控制
- waypoints:数据结构为 CartesianPose 的机械臂笛卡尔空间位置点集
- optionsArmControlOptions 数据类型的控制参数(参考 控制选项),各个控制模式的必需参数参见 控制模式说明
- timeout_ms:超时时间,单位 ms
- 返回:若成功发送控制指令,则返回 True,否则返回 False
机械臂重置功能 机械臂回零(需要控制权) return_zero() -> bool - 功能:机械臂各个关节回到零点
- 返回:若成功发送控制指令,则返回 True,否则返回 False
机械臂急停与恢复(急停需要控制权,恢复不需要) set_arm_emergency_stop(mode: bool) -> bool - 功能:机械臂急停与恢复
- mode:选择急停还是恢复,True 为急停模式,False 为急停后的恢复模式
- 返回:若成功发送控制指令,则返回 True,否则返回 False
清除机械臂电机错误码(需要控制权) clear_arm_motor_err() -> bool - 功能:清除机械臂电机错误码
- 返回:若成功发送控制指令,则返回 True,否则返回 False
清除末端执行器电机错误码(需要控制权) clear_eef_motor_err() -> bool - 功能:清除末端执行器电机错误码
- 返回:若成功发送控制指令,则返回 True,否则返回 False
工具类函数 utilities 子模块中,主要用于各个末端执行器之间的行程映射 def map_pendant_to_gripper(pos: float, *, from_pendant: str, to_gripper: str, clamp: bool = True) -> float - 功能:提供从示教器返回值转换到末端执行器实际控制量的映射
- pos:示教器输入值
- from_pendant:示教器类型
- to_gripper:夹爪类型
- 返回:夹爪实际控制量
- 当前支持的所有示教器和夹爪型号可参考附录

Note

轨迹规划的速度不受最大限制速度影响,轨迹规划的最大速度为 4π。

Note

末端执行器在不同控制器工况下采用的控制方式存在差异,请注意以下事项:

① 在未调用 set_arm_speedset_eef_speed 接口设置最大执行速度之前,机械臂与末端执行器的默认最大运行速度为 π / 3 rad/s。

② 当 options.blocking = False(即采用非阻塞方式调用末端执行器运动控制接口)时,正在执行的末端执行器指令可能会被控制器切换所中断。
例如,在 direct_control 控制器下发送末端执行器运动指令后,如果切换到 planning_control 控制器,则此前下发的指令将被中断。
因此,请根据任务需求合理选择是否采用阻塞执行方式。

③ 在 servo_control 控制器下进行笛卡尔空间或关节空间控制时,末端执行器的运动会受到 options.eef_pos 参数的影响。当采用 options.blocking = False 即非阻塞方式时,如果同时调用 move_end_pose(或 move_joint)与 move_eef 接口,后一个指令会中断前一个任务的执行。而 direct_control 的末端执行器控制则只接受 move_end_pose 的指令。
请务必区分 servo_controldirect_control 两种控制模式的使用方法,以避免控制冲突。