1. 引言
输油场站是石油化工企业中一个非常重要的环节,承载着成品油的储存、运输及终端销售供给的作用 [1] 。为了确保输油场站及成品油的安全,每天需要大量的专业人员对输油场站内的管路及设备进行定时巡视。这种方式危险性高、劳动强度大,而且受巡检工个人工作能力的限制,巡检质量也参差不齐。随着机器人技术的发展,一种新的利用机器人的巡检模式应运而生。巡检机器人可搭载一系列传感器,代替巡检人员进入易燃易爆、有毒、缺氧、浓烟等现场进行巡检、探测,有效解决了巡检人员的劳动强度大、现场数据信息采集不足等问题,而且还可以对现场管道、仪表等设备的运行状况和显示信息进行监测和识别判断,有效提高了输油场站的自动化和智能化水平,具有广阔的发展空间和应用前景 [2] 。对于移动机器人的研究,我国起步虽然比国外晚,但是我国的研究已经步入快速发展的阶段。近年来,国家某些高校和研究院在机器人的研制中取得较高的成果,2019我国成功研制了首款应用于石油化工企业等高危场所的防爆型轮式巡检机器人,但由于机身重量大,灵活性较差,因此巡检效率较低 [3] 。通过查阅文献、资料,本文研究了一种以树莓派和STM32为主的输油场站巡检机器人系统及其软件设计方法。
2. 系统整体设计
输油场站巡检机器人设计目标是替代人工完成巡检,对其传感器检测的数据实时性、巡检所覆盖的范围、数据通信安全性以及系统稳定运行的可靠性都有一定的要求 [4] 。该机器人采用四轮驱动,主要应用于储罐区域的平坦路面,巡检过程中采集燃气浓度信息、温湿度信息、实时监控画面、仪表数据等。根据上述要求,最终确定巡检机器人总体设计方案如下。
2.1. 系统逻辑架构
输油场站巡检机器人的控制系统是由巡检端和上位机监控系统两部分组成。巡检端负责底层控制端进行数据采集,主要包括温湿度信息、燃气浓度信息等,同时还可以进行自主导航,安全完成巡检;上位机监控系统是操作员与整个系统进行交互的平台,主要包括显示由巡检端发送过来的数据信息以及USB 摄像头采集视频信息和激光雷达传输的信息,实现对工作环境的监控,并可以发送控制命令反向远程操控机器人。总体设计框架图见图1。

Figure 1. Framework of the overall system design
图1. 系统总体设计框架图
巡检端的任务主要是完成各个传感器采集数据,分别为燃气传感器、温湿度传感器等,还有电机驱动和数据存储等,巡检端设计图见图2。
树莓派电脑主要连接摄像头以及激光雷达。其中,激光雷达在SLAM建图中起到极大作用。该模块通过一定频率发射激光并接收激光,从而测算出实际距离。

Figure 2. Design drawing of the patrol inspection terminal
图2. 巡检端设计图
在巡检端中ARM微处理器(STM32F103ZET6)主要是负责将采集到的燃气浓度数据、温湿度数据、避障信号进行处理,如果超过预警值,则进行及时补救,减少不必要的损失,并通过串口把信息传输给树莓派,树莓派通过网络上传至监控系统。这种分层结构,使树莓派作为该系统的中转中心,不仅具有较高的扩展性,而且减少了树莓派电脑的工作任务,降低底层逻辑程序开发的复杂度,大大提高了运行效率 [5] [6] 。
上位机监控系统主要基于Qt技术进行可视化界面设计,主要分为三大部分:数据显示中心、视频显示和控制模块,见图3。

