Skip to content
🤖 AI 助手 / 自动化工具:先读 《AI 助手先读》 《Agent 开发指引》 《生成前信息采集清单》;机器可读入口 /llms.txt;技能包(SKILL)直链:SKILL.md

十一、视觉工艺(Python) ​

本页对应 C++ 版。函数名与参数顺序与 C++ 完全一致(Python SDK 由 C++ 经 SWIG 生成),差异只在两处:

  1. 返回值形态:C++ 用引用参数回填数据;Python 的返回形态由 SWIG 绑定决定,逐接口实测,不按类型推断。
  2. 少数接口在 Python 中不可直接调用(绑定缺陷),页面内已逐个标注。

本页共 18 个接口,其中 18 个在 Python SDK 中存在。


数据结构 ​

VisionParam ​

cpp
struct VisionParam {
    CameraList cameraList;      // 相机列表
    Protocol protocol;          // 通讯协议配置
    Socket socket;              // Socket 通讯配置
    Trigger trigger;            // 触发配置
    int userCoordNum;           // 用户坐标编号
};

子结构体说明:

CameraList:

字段类型默认值说明
currentNamestring"customize"当前相机名称
listNumint0相机列表数量

Protocol(通讯协议):

字段类型默认值说明
addDataInitialParastring"GD001"附加数据初始参数
addDataNumint0附加数据数量
angleUnitint1角度单位
endMarkstring"$"结束标志
failFlagstring"NG"失败标志
frameHeaderstring""帧头
hasTCSboolfalse是否有TCS
hasUCSboolfalse是否有UCS
separatorstring","分隔符
singleTargetbooltrue单目标
successFlagstring"OK"成功标志
timeOutint30超时时间
typeint1协议类型

Socket(Socket 通讯配置):

字段类型默认值说明
IPstring"192.168.1.120"IP地址
cameraDataTypeint0相机数据类型
portNumint1端口号
portOneint5050端口1
portTwoint5051端口2
serverbooltrue是否为服务器

Trigger(触发配置):

字段类型默认值说明
IOPortint0IO端口
durationint1000持续时间(ms)
intervalsint35间隔时间(ms)
triggerModeint2触发模式:1=IO,2=EtherCAT
triggerOncebooltrue单次触发
triggerStrstring"TRG"触发字符串

Python 中定义:nrc_interface.VisionParam(构造:nrc.VisionParam())。

可用字段(共 5 个,实测 dir()):

cameraList、protocol、socket、trigger、userCoordNum


VisionRange ​

cpp
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 ​

cpp
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 ​

cpp
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

python
def vision_set_basic_parameter(socketFd, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

vision_set_basic_parameter_robot

python
def vision_set_basic_parameter_robot(socketFd, robotNum, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
visionNumint输入视觉ID编号
vsPamrmVisionParam输入视觉基本参数结构体

C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


vision_get_basic_parameter / vision_get_basic_parameter_robot ​

查询视觉系统已配置的基本参数。

vision_get_basic_parameter

python
def vision_get_basic_parameter(socketFd, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

vision_get_basic_parameter_robot

python
def vision_get_basic_parameter_robot(socketFd, robotNum, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionParam() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
visionNumint输入视觉ID编号
vsPamrmVisionParam&输出接收视觉基本参数

C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


11.2 视觉范围配置 ​

vision_set_range / vision_set_range_robot ​

设置视觉识别的空间范围(包围盒),用于限定视觉检测的有效区域。

vision_set_range

python
def vision_set_range(socketFd, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

vision_set_range_robot

python
def vision_set_range_robot(socketFd, robotNum, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
visionNumint输入视觉ID编号
vsPamrmVisionRange输入视觉范围参数(min/max XYZ)

C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


vision_get_range / vision_get_range_robot ​

查询视觉已配置的空间范围参数。

vision_get_range

python
def vision_get_range(socketFd, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionRange() 传入,调用成功后按字段读取(结构体不支持 list())。

vision_get_range_robot

python
def vision_get_range_robot(socketFd, robotNum, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionRange() 传入,调用成功后按字段读取(结构体不支持 list())。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
visionNumint输入视觉ID编号
vsPamrmVisionRange&输出接收视觉范围参数

C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


11.3 坐标参数配置 ​

vision_set_position_parameter / vision_set_position_parameter_robot ​

设置视觉坐标参数,包括拍照位置、参考点位、偏移量和样本数据格式等。

vision_set_position_parameter

python
def vision_set_position_parameter(socketFd, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

vision_set_position_parameter_robot

python
def vision_set_position_parameter_robot(socketFd, robotNum, visionNum, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
visionNumint输入视觉ID编号
vsPamrmVisionPositionParam输入视觉坐标参数

C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


vision_get_position_parameter / vision_get_position_parameter_robot ​

查询视觉已配置的坐标参数。

vision_get_position_parameter

python
def vision_get_position_parameter(socketFd, visionId, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionPositionParam() 传入,调用成功后按字段读取(结构体不支持 list())。

vision_get_position_parameter_robot

python
def vision_get_position_parameter_robot(socketFd, robotNum, visionId, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionPositionParam() 传入,调用成功后按字段读取(结构体不支持 list())。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
visionIdint输入视觉ID编号
vsPamrmVisionPositionParam&输出接收视觉坐标参数

C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


11.4 视觉标定 ​

vision_calibrate / vision_calibrate_robot ​

执行视觉标定操作,设置标定相关的点位数据。

vision_calibrate

python
def vision_calibrate(socketFd, visionId, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

vision_calibrate_robot

python
def vision_calibrate_robot(socketFd, robotNum, visionId, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
visionIdint输入视觉ID编号
vsPamrmVisionCalibrationData输入标定数据,含像素位置和机器人位置

C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


vision_get_calibrate_data / vision_get_calibrate_data_robot ​

查询已保存的视觉标定数据。

vision_get_calibrate_data

python
def vision_get_calibrate_data(socketFd, visionId, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionCalibrationData() 传入,调用成功后按字段读取(结构体不支持 list())。

vision_get_calibrate_data_robot

python
def vision_get_calibrate_data_robot(socketFd, robotNum, visionId, vsPamrm):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.VisionCalibrationData() 传入,调用成功后按字段读取(结构体不支持 list())。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
visionIdint输入视觉ID编号
vsPamrmVisionCalibrationData&输出接收标定数据

C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


vision_hand_eye_calibration_calculation / vision_hand_eye_calibration_calculation_robot ​

执行手眼标定计算。在标定点数据全部录入后,调用此接口计算手眼关系矩阵。

vision_hand_eye_calibration_calculation

python
def vision_hand_eye_calibration_calculation(socketFd, visionNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

vision_hand_eye_calibration_calculation_robot

python
def vision_hand_eye_calibration_calculation_robot(socketFd, robotNum, visionNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
visionNumint输入视觉ID编号

C++ 侧返回值描述:Result 枚举,0 表示成功,-1 表示等待消息失败,-2 表示找不到指定的客户端。


11.5 完整视觉标定流程示例 ​