马晶磊 姜永磊
江苏省特种设备安全监督检验研究院 南京 210036
起重机承担着搬运、抓取物料的作用,现有的大多数起重机为人工操作,对位的精准度操作难度在于控制如何准确地对准目标吊具及吊载物品。具体而言,在于准确判断相关物体之间的相对位置关系,以及判断起重机吊具和负载的运动状态,并在适当的时机采取正确的操作。针对此问题,国内外的起重机制造企业一直致力于起重机自动化运行技术的研发工作。传统起重机的自动定位技术主要依赖于传感部件,例如常见的限位开关和编码器,国外某公司则偏向于使用激光、红外线来实现定位功能,以检测起重机是否到达目标位置。此外,通过PLC 系统和模糊PID 算法控制变频电动机的运转,以实现精准的起重操作[1,2]。采用该方法获取控制数据信号存在以下缺点:一是起重机运行环境大多比较恶劣,传感器的安全性和使用寿命往往得不到保障;二是该方法无法获取使用现场的运行数据,无法实现起重机远程监控以及对运行误差做进一步的修正。
近年来,随着智能机器视觉识别技术的迅速发展,其在起重机领域发挥着推动作用。非接触式的视频识别,无论起重机的工作环境如何变化,机器视觉系统都能够完美适应并实时提供数据监控。尤其是在一些特殊使用环境的起重机,其运行过程中的定位准确性与稳定性是起重机工作运行的重要考虑因素。
本方案意在通过机器视觉系统测量获取工作场景,对工作场景进行数据建立,系统框架图如图1 所示。通过图像传感器(Charge Coupled Device,CCD)双目工业相机系统利用视野内的场景图像信息作为输入,然后采用高性能处理技术进行分析和处理。工控机(Industrial Personal Computer,IPC)处理图像单元,工业相机的参数主要包括匹配算法选择和匹配阈值设置,利用GigE 接口获取CCD 相机所拍摄的物料图像数据。采用优化算法进行起重机路径的自动规划。使用Modbus 通讯协议将数据信息传输到运动控制器,运动控制器根据接收到的数据决定是否启动吊运功能,计算物料与吊具之间的距离,之后利用这些计算结果控制运动机构。同时,物料与吊具的实时相对坐标作为反馈量,实现闭环控制[3]。
图1 系统框架图
本文以一台加装了机器视觉的自动化起重机为研究对象。选用InnoVision 品牌的IN-L1005 型相机,特点在于500 万像素级CCD 摄像头,高动态范围(High Dynamic Range,HDR) 模式可捕获高对比度场景,并提供软件开发工具包(Software Development Kit,SDK),支持C++和C#语言编写;起重机的大小车驱动机构分别采用Yakawa 公司的∑系列电动机,起重用多功能CH700 变频器,能在电源频率的1.5 个周期(0.025 s)以内进行启动、暂停和反转。网络摄像机(IP Camera,IPC)是为满足高速、高功能需求而设计的,其可以分析从采集回来的数据图像中得到的大量像素,故选择Intel7 处理器、4 T 硬盘、独立显卡等配置。
为了准确恢复真实空间的参数信息,需要选择与平面参数和成像坐标系相匹配的图形算法函数,以便在基于图像获取和数字信号之间转化的原理下获得高精度的目标位姿参数[4]。
如图2 和图3 所示,在相机模型中,小孔成像模型和双目相机模型的组成起着重要作用。若假设空间中有一个点P(XC,YC,ZC),则该点在左右相机的投影平面上的Pl和Pr是2 个投影,通过分析由2 条射线OlPl和OrPr形成的交点确定P点的位置并获取深度信息。在使用双目相机时,相机通常不会完全保持正对目标,而是存在一定程度的旋转和平移关系,故使用平移向量T和旋转矩阵R可以相互联系修正相机的偏差[5]。
图3 双目相机模型
由于人为误差,芯片中心点通常偏离光轴,同时成像设备的像素形状也由正方形变成矩形,需要引入新的参数Cx和Cv,以基于小孔成像原理实现更精确的成像,对屏幕投影坐标中心点发生的预估偏移进行建模。假设P点的坐标为(X,Y,Z),利用式(1)将该点的图像投射到设备指定像素的位置(xs,ys)。
透过透镜将光线弯曲,当光线汇聚到投影点上时,由于透镜形状和加工工艺等因素的影响,会产生径向畸变,导致离透镜中心越远的光线曲率越大,靠近透镜边缘的光线畸变越严重。虽然畸变较小,但可以使用泰勒级数展开前几项描述r=0 周围的畸变,并根据式(2)来调整成像设备上某点的径向位置。切向畸变由透镜和可读写的RAM 芯片(Complementary Metal Oxide Semiconductor,CMOS )(或CCD)的安装误差引起,可使用2 个额外参数进行调整。
假设xOy为图像物理坐标系,坐标原点O,在像素图像坐标系x1O1y1中的坐标为(cx,cy),得出dx、dy分别为像素在坐标轴上所定义的物理尺寸(mm/px),故图像中任意一个像素点转换关系在坐标系中体现为
齐次坐标形式为
假设在空间中存在一个点P,其在Oc-XcYcZc双目相机坐标系中的坐标点是(Xc,Yc,Zc),而其在图像上的物理坐标是(x,y)。通过小孔成像模型,可以推算出这个结果,即
齐次坐标形式为
将式(7)带入式(5)中,其中K为相机内参数矩阵,有效焦距fx和fy分别为相机焦距f除以像素大小dx和dy,分别为水平方向和垂直方向上的比值。
如图4 所示,由于物料存储在一个顶端未密封的核废料平台,上方没有障碍物的存在,故需对大小车运动速度进行合理给定。本文以物料在仓库大门处的位置的坐标为基准点对大小车及吊具的运行距离进行计算[6]。
图4 核废料平台
根据实际情况,整个核废料区划分成若干个正方形存储小区,分别用1 号、2 号、…、N号表示。选取其中一块区域进行分析,每小格区域最多可存放5 行5 列3 层共75 个物料,将该区划分为25 个小正方形,每个小正方形代表核废料的一个固定存储位置。为了便于存储以及管理操作,分别对每个存储位置进行编号,按照从下往上、从外向内、从左往右的顺序,如图5 所示。
图5 核废料存储示意图
选取任意一个存储位置N,则其对应所处的列数、行数、层数分别用x、y、z表示,转化关系如下:
若mod(N,25)=0,则有
若mod(N,25)≠0 且mod[mod(N,25),5]=0,则有
若mod(N,16)≠0 且mod[mod(N,16),4]≠0,则有
在平台内行车自动运行控制算法的设计中,需要使用取整操作Int 和取余操作Mod。对于1 号区域而言,已知核废料料桶目标存储位置序号为j且合法,其实际坐标为(m1,n1,l1)。根据给定的公式,可以计算出其对应的实际坐标(mj,nj,lj)为
式中:a为划分的核废料桶存储区域的小正方形边长,b为桶的高度,xj、yj、zj分别为由给定式(8)~式(10)推导出的j号位置核废料桶所在的列数、行数以及层数。
另外,还需要知道在平台入口位置处固料桶的坐标为(m0,n0,l0),以便计算行车的小车在仓库中的运行距离Δm,大车运行距离Δn以及吊钩运行距离Δl,即
根据大车运行距离Δn以及小车运行距离Δm的数值,为提高效率,大小车同时向选定目标运动,将核废料桶运送至指定位置上方,然后下降吊钩Δl将其摆放到目标位置处。其他2 区域~25 区域的摆放工作原理与1 区域一致,只需标定1 号存储位置的实际坐标即可实现对整块平台其他区域的定位。
4.2.1 图像采集总体方案
图像识别与测距是机器视觉起重机系统研究数据处理模块的重要组成部分,该功能基于OpenCV 视觉处理算法实现,主要功能为:1)提取特征,图像处理;2)识别目标点;3)加载推理相机中心与目标区域的直线距离,模块的工作流程如图6 所示。
图6 双目相机工作流程图
其中第1 个判断框表示在相机视野中是否出现目标点,以此来判断后续动作,系统会提示起重机大小车电动机继续运行,直至移动到目标点进入双目相机视野中。第2 个判断框表示系统会通过调整位置跟踪目标点,使核废料桶位于相机的视野中心,以达到提高测距精度的目的。
4.2.2 相机标定
一般情况下,相机标定需要使用一个标定参照物,本文选用棋盘纸(见图7),将其放置在相机视野范围内并进行图像特征提取。本文使用Matlab 中的Calib _Toolbox 对相机进行标定,该方法是通过在双目相机获取的图像,利用局部检测窗口提取特定区域的亮度、色彩、纹理或轮廓等特征点。具体而言,通过观察窗口在各个方向微小移动时的平均能量变化,并在能量变化值超过设定阈值时将窗口中心像素点提取为角点[7]。角点即为黑、白方格之间的交接点,图7 有9×12 个角点。具体步骤为:
1)使用预先设置好的OpenCV 图像采集程序,获取大约20 张棋盘格标定板的图像,这些图像具有不同的角度和距离。将这些图像按左右图像进行命名,并将其拷贝到MatlabCalib_Toolbox 文件夹之中。
2)在Matlab 中设置工作目录为Calib_Toolbox 所在的目录,并通过点击设置路径,添加包含文件,并选中Calib_Toolbox,来完成路径设置。
3)对左右相机进行标定:打开Calib.m 文件并执行,会弹出对话框。选择相应版本后,在对话框中选择要标定的图像文件名称和左右相机的图像文件名称,并选择图像格式。程序将自动选择符合命名前缀和图像格式的图像。选择手动提取角点,并处理所有图像,设置窗口大小,按照从左到右、从上到下的顺序依次点击棋盘格子图的4 个角点,并设置黑白格子的实际尺寸。完成后,处理下副图像,直到所有图像处理完成。在提取角点信息后进行标定,程序将自动计算相机的各种参数数值。
4.2.3 相机中心点与目标点距离计算
本文采用OpenCV 中reProjectImageTo3D()函数计算出下方区域目标点与相机中心的实际距离。10 次测距的数值如表1 所示,实际距离s为380 mm。
由于双目相机的焦距会随着目标物距离的变化而变化,故通过测量多组数据拟合出相机的焦距,即有
式中:B为已知2 个相机之间的基线距离,B=160 mm;x2-x1为2 帧图像的像差;H为匹配点的实际景深。
通过将焦距的拟合公式代入方程组,可以结合像差测量出目标物距离。拟合公式为fx=g(s),s为实际距离,如表2 所示。
表2 实际距离与焦距的对应关系 mm
在进行整体功能测试前,需要先检查工控机和工业相机与系统的通信接口表之间的连接是否正常。通信接口表的检查主要是用于确认工控机和系统之间的通信是否正常,信息点位是否正确。同时,检查工业相机的主要目的是验证IP 配置是否正确,以及与系统的通信是否正常。
由于工控机的计算资源有限,为了达到最佳效果,对图像分辨率按比例调整为1 200×800,并提取模板图像。
首先在平面内任意选定一个位置的核废料桶,记录其坐标。接着启动起重机,保证初始位置能在工业相机镜头中出现完整核废料桶图像。并通过移动大小车来改变采集位置,以便观察实际情况。试验采集到多个不同位置的图像,对每个位置的核废料桶进行多次试验运行以验证其准确性。经过近1 个星期的对比试验,选取了部分实验数据列于表3 中。
表3 部分测试数据
在起重机行驶过程中,运行方向和震动等因素会影响工业相机的外部参数,尤其是俯仰角和方向角因素[8]。从表3 可以看出系统识别率达到90%以上。分析发现,误差的原因主要有2 方面:一方面是外部光线影响造成误识别或识别失败;另一个方面,当起重机瞬间移动时,双目相机与目标之间的方向角度会发生变化,从而导致测量值与实际值产生误差。
本文对利用物联网、AI 和机器视觉技术应用于起重机领域进行了分析研究,该系统利用双目相机作为辅助,充分发挥可靠性强、价格低廉、通信信号稳定的特点,具有较大推广价值和应用前景,为实现2025 工业自动化提供有力的技术支持,为加快起重机无人化作业进程迈向坚定的一步[9]。