Figure 3. Design drawing of the host computer monitoring system
图3. 上位机监控系统设计图
在监控系统中,通过网络连接树莓派,数据显示中心主要是对传感器采集的燃气浓度信息、温湿度信息实时监控;视频显示USB摄像头采集到的视频信息;控制模块则是反向控制机器人运行方向,树莓派接收监控系统发来的控制命令,将命令通过串口传送给微处理器解析,以此来控制巡检机器人的移动。整个控制系统与树莓派在一个局域网内相连发送数据,节省流量费用,确保实时性。
2.2. 机器人运动机构设计
移动机器人的运动机构选型和设计,主要方面包括:1) 移动方式的选择;2) 机器人底盘结构的设计;3) 机器人电池及充电方式选择。
1) 本次设计的环境主要是输油场站,主要是水泥平坦路面,只是偶尔碰到路沿台阶,所以设计为四轮驱动的移动方式,通过左右两侧车轮的前后不同运动方向控制转向,用双轴直流减速电机驱动,在平坦的道路利用轮式结构,在需要通过路沿台阶时,四轮驱动就可以实现,兼具越障性能和机动灵活性,并且减速电机还具有马力充足、强磁、经久耐用等特点,双轴直流减速电机如图4所示。
2) 底盘选择的是一体化PCB板底盘,具有丰富的卡口,方便后续系统接线,采用的黑色四驱结构,安装简单,配置方便。将电机用螺丝固定到底板上并安装上轮子,轮子的规格为4个65 MM橡胶轮子,底盘示意图见图5。

Figure 5. Schematic diagram of robot chassis
图5. 机器人底盘示意图
2.3. 系统核心器件分析与选型
本文选择采用具ARM结构的Cortex-M3内核的STM32单片机作为处理器,通过石油输送场站巡检机器人控制系统的外设需求以及存储大小等,选择采用STM32F103ZET6单片机。该单片机工作频率最高达到72 MHz,内置512 Kb的Flash和64 Kb的SRAM,含有3个12位的模数转换器和2个12位的D/A转换器,配有SPI接口、USB接口、RTC等,支持SWD调试,处理器运作电压在2.0 V~3.6 V之间 [7] 。下图6为单片机内部框架图。
确定微处理器的选型后,需要对数据的转发模块做一个选择。本文中采用树莓派为安防巡检机器人做一个中转服务,它不仅可以与底层控制端进行串口数据通信,而且与上位机进socket通信转发数据,在该机器人的正常运作中处于一个至关重要的地位。本文选用树莓派作为数据中转模块,它不仅可以运行Linux系统,而且自身GPIO资源丰富,有利于扩展,应用树莓派更是对此项目研究的挑战。
3. 输油场站仪表读数识别
上位机监控与识别软件主要负责两部分,一是负责对巡检机器人上传的数据进行分析处理、异常报警及记录存档,实时刷新界面,浏览视频;二是对巡检监测的设备,如仪表的工作状态进行识别 [8] 。指针式仪表读数识别共分为三步,分别为指针分割、刻度与交点坐标提取和读数识别。指针作为仪表读数的唯一表征,面积最大且受干扰最小,因此本文首先对指针区域的信息进行提取。
3.1. 指针分割
首先统一仪表图像的尺寸,由于计算速度和信息包容度两者间表现出相互矛盾的对立关系,为了平衡计算速度和关键信息的数量,经过反复实验将指针仪表图像的尺寸定为300 × 300 pixels。接下来对指针区域进行提取,通过最大类间差法(OTSU)对仪表图像进行二值化操作消除部分噪声影响 [9] 。
OTSU算法的主要思想是聚类,以类间灰度值方差最大化,类内灰度值方差最小化为目标,将图像的灰度值分为两类 [10] 。设图像共有L个灰度级,灰度值为i的像素点个数为ni,图像的灰度直方图可表示为式:
(1)
对直方图进行归一化得到下面公式:
(2)
其中,
。根据阈值t将灰度级分为两类C1和C2,如下面公式所示:
(3)
(4)
C1和C2出现的概率分别为w1、w2,通过式下面式子得到:
(5)
(6)
可以由ω1、ω2通过下面公式得到平均灰度值u1、u2:
(7)
(8)
其中,u(t)和ur(t)分别通过式下面公式得到:
(9)
(10)
由此,C1和C2的方差可分别表示为:
(11)
(12)
类内方差
和类间方差
可分别表示为:
(13)
(14)
总体方差可表示为:
(15)
通过判定准则:
(16)
可由下面公式确定最终阈值t:
(17)
阈值t确定后,将灰度值大于阈值的像素点赋值255,小于阈值的则赋值0,完成仪表图像的二值化操作,设灰度级范围为[0, L−1]的灰度图像中像素点(x, y)的灰度值为I(x, y),二值化后的灰度值I'(x, y)可表示为:
(18)
通过OTSU实现仪表图像二值化后,根据指针区域面积最大这一条件对表盘内的轮廓集合进行筛选,实现指针的分割。如图7(a)所示为经过尺寸归一化后的仪表图像,图7(b)所示为实现指针区域分割后的效果图。
接下来拟合指针所在直线。由于指针颜色与刻度字体相近,经常会发生重叠现象,因此需要对指针区域进一步去除冗余信息。具体操作为,对图像进行形态学腐蚀操作,对指针外围的多余信息进行消除。然后使用Zhang-Suen [11] 细化算法对指针进行骨架提取,如图7(c)所示为经过Zhang-Suen细化处理后提取出的指针骨架,可以看出骨架每一处均处于指针的中间位置。
(19)
其中,k为拟合直线的斜率,c为截距。拟合直线结果如图7(d)所示效果较为精确。
(a) (b) (c) (d)
Figure 7. Pointer image segmentation
图7. 指针图像分割
3.2. 刻度与交点坐标提取
在得到校正后的指针所在直线的表达式后,接下来对模板图片中的刻度坐标和待测图像中刻度圆和指针所在直线的交点坐标进行提取。由于整个仪表表盘区域内部复杂,且容易受到阴影等诸多干扰影响使得进行霍夫圆拟合时经常会发生较大偏差。在观察指针旋转轴所在圆后发现,该区域颜色单一且受光线影响较小,故而采用此圆作为刻度圆的圆心拟合对象。对比结果图8所示,图8(a)为拟合表盘所在圆的圆心与实际圆心相比有较大偏差,对指针内部圆形区域进行圆拟合效果如图8(b)所示,发现拟合圆圆心正处于整个表盘的圆心位置,效果较好,同时可得到圆心坐标(m, n)。
(a) (b) (c) (d)
Figure 8. Get intersection coordinates
图8. 获取交点坐标
在得到仪表的圆心坐标(m, n)后,通过人工测量刻度与指针的重合区域距离圆心的平均距离r作为半径,得到刻度圆的表达式为:
(20)
其中,m为圆心横坐标,n为圆心纵坐标,r为刻度圆半径。统计刻度位于圆上的坐标(a, b),并保存为坐标点集{(ai, bi)}。联立式
、
可以得到刻度圆与指针所在直线的两个交点,如图8(c)所示,显然位于右下角的那个交点是属于无效的交点,需要对其进行排除。本文通过计算指针竖直投影中心与刻度圆圆心的相对位置,将无效的交点进行排除。如图8(d)所示,对指针进行竖直投影,观察图片下方两个小点的相对位置。左边的点为指针中心投影,右边的点为刻度圆心的投影,可以确定指针指向为整个表盘的左半部分,故此可以排除右下角的交点,得到真正的交点坐标P(xp, yp)。
通过确定(xp, yp)在{(ai, bi)}的区间,得到读数的范围[m, n],最后通过下面公式利用欧氏距离对读数进行精读得到最终读数v。
(21)
其中,k为单位刻度的值。
3.3. 指针式仪表读数识别仿真及结果分析
本节首先以4张不同仪表图像作为示例实验对象,展示识别过程中每一步的仿真效果,通过对示例实验结果进行具体分析展示算法结构设计的合理性。最后对大量现场仪表图像进行实验,并对实验结果进行分析,证明本算法对于复杂输油场站环境下的指针式仪表具有较高的读数识别精度。
待识别仪表图像如图9所示,分别对四个不同读数的指针仪表以不同的角度拍摄。
(a)
(b)
(c)
(d)
Figure 9. Pictures of four instruments to be tested
图9. 四种待测仪表的图片
对四张仪表图像分别进行指针区域提取,接着对四张完成指针分割的仪表图像通过Zhang-Suen细化算法提取指针骨架,并利用最小二乘法拟合指针所在直线。
联立四张仪表图像中刻度圆和指针所在直线的方程得到两个交点,其中图9(a)的交点坐标为:(61.55, 195.65),图9(b)的交点坐标为:(79.54, 78.03),图9(c)的交点坐标为:(210.71, 69.54),图9(d)的交点坐标为:(237.39, 197.62)。
接下来在模板图像中以指针旋转轴为圆心,以100 pixels为半径对模板图像作刻度圆。人工提取刻度圆上每个刻度所对应的坐标,见表1。

