1. 课程导入与Basler视觉系统概览
在工业自动化现场,机器人“看见”并“抓住”一个零件,通常不是靠单一设备完成的。它需要一台工业相机把光信号变成稳定的数字图像,需要镜头与光源把被测特征从背景中“分离”出来,需要标定把图像像素坐标与机器人坐标统一到同一参照系,最后还要通过通信把定位结果交给机器人执行。本课程围绕这条链路展开,以Basler视觉系统为主线,讲解从图像采集、相机标定、目标定位到与机器人集成的完整实现过程。
Basler相机产品线:先选对“眼睛”
Basler的产品线可以按接口、传感器类型和形态来理解。按接口划分,常见的有GigE Vision、USB3 Vision、CoaXPress和Camera Link等。GigE Vision使用标准千兆网线,传输距离可达100米,适合多相机分布式部署;USB3 Vision带宽高、即插即用,适合单相机或短距离高速采集;CoaXPress和Camera Link面向高带宽、高帧率场景,常用于线阵扫描或高速检测。
按传感器类型划分,面阵相机一次曝光获得二维图像,适合抓取静止或间歇运动的目标;线阵相机逐行扫描,配合运动平台可获取连续图像,适合大幅面、连续卷材检测。按形态划分,有常规工业相机、板级相机和嵌入式相机,后者可直接集成到设备内部。
在机器人视觉采集中,选型通常从几个参数入手:分辨率决定最小可分辨特征,例如要检测0.1毫米的缺陷,视场为100毫米,则至少需要1000像素以上的有效分辨率;帧率决定能否在节拍内完成采集,若机器人节拍为2秒,相机帧率至少应保证在定位算法耗时之外留出余量;接口决定布线方式和带宽上限;快门类型决定运动目标是否拖影,全局快门适合运动抓取,卷帘快门适合静态场景。
机器人视觉采集与定位集成的典型场景
典型应用可以归纳为三类。第一类是“眼在手外”(Eye-to-Hand),相机固定在支架上,视野覆盖机器人工作区域。相机先拍照定位目标,再通过手眼标定关系把目标位姿转换到机器人基坐标系,机器人再运动到目标上方抓取。这种结构适合目标分散、机器人行程较大的场景,例如码垛、分拣。
第二类是“眼在手上”(Eye-in-Hand),相机安装在机器人末端法兰上,随机器人一起运动。相机靠近目标拍摄,精度更高,适合装配、拧螺丝、精密对位等场景。由于相机与末端执行器的相对位置固定,标定后可直接把图像坐标映射到末端坐标。
第三类是动态跟踪与引导,相机连续采集运动中的目标,算法实时输出位置和速度,机器人通过通信接口接收并调整轨迹。这类场景对帧率、延迟和通信实时性要求较高,常用于传送带跟踪抓取。
无论哪种场景,核心问题都是同一个:把图像中的像素位置,转换成机器人在其坐标系下可以执行的位置和姿态。这个转换过程依赖相机内参、畸变系数、手眼矩阵和坐标系定义,任何一环出错,抓取都会偏移。
整体学习路径与软硬件环境准备
本课程的学习路径按“采集—标定—定位—集成”推进。第一阶段完成相机与镜头的选型、安装和曝光调试,能够稳定获取清晰图像;第二阶段完成相机内参标定和手眼标定,建立像素到机器人坐标的映射;第三阶段实现目标定位算法,输出目标在机器人坐标系下的位姿;第四阶段完成通信集成与抓取验证,形成可复现的完整流程。
硬件环境建议准备:一台Basler GigE或USB3接口工业相机,一支定焦镜头,一个可调光源,一块标定板(如棋盘格或圆点阵列),一台六轴机器人或机器人仿真环境,以及一台运行视觉软件的工控机。若使用GigE相机,需准备支持巨帧的千兆网卡和网线;若使用USB3相机,需确认主机USB控制器带宽充足。
软件环境方面,相机采集可使用Basler pylon SDK或pylon Viewer,图像处理可使用OpenCV或Halcon,机器人通信可使用TCP/IP、Modbus TCP或机器人厂商提供的SDK。标定环节可使用OpenCV的calibrateCamera和calibrateHandEye函数,也可使用Halcon的标定算子。建议先使用pylon Viewer确认相机能正常取流,再进入代码开发。
# 示例:使用 pylon Viewer 检查相机连接
# 1. 打开 pylon Viewer,左侧设备树应出现相机型号
# 2. 双击相机,点击“连续采集”,观察图像是否正常
# 3. 调整 ExposureTime 和 Gain,使图像亮度适中
# 4. 记录相机 IP、序列号和当前曝光参数,供后续代码使用
需要特别说明的是,上述参数和步骤属于教学示例,实际项目中应根据相机型号、镜头焦距、工作距离和现场光照条件重新计算和调整。例如,曝光时间过长会导致运动目标拖影,过短则图像偏暗、噪声增大;增益过高会放大噪声,影响定位稳定性。建议先固定光源和曝光,再采集标定图像,避免标定过程中光照变化引入误差。