机械臂相关接口
机械臂相关的接口由如下两个类实现。您可以在 c++\include\drivers\arm 目录下找到对应的头文件以获取完整 API。
| 头文件 | 类名 | 说明 |
|---|---|---|
arm_factory.h | ArmFactory | 机械臂工厂类,用于创建不同类型的机械臂实例。 |
arm_interface.h | ArmInterface | 机械臂接口基类,定义了机械臂控制的通用接口。所有特定厂商的机械臂驱动都应该继承此类。 |
ArmFactory 类提供了三种方式创建机械臂实例,具体如下。
-
根据机械臂的厂商和名称,创建机械臂实例。
-
方法原型:
static std::shared_ptr<ArmInterface> create_arm(const std::string& arm_type,const std::string& name,const std::unordered_map<std::string, std::string>& params); -
参数说明:
参数名 类型 说明 arm_type输入参数 机械臂厂商。 name输入参数 机械臂名称,如 "left_arm"或"right_arm"。params输入参数 机械臂其他参数,如 {{"ip", "192.168.1.18"}, {"port", "8080"}}。 -
返回值:
若创建成功,则返回
ArmInterface类型的共享智能指针;否则返回nullptr。
-
-
根据机械臂参数,创建机械臂实例。
-
方法原型:
static std::shared_ptr<ArmInterface> create_arm(const ArmFactoryParam& param) -
参数说明:
参数名 类型 说明 param输入参数 机械臂相关参数,具体参见 ArmFactoryParam。 -
返回值:
若创建成功,则返回
ArmInterface类型的共享智能指针;否则返回nullptr。
-
-
根据配置文件,创建机械臂实例。
-
方法原型:
static std::shared_ptr<ArmInterface> create_arm_from_config(const std::string& config_path) -
参数说明:
参数名称 类型 说明 config_path输入参数
配置文件路径。配置文件为 JSON 文件,包含以下键值对。
{"arm_type":"xxx", # 机械臂厂商"arm_name":"left_arm", # 机械臂名称"ip": "192.168.1.18", # TCP IP 地址"port": "8080", # TCP 端口号"udp_ip": "192.168.1.102", # UDP IP 地址"udp_port": "8089", # UDP 端口号"udp_cycle": "1", # UDP 周期,以 udp_cycle*5 毫秒为周期"enable_gripper": "false" # 是否启用夹爪} -
返回值:
若创建成功,则返回
ArmInterface类型的共享智能指针;否则返回nullptr。
-
在创建机械臂实例后,您可通过如下方法与机械臂建立连接。
-
方法原型:
AbcErrorCode connect() -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
您可通过如下方法断开与机械臂的连接。
-
方法原型:
AbcErrorCode disconnect() -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
控制机械臂轨迹
Section titled “控制机械臂轨迹”控制机械臂轨迹包括控制运动和控制透传。
- 运动:包括关节空间运动、笛卡尔直线运动、笛卡尔空间运动等。
- 透传:包括角度透传和位姿透传。
关节空间运动
Section titled “关节空间运动”在关节空间中规划一条运动轨迹,使机械臂各关节运动至指定关节位置。
-
方法原型:
AbcErrorCode move_joint_position(const std::vector<AbcType>& joints,int v,int r,int trajectory_connect,int block) -
参数说明:
参数名称类型说明 joints输入参数 目标关节位置,单位为角度。其内部数据结构,请参见 AbcType。 v输入参数 规划速度和加速度占关节最大线转速和加速度的百分比,取值范围为 0~100。 r输入参数 轨迹交融半径,默认值为 0。trajectory_connect输入参数 轨迹连接标志,取值为 0或1。
-0:立即规划并执行轨迹,不与后续轨迹连接。
-1:将当前轨迹与下一条轨迹一起规划,但不立即执行。注意:在阻塞模式下,即使运动轨迹发送成功,函数也会立即返回。block输入参数 设置阻塞模式,取值为 0或1。
-0:非阻塞模式。函数在成功将运动轨迹发送至控制器后立即返回。
-1:阻塞模式。函数将等待,直到机械臂完成运动或发生错误后才返回。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
笛卡尔空间直线运动
Section titled “笛卡尔空间直线运动”在笛卡尔空间中规划一条直线运动轨迹,使机械臂沿直线运动至指定位姿。
-
方法原型:
AbcErrorCode move_cartesian_linear(const AbcPose& pose,int v,int r,int trajectory_connect,int block) -
参数说明:
参数名称类型说明 pose输入参数 目标位姿。其内部数据结构,请参见 AbcPose。 v输入参数 规划速度和加速度占关节最大线转速和加速度的百分比,取值范围为 0~100。 r输入参数 轨迹交融半径,默认值为 0。trajectory_connect输入参数 轨迹连接标志,取值为 0或1。
-0:立即规划并执行轨迹,不与后续轨迹连接。
-1:将当前轨迹与下一条轨迹一起规划,但不立即执行。注意:在阻塞模式下,即使运动轨迹发送成功,函数也会立即返回。block输入参数 设置阻塞模式,取值为 0或1。
-0:非阻塞模式。函数在成功将运动轨迹发送至控制器后立即返回。
-1:阻塞模式。函数将等待,直到机械臂完成运动或发生错误后才返回。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
以关节空间运动到目标位姿
Section titled “以关节空间运动到目标位姿”在关节空间中规划一条运动轨迹,使机械臂运动至指定位姿。
-
方法原型:
AbcErrorCode move_joint_pose(const AbcPose& pose,int v,int r,int trajectory_connect,int block) -
参数说明:
参数名称类型说明 pose输入参数 目标位姿。其内部数据结构,请参见 AbcPose。 v输入参数 规划速度和加速度占关节最大角速度和角加速度的百分比,取值范围为 0~100。 r输入参数 轨迹交融半径,默认值为 0。trajectory_connect输入参数 轨迹连接标志,取值为 0或1。
-0:立即规划并执行轨迹,不与后续轨迹连接。
-1:将当前轨迹与下一条轨迹一起规划,但不立即执行。注意:在阻塞模式下,即使运动轨迹发送成功,函数也会立即返回。block输入参数 设置阻塞模式,取值为 0或1。
-0:非阻塞模式。函数在成功将运动轨迹发送至控制器后立即返回。
-1:阻塞模式。函数将等待,直到机械臂完成运动或发生错误后才返回。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
角度通过 CAN FD(Controller Area Network Flexible Data-rate)透传给机械臂,不需控制器规划。若调用正确,机械臂立即执行。
-
方法原型:
AbcErrorCode move_joint_position_canfd(const std::vector<AbcType>& joints,bool follow,int trajectory_mode = 0,int radio = 0) -
参数说明:
参数名称类型说明 joints输入参数 目标关节位置,单位为角度。其内部数据结构,请参见 AbcType。 follow输入参数 设置跟随模式,取值为 true或false。
-true:高跟随。
-false:低跟随。
若使用高跟随,透传周期要求不超过 10ms。trajectory_mode输入参数
(可缺省)在高跟随模式下使用,取值为 0、1 或 2。
-0:完全透传模式。
-1:曲线拟合模式。
-2:滤波模式。radio输入参数
(可缺省)- 曲线拟合模式: radio是平滑系数,取值范围为 0~100。
- 滤波模式:radio是滤波参数,取值范围为 0~1000。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
角度透传并避障
Section titled “角度透传并避障”在 move_joint_position_canfd() 基础上,本方法增加避障功能。当机械臂可能与本体发生碰撞时,机械臂将不会执行操作。
- 方法原型:
AbcErrorCode move_joint_position_canfd_collision_avoid( const std::vector<AbcType>& arm_joints, const std::vector<AbcType>& torso_head_joints, bool follow, int trajectory_mode = 0, int radio = 0)- 参数说明:
参数名称 | 类型 | 说明 |
|---|---|---|
arm_joints | 输入参数 | 目标关节位置,单位为角度。其内部数据结构,请参见 AbcType。 |
torso_head_joints | 输入参数 | 躯干与头部关节角,单位为度。 |
follow | 输入参数 | 设置跟随模式,取值为 true 或 false。- true:高跟随。- false:低跟随。若使用高跟随,透传周期要求不超过 10ms。 |
trajectory_mode | 输入参数 (可缺省) | 在高跟随模式下使用,取值为 0、1 或 2。 - 0:完全透传模式。- 1:曲线拟合模式。- 2:滤波模式。 |
radio | 输入参数 (可缺省) | - 曲线拟合模式:radio 是平滑系数,取值范围为 0~100。 - 滤波模式:radio 是滤波参数,取值范围为 0~1000。 |
- 返回值:
AbcErrorCode::SUCCESS 表示成功;其他错误码,请参见 AbcErrorCode。
位姿通过 CAN FD(Controller Area Network Flexible Data-rate)透传给机械臂,不需控制器规划。
当目标位姿被透传到机械臂控制器时,控制器首先尝试进行逆解计算。若逆解成功且计算出的各关节角度与当前角度差异不大,则直接下发至关节执行,跳过额外的轨迹规划步骤。
这一特性适用于需要周期性调整位姿的场景,如视觉伺服等应用。
-
方法原型:
AbcErrorCode move_cartesian_pose_canfd(const AbcPose& pose,bool follow,int trajectory_mode = 0,int radio = 0) -
参数说明:
参数名称类型说明 pose输入参数 目标位姿。其内部数据结构,请参见 AbcPose。 follow输入参数 设置跟随模式,取值为 true或false。
-true:高跟随。
-false:低跟随。
若使用高跟随,透传周期要求不超过 10ms。trajectory_mode输入参数(可缺省) 在高跟随模式下使用,取值为 0、1 或 2。
-0:完全透传模式。
-1:曲线拟合模式。
-2:滤波模式。radio输入参数(可缺省) - 曲线拟合模式:radio 是平滑系数,取值范围为 0~100。
- 滤波模式:radio 是滤波参数,取值范围为 0~1000。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
关节空间跟随运动
Section titled “关节空间跟随运动”关节空间跟随运动是指在关节空间内进行实时路径规划,以实现对目标关节位置的动态跟随。
-
方法原型:
AbcErrorCode move_joint_follow(std::vector<AbcType>& joints) -
参数说明:
参数名称类型说明 joints输入参数 目标关节位置。其内部数据结构,请参见 AbcType。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
笛卡尔空间跟随运动
Section titled “笛卡尔空间跟随运动”笛卡尔空间跟随运动是指在笛卡尔空间内进行实时路径规划,以实现对目标位姿的动态跟随。
-
方法原型:
AbcErrorCode move_pose_follow(const AbcPose& pose) -
参数说明:
参数名称类型说明 pose输入参数 目标位姿。其内部数据结构,请参见 AbcPose。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
获取机械臂当前关节角度
Section titled “获取机械臂当前关节角度”-
方法原型:
AbcErrorCode get_joint_degree(std::vector<AbcType>& joints) -
参数说明:
参数名称类型说明 joints输出参数 当前关节角数据。其内部数据结构,请参见 AbcType。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
本软件包提供了一系列与机械臂相关的算法接口,包括正逆运动学求解等。
-
方法原型:
AbcErrorCode forward_kinematics(const std::vector<AbcType>& joints,AbcPose& pose) -
参数说明:
参数名称类型说明 joints输入参数 关节角数据。其内部数据结构,请参见 AbcType。 pose输出参数 正解的位姿。其内部数据结构,请参见 AbcPose。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
-
方法原型:
AbcErrorCode inverse_kinematics(const AbcPose& pose,const std::vector<AbcType>& ref_joints,std::vector<AbcType>& joints,int mode = 0) -
参数说明:
参数名称类型说明 pose输入参数 位姿。其内部数据结构,请参见 AbcPose。 ref_joints输入参数 参考的关节角度。其内部数据结构,请参见 AbcType。 joints输出参数 逆解的关节角度。其内部数据结构,请参见 AbcType。 mode输入参数(可缺省) 求解方式,取值为 0 或 1。
-0:单步求解。
-1:遍历求解。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
控制机械臂运动
Section titled “控制机械臂运动”本软件包支持对机械臂进行缓停、急停、暂停及继续等基本运动控制。
机械臂在当前正在运行的轨迹上缓慢停止。
-
方法原型:
AbcErrorCode set_arm_slow_stop() -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
机械臂在当前正在运行的轨迹上以关节最快速度停止。此操作为不可恢复的中止,无法从中断点继续执行。
-
方法原型:
AbcErrorCode set_arm_stop() -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
机械臂在当前正在运行的轨迹上暂停。此操作为可恢复的中止,支持从中断位置恢复执行。
-
方法原型:
AbcErrorCode set_arm_pause() -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
机械臂在暂停后,从中断点恢复并继续执行未完成的运动任务。
-
方法原型:
AbcErrorCode set_arm_continue() -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
设置末端生态协议模式
Section titled “设置末端生态协议模式”-
方法原型:
AbcErrorCode set_plus_mode(int mode) -
参数说明:
参数名称类型说明 mode输入参数 末端生态协议模式。
-0:禁用协议。
-9600:开启协议(波特率 9600)。
-115200:开启协议(波特率 115200)。
-256000:开启协议(波特率 256000)。
-460800:开启协议(波特率 460800)。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
本软件包提供对夹爪的全面控制,包括设置夹爪开合、抓取位置与抓取力度,并支持读取夹爪的状态。
夹爪以指定的速度运动到开口最大处。
-
方法原型:
AbcErrorCode set_gripper_release(int speed,bool block,int timeout) -
参数说明:
参数名称类型说明 speed输入参数 夹爪松开速度,取值范围为 1~1000,无单位量纲。 block输入参数 设置阻塞模式,取值为 true或false。
-true:阻塞模式,等待控制器返回夹爪到位指令。
-false:非阻塞模式,不接收夹爪到位指令。timeout输入参数 - 阻塞模式:设置等待夹爪到位的超时时间,单位为秒。
- 非阻塞模式:若设置为 0,表示发送后立即返回;若设置为其他值,表示接收设置成功指令后返回。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
夹爪以设定的速度和力夹取,当夹持力超过设定的力阈值后,停止夹取。
-
方法原型:
AbcErrorCode set_gripper_pick(int speed,int force,bool block,int timeout) -
参数说明:
参数名称类型说明 speed输入参数 夹爪开合速度,取值范围为 1~1000,无单位量纲。 force输入参数 力控阈值,取值范围为 50~1000,无单位量纲。 block输入参数 设置阻塞模式,取值为 true或false。
-true:阻塞模式,等待控制器返回夹爪到位指令。
-false:非阻塞模式,不接收夹爪到位指令。timeout输入参数 - 阻塞模式:设置等待夹爪到位的超时时间,单位为秒。
- 非阻塞模式:若设置为 0,表示发送后立即返回;若设置为其他值,表示接收设置成功指令后返回。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
持续力控夹取
Section titled “持续力控夹取”-
方法原型:
AbcErrorCode set_gripper_pick_on(int speed,int force,bool block,int timeout) -
参数说明:
参数名称类型说明 speed输入参数 夹爪开合速度,取值范围为 1~1000,无单位量纲。 force输入参数 力控阈值,取值范围为 50~1000,无单位量纲。 block输入参数 设置阻塞模式,取值为 true或false。
-true:阻塞模式,等待控制器返回夹爪到位指令。
-false:非阻塞模式,不接收夹爪到位指令。timeout输入参数 - 阻塞模式:设置等待夹爪到位的超时时间,单位为秒。
- 非阻塞模式:若设置为 0,表示发送后立即返回;若设置为其他值,表示接收设置成功指令后返回。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
控制开口位置
Section titled “控制开口位置”在夹爪到达指定位置后,若当前开口小于指定开口,夹爪以指定速度松开到指定开口位置;若当前开口大于指定开口时,夹爪以指定速度和力矩往指定开口处闭合,当夹持力超过力矩阈值或者达到指定位置后,夹爪停止。
-
方法原型:
AbcErrorCode set_gripper_position(int position,bool block,int timeout) -
参数说明:
参数名称类型说明 position输入参数 夹爪开口位置,取值范围为 1~1000,无单位量纲。 block输入参数 设置阻塞模式,取值为 true或false。
-true:阻塞模式,等待控制器返回夹爪到位指令。
-false:非阻塞模式,不接收夹爪到位指令。timeout输入参数 - 阻塞模式:设置等待夹爪到位的超时时间,单位为秒。
- 非阻塞模式:若设置为 0,表示发送后立即返回;若设置为其他值,表示接收设置成功指令后返回。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
获取夹爪状态
Section titled “获取夹爪状态”-
方法原型:
AbcErrorCode get_gripper_state(AbcGripperState* state) -
参数说明:
参数名称类型说明 state输出参数 存放夹爪状态。其内部数据结构,请参见 AbcGripperState。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
控制五指灵巧手
Section titled “控制五指灵巧手”设置灵巧手目标手势序列号
Section titled “设置灵巧手目标手势序列号”-
方法原型:
AbcErrorCode set_hand_posture(int posture_num, bool block,int timeout) -
参数说明:
参数名称类型说明 posture_num输入参数 预先保存在灵巧手内的手势序列号,取值范围为 1~40。 block输入参数 - true表示阻塞模式,等待灵巧手运动结束后返回。
-false表示非阻塞模式,发送后立即返回。timeout输入参数 设置阻塞模式下的超时时间,单位为秒。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
设置灵巧手各自由度角度
Section titled “设置灵巧手各自由度角度”灵巧手有 6 个自由度,从 1~6 分别为小拇指、无名指、中指、食指、大拇指弯曲、大拇指旋转。
-
方法原型:
AbcErrorCode set_hand_angle(const std::vector<int>& hand_angle) -
参数说明:
参数名称类型说明 hand_angle输入参数 手指角度数组,数组长度为 6,每个元素的取值范围为 0~1000。另外,-1 代表该自由度不执行任何操作,保持当前状态。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
设置灵巧手角度跟随控制
Section titled “设置灵巧手角度跟随控制”灵巧手有 6 个自由度,从 1~6 分别为小拇指、无名指、中指、食指、大拇指弯曲、大拇指旋转。
-
方法原型:
AbcErrorCode set_hand_follow_angle(const std::vector<int>& hand_angle,int block) -
参数说明:
参数名称类型说明 hand_angle输入参数 手指角度数组,数组长度为 6,角度范围由灵巧手厂商定义(例如因时的角度范围为 0~2000)。 block输入参数 等待返回超时时间,0 表示非阻塞,单位为毫秒。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
设置灵巧手位置跟随控制
Section titled “设置灵巧手位置跟随控制”灵巧手有 6 个自由度,从 1~6 分别为小拇指、无名指、中指、食指、大拇指弯曲、大拇指旋转。
-
方法原型:
AbcErrorCode set_hand_follow_pos(const std::vector<int>& hand_pos,int block) -
参数说明:
参数名称类型说明 hand_angle输入参数 手指位置数组,数组长度为 6,位置范围由灵巧手厂商定义(例如因时的位置范围为 0~1000)。 block输入参数 等待返回超时时间,0 表示非阻塞,单位为毫秒。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
设置灵巧手速度
Section titled “设置灵巧手速度”-
方法原型:
AbcErrorCode set_hand_speed(int speed) -
参数说明:
参数名称类型说明 speed输入参数 手指速度,取值范围为 1~1000。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
设置灵巧手力阈值
Section titled “设置灵巧手力阈值”-
方法原型:
AbcErrorCode set_hand_force(int hand_force) -
参数说明:
参数名称类型说明 hand_force输入参数 手指力,取值范围为 1~1000。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
配置 Modbus
Section titled “配置 Modbus”配置 Modbus RTU 模式
Section titled “配置 Modbus RTU 模式”在机械臂启动后,用户必须先调用如下方法配置 Modbus RTU 模式,才可对通信端口进行操作,否则会返回错误信息。另外,机械臂将会对用户的配置方式进行保存,机械臂重启后会自动恢复到用户断电之前配置的模式。
-
方法原型:
AbcErrorCode set_modbus_mode(int port,int baudrate,int timeout) -
参数说明:
参数名称类型说明 port输入参数 指定通信端口,取值为 0、1 或 2。
-0:控制器 RS485 端口为 RTU 主站。
-1:末端接口板 RS485 接口为 RTU 主站。
-2:控制器 RS485 端口为 RTU 从站。baudrate输入参数 波特率,支持 9600、115200 和 460800 三种常见波特率。 timeout输入参数 超时时间,单位百毫秒。对 Modbus 设备所有的读写指令,在规定的超时时间内未返回响应数据,则返回超时错误提示信息。超时时间不能为 0,若设置为 0,则机械臂按通信端口 1 进行配置。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
关闭 Modbus RTU 模式
Section titled “关闭 Modbus RTU 模式”-
方法原型:
AbcErrorCode close_modbus_mode(int port) -
参数说明:
参数名称类型说明 port输入参数 指定关闭的通信端口,取值为 0、1 或 2。
-0:控制器 RS485 端口为 RTU 主站。
-1:末端接口板 RS485 接口为 RTU 主站。
-2:控制器 RS485 端口为 RTU 从站。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
写多个寄存器
Section titled “写多个寄存器”-
方法原型:
AbcErrorCode write_registers(const PeripheralReadWriteParams& params,const std::vector<uint8_t>& data) -
参数说明:
参数名称类型说明 params输入参数 多个寄存器数据写入参数结构体。其中寄存器每次写的数量不超过 10 个,即该结构体成员 num <= 10。其内部数据结构,请参见 PeripheralReadWriteParams。data输入参数 要写入寄存器的数据数组。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
配置 UDP 主动上报
Section titled “配置 UDP 主动上报”本软件包提供机械臂状态主动上报接口。在同一局域网下,通过设置 UDP 主动上报配置,以及注册机械臂状态回调函数,即可按设定周期(默认 5ms)接收机械臂周期性状态数据。
设置 UDP 主动上报配置
Section titled “设置 UDP 主动上报配置”-
方法原型:
AbcErrorCode realtime_arm_state_set_configuration(const RealtimePushConfig& config) -
参数说明:
参数名称类型说明 config输入参数 UDP 配置。其内部数据结构,请参见 RealtimePushConfig。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
注册机械臂状态回调函数
Section titled “注册机械臂状态回调函数”-
方法原型:
void realtime_arm_state_call_back(AbcArmRealtimeStateCallback realtime_callback) -
参数说明:
参数名称类型说明 realtime_callback输入参数 当机械臂状态更新时,系统会自动调用此回调函数。 AbcArmRealtimeStateCallback为函数指针类型。其数据类型,请参见 AbcArmRealtimeStateCallback。 -
返回值:
无。
获取错误信息
Section titled “获取错误信息”-
方法原型:
AbcErrorCode get_error_flag(std::vector<uint16_t>& err_flag,std::vector<uint16_t>& brake_state) -
参数说明:
参数名称类型说明 err_flag输出参数 反馈关节错误码。 brake_state输出参数 反馈关节抱闸状态。
-1:抱闸未打开。
-0:抱闸已打开。 -
返回值:
AbcErrorCode::SUCCESS表示成功;其他错误码,请参见 AbcErrorCode。
获取机械臂名称
Section titled “获取机械臂名称”-
方法原型:
std::string get_name() const -
返回值:
机械臂名称。