Table 1. Scale and position coordinates
表1. 刻度与位置坐标
实验结果如表2所示,其中l表示交点坐标与区间较小刻度坐标的欧式距离,L表示交点所处区间相邻两刻度坐标的欧式距离,val为识别得到的仪表读数,v为仪表实际读数,ε为误差。分析结果得出,平均误差为0.0085 MPa,占整个量程范围的0.21%。以895张指针仪表图像作为实验对象,平均相对误差为0.43%,综上所述,本文算法满足输油场站巡检机器人对指针式仪表读数识别的要求。

Table 2. Experimental results of pointer meter
表2. 指针式仪表实验结果
4. 输油场站巡检机器人路径规划研究
由于输油场站巡检机器人在已知静态障碍物信息的情况下进行巡检,加入未知动态障碍物,实现对障碍物的避让。本文在选择A*算法和人工势场法作为避障策略的基础上,对两种算法的缺点分析改进,最后将两种算法融合,并进行仿真验证了该混合算法的可行性 [12] 。
4.1. 环境地图模型
传感器采集的环境信息融合成完整的地图模型。在环境模型的表示方法中,采用栅格法对环境信息进行描述是一种行之有效的方法。本文研究基于栅格法的环境建模,建立栅格地图作为移动机器人的工作环境,栅格地图由一系列均匀规则且尺寸相同的栅格组成,其中栅格越小,环境地图信息的清晰度越高,但是其抗干扰的能力变弱,决策能力降低;栅格越大,环境地图信息的模糊度越高,其抗干扰能力变强,决策能力提高。栅格法可以将环境地图转换成数字地图,常用的有直角坐标法和序号法,以地图左下角为原点,该点水平、垂直方向分别为x轴和y轴,因此每一个栅格都有一个确定的标号。

Figure 10. Refine and fit the line where the pointer is
图10. 细化并拟合指针所在直线
上图10中,用栅格法进行了等尺度划分,其中白色代表自由空间,表示机器人可以通过;黑色代表障碍物,表示机器人不允许通过。把栅格地图用二维矩阵表示,假设一共有M行N列,D代表所有栅格的坐标,B[m][n]代表栅格是自由空间还是障碍物属性。以上所有表达方式如下:
(22)
(23)
上式中,B[m][n]代表着栅格的属性,当B[m][n] = 1时,代表该栅格是障碍物,B[m][n] = 0代表该栅格是自由空间。
4.2. 路径规划策略
输油场站巡检机器人的路径规划分为三部分:1) 二维地图环境的构建,选用栅格法构建地图;2) 在确定好静态障碍物环境后,我们采用改进的A*算法寻找一条无碰撞的最优路径,例如:A为起始点,H为目标点,在A点到H点的路径中分N段,每一段都是最优或者次优,最终完成静态障碍物的避障;3) 按照全局路径进行行走,当未知障碍物出现时,采用改进的人工势场法进行局部避障。下图11是输油场站巡检机器人整体路径规划流程图。

