- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
通讯与算法接口
1. set_receive_error_or_warnning_message_callback - 设置错误警告回调
方法: set_receive_error_or_warnning_message_callback(socket_fd: int, callback_func: function)
功能描述: 向控制器常规指令通道注册一个异步监听的回调函数(Callback)。当机械臂在运行或待机过程中触发任意红色的错误报错(Error)或黄色的警告信息(Warning)时,控制器会通过此通道实时异步推送数据,自动触发该回调方法。
参数:
socket_fd:已连接的机械臂控制器句柄,整型格式(int)。callback_func(底层输出函数指针):用户自定义的回调函数。该回调函数必须严格具备以下三个底层写入的形参:messageType:消息类型,整型(int)。通常用以区分 1(错误)与 2(警告)。message:具体的中文/英文错误或警告文本描述,字符串格式(str)。messageCode:底层的标准错误代码,整型(int)。
返回值:
bool:执行结果布尔值True:回调函数注册成功。False:注册失败。句柄无效、底层网络事件循环未就绪、接口返回错误码或触发通信异常。
使用示例:
2. get_origin_coord_to_target_coord - 正解算法
方法: get_origin_coord_to_target_coord_robot(socket_fd: int, robot_id: int, origin_coord: int, origin_pos: VectorDouble, target_coord: int, target_pos: VectorDouble)
功能描述: 调用机器人控制器内部的运动学核心矩阵算法,实现跨坐标系的空间坐标转换。该接口纯粹进行数学几何层面的正解(Forward Kinematics)、逆解(Inverse Kinematics)或基座/工具/用户系之间的坐标变换,不会引起机械臂发生真实的物理运动。
参数:
socket_fd:已连接的机械臂控制器句柄,整型格式(int)。robot_id:机器人编号,整型格式(int)。默认传 1。origin_coord:源坐标系类型代号,整型格式(int)。input_vector(底层输入参数):存放待转换坐标的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。target_coord:目标坐标系类型代号,整型格式(int)。0:关节坐标系(Joint)。数据表示为各轴的物理旋转角度(°)。1:直角坐标系 / 基座坐标系(Base)。数据表示为[X,Y,Z,RX,RY,RZ]。2:工具坐标系(Tool)。相对于当前工具中心点(TCP)的偏置坐标。3:用户坐标系(User)。相对于自定义工件基准面的相对坐标。
output_vector(底层输出参数):用于接收转换结果的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。由方法内部自动创建,并开辟 7 位空间用于承载计算结果。
返回值:
list:空间坐标结果列表[float, ...]:计算成功。返回包含 7 位双精度浮点数的标准 Python 列表(通常前 6 位为有效三维空间或角度数据)。[](空列表):计算失败。句柄无效、传入的坐标点处于机械臂运动学死锁奇异点、属于物理不可达的超限位点、接口返回非 0 错误码或触发通信异常。
使用示例:
3. get_quat2rpy - 四元数转欧拉角
方法: get_quat2rpy(socket_fd: int, quat_vector: VectorDouble, rpy_res: VectorDouble)
功能描述: 调用机器人控制器内部的姿态算法核心,将空间运动学中的四元数表达形式快速转换为人类易读、常用于直角坐标系的欧拉角(RPY / 翻滚、俯仰、偏航角)。该接口纯粹进行数学几何层面的姿态解算,不会触发机械臂产生任何物理动作。
参数:
socket_fd:已连接的机械臂控制器句柄,整型格式(int)。quat_vector(底层输入参数):存放四元数待转换数据的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。调用前须按顺序添加四位浮点数,分别代表四元数姿态的[w, x, y, z]。rpy_res(底层输出参数):用于接收欧拉角转换结果的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。由方法内部自动创建,并在调用前通过 push_back(0.0) 预先分配 3 位内存缓冲区。解算成功后,输出的 [RX, RY, RZ](弧度值 rad 格式)将顺序覆写至该容器内。
返回值:
list:欧拉角结果列表[float, float, float]:转换成功。返回包含 3 位双精度浮点数的标准 Python 列表,分别对应直角坐标系下的绕 X 轴旋转角度(RX)、绕 Y 轴旋转角度(RY)、绕 Z 轴旋转角度(RZ)。[](空列表):转换失败。句柄无效、传入的四元数不满足归一化条件(非法奇异数学矩阵)、接口返回非 0 错误码或触发通信异常。
使用示例:
4. get_rpy2quat - 欧拉角转四元数
方法: get_rpy2quat(socket_fd: int, rpy_vector: VectorDouble, quat_res: VectorDouble)
功能描述: 调用机器人控制器内部的运动学算法,将直角坐标系下人类易读的欧拉角表达形式(RPY / 翻滚、俯仰、偏航角)逆向解算为空间几何学中的四元数表达形式。该接口纯粹进行数学层面的姿态矩阵转换,不会触发机械臂产生任何物理动作。
参数:
socket_fd:已连接的机械臂控制器句柄,整型格式(int)。rpy_vector(底层输入参数):存放欧拉角待转换数据的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。调用前须按顺序添加三位浮点数,分别代表直角坐标系下的 [RX, RY, RZ](弧度值 rad 格式)。quat_res(底层输出参数):用于接收四元数转换结果的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。由方法内部自动创建,并在调用前通过 push_back(0.0) 预先分配 4 位内存缓冲区。解算成功后,输出的 [w, x, y, z] 姿态矩阵数据将顺序覆写至该容器内。
返回值:
list:四元数结果列表[float, float, float, float]:转换成功。返回包含 4 位双精度浮点数的标准 Python 列表,对应空间旋转矩阵的 [w, x, y, z]。[](空列表):转换失败。句柄无效、传入的欧拉角数据越界或非法、接口返回非 0 错误码或触发通信异常。
使用示例:
5. get_rpy2r - 欧拉角转旋转矩阵
方法: get_rpy2r(socket_fd: int, rpy_vector: VectorDouble, r_res: VectorDouble)
功能描述: 调用机器人控制器内部的运动学核心解算器,将直角坐标系下的欧拉角表达形式(RPY)转换为工业机器人高级动力学运算中所使用的 3×3 三维空间旋转矩阵。该接口纯粹进行数学层面的坐标姿态矩阵转换,不会触发机械臂产生任何物理动作。
参数:
socket_fd:已连接的机械臂控制器句柄,整型格式(int)。rpy_vector(底层输入参数):存放欧拉角待转换数据的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble(3))。调用前须按顺序写入 [RX, RY, RZ](弧度值 rad 格式)。r_res(底层输出参数):用于接收旋转矩阵结果的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble(9))。由方法内部自动创建并开辟 9 位内存缓冲区。解算成功后,输出的 3×3 旋转矩阵各分量将以行主序(Row-Major Order)的方式顺序覆写至该容器内。
返回值:
list:旋转矩阵结果列表[r00, r01, r02, r10, r11, r12, r20, r21, r22]:转换成功。返回包含 9 位双精度浮点数的标准 Python 列表。[](空列表):转换失败。句柄无效、输入姿态参数异常、接口返回非 0 错误码或触发通信异常。
使用示例:
6. get_tr2r - 位姿转旋转矩阵
方法: get_tr2r(socket_fd: int, tr_vector: VectorDouble, r_res: VectorDouble)
功能描述: 调用机器人控制器内部的矩阵运算核心,从一个完整的 4×4 齐次空间位姿矩阵中,剥离并提取出专门描述工具末端姿态的 3×3 空间旋转矩阵。该接口纯粹进行数学几何层面的矩阵数据裁剪,不会触发机械臂产生任何物理动作。
参数:
socket_fd:已连接的机械臂控制器句柄,整型格式(int)。tr_vector(底层输入参数):存放 4×4 位姿矩阵待转换数据的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。调用前须按行主序(Row-Major)顺序填入 16 位浮点数分量。r_res(底层输出参数):用于接收提取结果的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。由方法内部自动创建,并在调用前通过 push_back(0.0) 预先分配 9 位内存缓冲区。剥离成功后,输出的 3×3 旋转矩阵各分量将顺序覆写至该容器内。
返回值:
list:旋转矩阵分量列表[r00, r01, r02, r10, r11, r12, r20, r21, r22]:转换成功。返回包含 9 位双精度浮点数的标准 Python 列表。[](空列表):转换失败。句柄无效、输入矩阵格式异常、接口返回非 0 错误码或触发通信异常。
使用示例:
7. get_r2tr - 旋转矩阵转位姿矩阵
方法: get_r2tr(socket_fd: int, r_vector: VectorDouble, tr_res: VectorDouble)
功能描述: 调用机器人控制器内部的矩阵运算核心,将描述工具末端姿态的 3×3 空间旋转矩阵,填充并扩展为一个完整的 4×4 齐次空间位姿矩阵(默认平移分量为零)。该接口纯粹进行数学几何层面的矩阵数据扩展,不会触发机械臂产生任何物理动作。
参数:
socket_fd:已连接的机械臂控制器句柄,整型格式(int)。r_vector(底层输入参数):存放 3×3 旋转矩阵待转换数据的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。调用前须按行主序(Row-Major)顺序填入 9 位浮点数分量。tr_res(底层输出参数):用于接收扩展结果的 C++ 双精度浮点向量容器(对应 nrc.VectorDouble())。由方法内部自动创建,并在调用前通过 push_back(0.0) 预先分配 16 位内存缓冲区。扩展成功后,输出的 4×4 位姿矩阵各分量将顺序覆写至该容器内。
返回值:
list:位姿矩阵分量列表[16位浮点数]:转换成功。返回包含 16 位双精度浮点数的标准 Python 列表(4×4 齐次矩阵,按行主序排列)。[](空列表):转换失败。句柄无效、输入矩阵格式异常、接口返回非 0 错误码或触发通信异常。
使用示例:
