十一、视觉工艺(Python)
本页对应 C++ 版。函数名与参数顺序与 C++ 完全一致(Python SDK 由 C++ 经 SWIG 生成),差异只在两处:
- 返回值形态:C++ 用引用参数回填数据;Python 的返回形态由 SWIG 绑定决定,逐接口实测,不按类型推断。
- 少数接口在 Python 中不可直接调用(绑定缺陷),页面内已逐个标注。
本页共 18 个接口,其中 18 个在 Python SDK 中存在。
数据结构
VisionParam
struct VisionParam {
CameraList cameraList; // 相机列表
Protocol protocol; // 通讯协议配置
Socket socket; // Socket 通讯配置
Trigger trigger; // 触发配置
int userCoordNum; // 用户坐标编号
};子结构体说明:
CameraList:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| currentName | string | "customize" | 当前相机名称 |
| listNum | int | 0 | 相机列表数量 |
Protocol(通讯协议):
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| addDataInitialPara | string | "GD001" | 附加数据初始参数 |
| addDataNum | int | 0 | 附加数据数量 |
| angleUnit | int | 1 | 角度单位 |
| endMark | string | "$" | 结束标志 |
| failFlag | string | "NG" | 失败标志 |
| frameHeader | string | "" | 帧头 |
| hasTCS | bool | false | 是否有TCS |
| hasUCS | bool | false | 是否有UCS |
| separator | string | "," | 分隔符 |
| singleTarget | bool | true | 单目标 |
| successFlag | string | "OK" | 成功标志 |
| timeOut | int | 30 | 超时时间 |
| type | int | 1 | 协议类型 |
Socket(Socket 通讯配置):
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| IP | string | "192.168.1.120" | IP地址 |
| cameraDataType | int | 0 | 相机数据类型 |
| portNum | int | 1 | 端口号 |
| portOne | int | 5050 | 端口1 |
| portTwo | int | 5051 | 端口2 |
| server | bool | true | 是否为服务器 |
Trigger(触发配置):
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| IOPort | int | 0 | IO端口 |
| duration | int | 1000 | 持续时间(ms) |
| intervals | int | 35 | 间隔时间(ms) |
| triggerMode | int | 2 | 触发模式:1=IO,2=EtherCAT |
| triggerOnce | bool | true | 单次触发 |
| triggerStr | string | "TRG" | 触发字符串 |
Python 中定义:nrc_interface.VisionParam(构造:nrc.VisionParam())。
可用字段(共 5 个,实测 dir()):
cameraList、protocol、socket、trigger、userCoordNum
VisionRange
struct VisionRange {
std::string maxX; // 最大X坐标
std::string maxY; // 最大Y坐标
std::string maxZ; // 最大Z坐标
std::string minX; // 最小X坐标
std::string minY; // 最小Y坐标
std::string minZ; // 最小Z坐标
};Python 中定义:nrc_interface.VisionRange(构造:nrc.VisionRange())。
可用字段(共 6 个,实测 dir()):
maxX、maxY、maxZ、minX、minY、minZ
VisionPositionParam
struct VisionPositionParam {
Position position; // 位置数据
int protocol; // 协议类型
};Position 子结构体包含: 视角方向(angleDirection)、相机数据(cameraData)、相机点位(cameraPoint,长度14)、参考点位(datumPoint,长度14)、偏移量(Excursion:X/Y/Z 偏移 + 角度)、接收点类型(recvPointsType)、样本数据(sampleData)、比例(scale)。
Python 中定义:nrc_interface.VisionPositionParam(构造:nrc.VisionPositionParam())。
可用字段(共 2 个,实测 dir()):
position、protocol
VisionCalibrationData
struct VisionCalibrationData {
int visionNum; // 视觉编号
Calibration calibration; // 校准数据(含标定点列表,默认点数6,范围[6,30])
};Calibration 包含: calibrated(是否已校准)、point(标定点列表)、point_num(点数量)。
CalibrationPoint 包含: pixel_pos(像素位置,长度7)、pixel_pos_deg(像素位置角度,长度7)、robot_pos(机器人位置,长度7)、robot_pos_deg(机器人位置角度,长度7)。
Python 中定义:nrc_interface.VisionCalibrationData(构造:nrc.VisionCalibrationData())。
可用字段(共 2 个,实测 dir()):
calibration、visionNum
11.1 基本参数配置
vision_set_basic_parameter / vision_set_basic_parameter_robot
设置视觉系统的基本参数,包括相机列表、通讯协议、Socket 配置和触发方式。
vision_set_basic_parameter
def vision_set_basic_parameter(socketFd, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
vision_set_basic_parameter_robot
def vision_set_basic_parameter_robot(socketFd, robotNum, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 输入/输出 | 说明 |
|---|---|---|---|
| socketFd | SOCKETFD | 输入 | 连接句柄 |
| robotNum | int | 输入 | 机器人编号(仅 _robot 版本) |
| visionNum | int | 输入 | 视觉ID编号 |
| vsPamrm | VisionParam | 输入 | 视觉基本参数结构体 |
C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。
vision_get_basic_parameter / vision_get_basic_parameter_robot
查询视觉系统已配置的基本参数。
vision_get_basic_parameter
def vision_get_basic_parameter(socketFd, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。
vision_get_basic_parameter_robot
def vision_get_basic_parameter_robot(socketFd, robotNum, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。
参数说明(与 C++ 一致):
| 参数 | 类型 | 输入/输出 | 说明 |
|---|---|---|---|
| socketFd | SOCKETFD | 输入 | 连接句柄 |
| robotNum | int | 输入 | 机器人编号(仅 _robot 版本) |
| visionNum | int | 输入 | 视觉ID编号 |
| vsPamrm | VisionParam& | 输出 | 接收视觉基本参数 |
C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。
11.2 视觉范围配置
vision_set_range / vision_set_range_robot
设置视觉识别的空间范围(包围盒),用于限定视觉检测的有效区域。
vision_set_range
def vision_set_range(socketFd, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
vision_set_range_robot
def vision_set_range_robot(socketFd, robotNum, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 输入/输出 | 说明 |
|---|---|---|---|
| socketFd | SOCKETFD | 输入 | 连接句柄 |
| robotNum | int | 输入 | 机器人编号(仅 _robot 版本) |
| visionNum | int | 输入 | 视觉ID编号 |
| vsPamrm | VisionRange | 输入 | 视觉范围参数(min/max XYZ) |
C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。
vision_get_range / vision_get_range_robot
查询视觉已配置的空间范围参数。
vision_get_range
def vision_get_range(socketFd, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionRange() 传入,调用成功后按字段读取(结构体不支持 list())。
vision_get_range_robot
def vision_get_range_robot(socketFd, robotNum, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionRange() 传入,调用成功后按字段读取(结构体不支持 list())。
参数说明(与 C++ 一致):
| 参数 | 类型 | 输入/输出 | 说明 |
|---|---|---|---|
| socketFd | SOCKETFD | 输入 | 连接句柄 |
| robotNum | int | 输入 | 机器人编号(仅 _robot 版本) |
| visionNum | int | 输入 | 视觉ID编号 |
| vsPamrm | VisionRange& | 输出 | 接收视觉范围参数 |
C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。
11.3 坐标参数配置
vision_set_position_parameter / vision_set_position_parameter_robot
设置视觉坐标参数,包括拍照位置、参考点位、偏移量和样本数据格式等。
vision_set_position_parameter
def vision_set_position_parameter(socketFd, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
vision_set_position_parameter_robot
def vision_set_position_parameter_robot(socketFd, robotNum, visionNum, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 输入/输出 | 说明 |
|---|---|---|---|
| socketFd | SOCKETFD | 输入 | 连接句柄 |
| robotNum | int | 输入 | 机器人编号(仅 _robot 版本) |
| visionNum | int | 输入 | 视觉ID编号 |
| vsPamrm | VisionPositionParam | 输入 | 视觉坐标参数 |
C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。
vision_get_position_parameter / vision_get_position_parameter_robot
查询视觉已配置的坐标参数。
vision_get_position_parameter
def vision_get_position_parameter(socketFd, visionId, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionPositionParam() 传入,调用成功后按字段读取(结构体不支持 list())。
vision_get_position_parameter_robot
def vision_get_position_parameter_robot(socketFd, robotNum, visionId, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionPositionParam() 传入,调用成功后按字段读取(结构体不支持 list())。
参数说明(与 C++ 一致):
| 参数 | 类型 | 输入/输出 | 说明 |
|---|---|---|---|
| socketFd | SOCKETFD | 输入 | 连接句柄 |
| robotNum | int | 输入 | 机器人编号(仅 _robot 版本) |
| visionId | int | 输入 | 视觉ID编号 |
| vsPamrm | VisionPositionParam& | 输出 | 接收视觉坐标参数 |
C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。
11.4 视觉标定
vision_calibrate / vision_calibrate_robot
执行视觉标定操作,设置标定相关的点位数据。
vision_calibrate
def vision_calibrate(socketFd, visionId, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
vision_calibrate_robot
def vision_calibrate_robot(socketFd, robotNum, visionId, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 输入/输出 | 说明 |
|---|---|---|---|
| socketFd | SOCKETFD | 输入 | 连接句柄 |
| robotNum | int | 输入 | 机器人编号(仅 _robot 版本) |
| visionId | int | 输入 | 视觉ID编号 |
| vsPamrm | VisionCalibrationData | 输入 | 标定数据,含像素位置和机器人位置 |
C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。
vision_get_calibrate_data / vision_get_calibrate_data_robot
查询已保存的视觉标定数据。
vision_get_calibrate_data
def vision_get_calibrate_data(socketFd, visionId, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionCalibrationData() 传入,调用成功后按字段读取(结构体不支持 list())。
vision_get_calibrate_data_robot
def vision_get_calibrate_data_robot(socketFd, robotNum, visionId, vsPamrm):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionCalibrationData() 传入,调用成功后按字段读取(结构体不支持 list())。
参数说明(与 C++ 一致):
| 参数 | 类型 | 输入/输出 | 说明 |
|---|---|---|---|
| socketFd | SOCKETFD | 输入 | 连接句柄 |
| robotNum | int | 输入 | 机器人编号(仅 _robot 版本) |
| visionId | int | 输入 | 视觉ID编号 |
| vsPamrm | VisionCalibrationData& | 输出 | 接收标定数据 |
C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。
vision_hand_eye_calibration_calculation / vision_hand_eye_calibration_calculation_robot
执行手眼标定计算。在标定点数据全部录入后,调用此接口计算手眼关系矩阵。
vision_hand_eye_calibration_calculation
def vision_hand_eye_calibration_calculation(socketFd, visionNum):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
vision_hand_eye_calibration_calculation_robot
def vision_hand_eye_calibration_calculation_robot(socketFd, robotNum, visionNum):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 输入/输出 | 说明 |
|---|---|---|---|
| socketFd | SOCKETFD | 输入 | 连接句柄 |
| robotNum | int | 输入 | 机器人编号(仅 _robot 版本) |
| visionNum | int | 输入 | 视觉ID编号 |
C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。