Figure 11. The overall obstacle avoidance flow chart of the patrol inspection robot
图11. 巡检机器人整体避障流程图
4.2.1. 传统A*算法
A*算法原理:首先设置两个节点,起始点和目标点,它们分别是构建地图中的栅格中心;其次是创建两个列表OPEN_LIST和CLOSED_LIST,其中OPEN_LIST列表用来存放扩展出的待检测节点,障碍物不添加至该列表,CLOSED_LIST列表用来存放已经访问的节点,通过访问OPEN_LIST列表中节点并根据启发函数计算出它们的估计值,选取最小值当做下一个访问的节点,当前节点成为父节点,下一个节点成为子节点;最后将所有的节点连接完成全局路径规划,流程如下图12所示。
代价估计函数如下:
(24)
在上式中,f(n)代表起始点经过n个节点到达目标点的估计代价值,g(n)代表起始点到达节点n的代价值,h(n)代表节点n到达目标点的估计代价值,当h(n) = 0时,该算法是Dijkstra算法 [13] ,h(n)应小于节点n到达目标点的真实值。h(n)常用的一般有两种形式:曼哈顿距离公式、欧几里德距离公式,其公式如下:其中X为x矢量,H(I)为图像数列I的Hesse矩阵,引入X与偏移量d的关系:
(25)
(26)

Table 3. Comparison of the results of the two distance formulas
表3. 两种距离公式的结果对比
由上表3看出,欧几里德公式结果运行时间比曼哈顿长,但是欧几里德可以表示两点之间的距离,这是曼哈顿重大缺点,因此距离公式采用欧几里德来计算节点n与目标点的估计代价值。
4.2.2. A*算法改进
A*算法虽然能缩小扩展范围,但是其传统A*在全局搜索中,会不停的进行往返搜索,增加了搜索点,而且转折角度较大。上一小节中说到h(n)是小于当前点到目标点的真实代价值,h(n)越小,搜索范围越大,不仅增加了搜索点,而且还浪费时间。当前点的位置会影响当前点到目标点的代价值,当前点离目标点很远时,此时代价值很小,需要增加其权重;相反,当前点逐渐接近目标点时,需减小权重。又因为h(n)大于零,则改进A*算法的启发函数为:
(27)
对传统A*算法的启发函数进行改进后,仿真结果如下图13所示,运行时间为5.179,运行时间降低了17.2%,路径长度为13.898,改进算法有效。
4.2.3. 传统人工势场法
局部避障与全局避障相比,局部避障不需要完全知道整个地图,而是根据局部环境信息,通过闭环实时反馈,经常用于动态避障。当在构建的地图中出现未知的动态障碍物时,机器人在运动中及时识别动态障碍物并作出反应,并安全的避开障碍物,因此局部避障更加重要 [14] 。
1) 引力势场引力函数
人工势场法理论思想简单,易于实现,因此应用比较广泛,定义引力势场:
(28)
上式中,Katt代表的是引力场的增益常量,
代表的是目标点的坐标点,
代表的是机器人的当前坐标点,
代表的是机器人到目标点的距离长度。引力函数是引力场的负梯度,则引力函数Fatt(q)表示如下:
(29)
2) 斥力势场和斥力函数
在局部动态避障中,不是所有的障碍物同时排斥机器人,而是当机器人进入障碍物的斥力范围内时,此时斥力场产生斥力作用。所以,斥力场的作用是由障碍物作用范围影响的,则斥力场表示式如下:
(30)
在上式中,Krep是比例增益,p0代表的是斥力场的作用范围,是一个常数。
同上,斥力函数Frep(q)的表达式为:
(31)
3) 合力场
由人工势场法的理论可知,机器人是在地图环境中受到目标点的引力和障碍物的斥力共同作用下运动,在地图中,有多个障碍物,它们受力符合平行四边形准则,则合力场表示为:
(32)
在上式中,n代表的是障碍物影响机器人的数量。
同上,合力函数F(q)表示为:
(33)
机器人在障碍物和目标点的作用合力下受力关系如下图14所示。
4.2.4. 改进人工势场法
当机器人所在的环境中突然出现未知动态障碍物时,由于传统的人工势场法没有对动态障碍物识别处理的能力,为解决此问题,本文引入了速度势场。
1) 在传统引力势场表达式中添加速度势场,如下:
(34)
上式中,
代表的是目标点与机器人的相对速度大小,当Kattq和Kattv变化时,相对速度以及相对距离的影响力都会改变。
由上式得知改进后的引力函数表达式如下:
(35)
2) 在传统斥力势场表达式中添加速度势场,如下:
(36)
(37)
上式中,
代表的是机器人与障碍物的相对速度,当
时,表示机器人与障碍物可能会相撞,
时,表示机器人与障碍物不会相撞。
由公式可以得到斥力函数表达式为:
(38)
3) 改进后的合力场表达式如下:
(39)
机器人坐标位置为q,相对速度为v时,所受到目标点和障碍物的合力为:
(40)
4.2.5. 改进A*和改进势场融合
A*算法适用于全局静态障碍物避让,当有未知动态障碍物出现时,却不能进行可靠避障。然而人工势场法不仅可以进行动态障碍物的避让,而且能优化路径质量。因此,本文将两种算法混合,在A*算法的全局规划下,当检测到动态障碍物时,采用人工势场法进行避障,最后再沿着全局规划直到目标点,流程设计如下图15所示。
具体步骤如下:
1) 参数初始化。设置起始点和目标点,创建OPEN_LIST和CLOSED_LIST列表,并将起始点放入OPEN_LIST列表中;同时,还要设置改进人工势场法的增益参数等。
2) 改进A*算法进行全局静态避障。寻找起始点的下一个到达节点,将起始点放入CLOSED_LIST列表中,周围节点放入OPEN_LIST列表中,根据启发函数计算出f(n)的值,并选择f(n)最小值为下一个节点,循环该步骤,生成一条静态路径。
3) 改进人工势场法进行局部动态避障。当检测到未知的动态障碍物时,进入检测范围,改进人工势场法运行,沿着全局规划出路径以一定的速度避开动态障碍物,保存所经过的每个坐标并生成路径,当离开势场所检测范围时,再回到全局路径中。
4) 显示路径。将步骤2与步骤3规划出的路径结合,得到一条最优路径。

Figure 15. Process design diagram of hybrid algorithm
图15. 混合算法流程设计图
4.3. 仿真验证
为了验证本文混合算法的可行性,通过MATLAB大量的仿真与对比,该混合算法可行性优越。在同一静态障碍物环境下,对未知动态障碍物的随机出现进行避障,如下图16(a)所示,动态障碍物在(6, 7)坐标点上,图16(b)中动态障碍物在(8, 8)坐标点上,该算法均可避开动态障碍物并能规划出一条平滑路径。
上图16是混合算法的仿真结果,与传统A*算法相比,该混合算法在静态障碍物环境下解决了对突发未知动态障碍物的避让问题,更加符合现实情况;图13中的改进A*算法解决了机器人在静态障碍物环境下的避让,缩短了路径长度。
5. 结论与展望
针对石化企业输油场站设备巡检问题,本文介绍了输油场站巡检机器人系统,巡检机器人完成对设备的数据采集、图像传输,无线基站完成机器人与上位机之间的无线通讯,上位机远程控制站完成现场监控和图像识别,发现故障及时报警,实践证明,该系统组成结构合理、功能完善,软件设计方法正确,能够达到了输油场站无人值守的目的。但该机器人在实际应用方面还有不足之处,石油化工场站对现场电气设备防爆等级有一定要求,因此巡检机器人在设计过程中还需符合现场实际防爆标准。后续在仪表识别方面,我也将展开更深层次的研究,目的是为了减少识别步骤、提高复杂现场背景下应用的泛化能力,提出基于深度神经网络的指针式仪表读数识别方法 [15] 。其次便是加入红外热成像仪,使得机器人通过红外热成像技术检测管道一定时间段内温度梯度图的变化特征,当设备发生超温、剧烈温升及燃气泄漏时,能够及时捕获设备温度变化区域,产生报警信息。
NOTES
*通讯作者。