变电站智能巡检机器人关键技术开发
2024-04-09汪洋
汪 洋
(国网浙江省电力有限公司杭州供电公司,浙江 杭州 310000)
0 引言
变电站是电网中转换和分配电能的重要节点,随着技术的发展,其自动化和智能化水平不断提升。传统的变电站人工巡检需值班人员使用手持仪器对设备逐一检查,这种方式在面对规模越来越庞大和繁杂的现代变电站时显得力不从心,且人工巡检易受到人员工作经验、责任心、精神状态等诸多因素的影响。当前的变电站也配置了一定数量的摄像头,但由于受视觉盲区、光照等客观条件限制而无法实现全方位监控。得益于无线传感器网络(wireless sensor networks,WSN)技术的发展,电力系统开始引入相关传感器监测设备运行参数,但由于传感器通信带宽小,应用范围受到很大的局限。随着人工智能和嵌入式技术的发展,具备多种功能的巡检机器人在电力系统中相继投入应用,与人工巡检相比,其检测效率和精度都更具优势,同时也能避免人工巡检过程存在的安全风险。
目前,电力系统巡检机器人大多针对500 kV及以上的大型变电站,而在众多的小型变电站中涉及较少且尚未形成统一的标准,同时已投入使用的巡检机器人大多采用遥控巡检方式,不仅没有真正形成智能化,还存在导航精度差、通信速度慢和图像匹配精度低等问题。因此,开发和应用一款变电站智能巡检机器人显得尤为急迫。
1 智能巡检机器人运动及导航模块设计
1.1 关键技术
1.1.1 加权平均算法
巡检机器人的底盘下安装有8个磁传感器,编号1~8并赋予不同的权重值。由于传感器的接受范围有限,至多同时有3个磁传感器可检测到磁轨,检测到磁轨的传感器会把自己的权重值信号输出给主控芯片,主控芯片的输入输出接口读取磁传感器信号并根据信号的加权平均值来判断机器人当前的位置。若最后的加权平均值为0,则机器人位于磁轨正中央,速度调节系统输入的速度参考值保持不变;若根据相应的加权平均值判断出机器人相对于磁轨左偏或右偏,则相应的左侧或右侧直流无刷电机加速,即对应电机的速度调节系统的输入速度参考值增大[1]。表1给出当不同组的磁传感器检测到磁轨时,速度调节系统的输入值。
表1 速度调节系统的输入值
1.1.2 PID控制技术
对于计算机可以处理的离散数字式PID主要有位置式PID控制算法和增量式PID控制算法两种。位置式PID是一种非递推的算法,因PID控制输出的u(k)值直接对应电机的实际转速,所以基于简化电机控制系统的考虑,控制设计采用位置式PID算法。
PID算法最重要的是参数整定,比例参数、积分参数和微分参数的选取直接决定了系统的控制效果。这3个参数可通过理论计算求得,也可通过工程试验得出。理论计算需提前推导被控对象的传递函数,且还要考虑工作时变化的阻尼和可能的外界干扰,很难建立系统实际数学模型,因此采用简单易行的工程试验来整定PID参数。
1.2 控制方案验证
1.2.1 译码器模块
在Simulink工具内搭建基于微处理器(STM32)的霍尔信号译码过程抽象电路以及译码规则,由于电路母线上可直接设置接收霍尔信号的模块,可将该信号传给为实现控制逻辑专门搭建的译码器[2]。
1.2.2 速度调节器模块
速度调节器的主体是PI控制器,利用Simulink把芯片通过软件将霍尔信号转换成速度信号的过程抽象化,由于在Simulink中与电机连接的母线上可直接获取到电机的转速值,所以可直接将此值作为PI控制器的一个输入,并将速度参考值作为PI控制器的另一个输入。PI控制器可以直接选择Simulink中的预制模块。
1.2.3 整体仿真
在Simulink中构建系统的整体仿真模型,在输出位置加入电压表和数据显示模块用以探测逆变器的输入变化、电机的转速变化、PI控制器的输出以及译码器的译码结果。
系统仿真时间设定为1 s,速度参考值为3 000 rad/s,并且预设在0.5 s时给系统一个外加干扰,通过电机的转速变化确定系统是否可实现调速。由转速变化趋势(见图1)可知,PI控制器的超调不大,也没有发生振荡,整体响应时间很短,0.5 s时系统受到外部干扰后,转速发生下降但很快恢复正常。
图1 转速变化趋势
通过观测3个霍尔传感器输出的120°相位差霍尔信号,这3组信号经过译码就可以产生换相序列。
由逆变器输入电压的变化可知,随着电机转速的升高,逆变器的输入电压也同时升高,并且在电机转速稳定后逆变器的输入电压保持不变,当额外加入一个力矩给电机,系统为维持速度就会增大逆变器的输入电压,基本确定所提转速控制方案是可行的。
1.3 硬件设计
通过在Simulink中对直流无刷电机控制系统的仿真,验证了利用3组霍尔信号控制三相桥式逆变电路的开关来实现电机的换相,同时利用速度调节器产生的电压信号调整电机上的磁场强度来控制电机的速度是可行性。实际上的控制系统就基于该原理连接不同的硬件实现的,再辅以软件控制让系统成为一个有机的整体。
根据上述需求,对硬件(电路架构)进行设计与分析。如果需要直流无刷电机动作,那么需要的基本模块有直流电源、逆变系统、功率驱动电路等,但这些模块组成的是一个开环系统。为实现对电机的控制,机器人必须加入霍尔信号获取系统和速度转换系统,使其构成一个完整的闭环系统。通过STM32可实现PID控制、霍尔逻辑脉冲宽度调制(PWM)控制、电流及电压保护等诸多功能。
导航系统架构如图2所示,工作站的导航部分是依托于集成芯片STM32F103V8T6建立,主要的被控对象是直流无刷电机,辅以电源电压监控,同时霍尔信号作为芯片的高级定时器的输入。整个系统的基本工作过程为电源电路根据速度调节器的不同值提供不同的电压,系统初始化并进行电压检测,启动电机,霍尔信号被芯片的高级定时器接收后经过功率驱动电路作用于逆变器的3个桥臂控制电机换相,同时霍尔信号接入一个普通定时器进行速度转换。当需要调速时,转换后的速度值和新的参考值一起通过比较寄存器产生用于控制直流电源电压输出的信号,用以控制逆变电路的直流输入[3]。
图2 导航系统架构
1.4 软件设计
软件开发平台使用的是Keil公司开发的MDK-ARM套件,该软件为基于Cortex-M、Cortex-R4、ARM、ARM9处理器设备提供了一个完整的开发环境,可满足绝大多数的嵌入式应用。设计使用的具体版本为Keil MDK5,包含了uVision5 IDE集成开发环境和ARM Compiler5编译器。
该设计中的程序分为主程序和中断子程序两部分,采用这样的设计是为了优化代码的运行效率,同时增强其可读性,且也有利于后期的调试和优化。主程序负责系统的初始化、和其相连的各个外设的初始化及提供子程序接口。为了确保电机的速度被精确控制,需要一系列的中断子程序来实现相应的功能,包括PI控制程序、霍尔信号的译码、霍尔信号的速度转换、换相信号的产生等。
2 图像匹配度检测模块设计
图像匹配度检测是指巡检机器人在变电站的标定位置停车并调用摄像机拍摄标定位置的图像,利用通信模块将图像回传给后台,后台软件在Python-OpenCV环境下识别回传图像与模板库内标准图像的差异度,如果差异度超过阈值就证明有异物悬挂或产生了较大的形变。为保证识别的准确度,背景滤除和畸形矫正技术被广泛应用。
图像处理算法主要依赖于OpenCV视觉库。OpenCV被大量应用在人机交互、图像识别、人脸识别、动作跟踪、机器视觉等领域。
2.1 摄像机调用
OpenCV中提供了摄像机调用的接口,可以通过其拍摄一段视频并且灰度化。为了获取视频,系统需要创建一个VideoCapture对象,这个对象的参数通常是一个设备的序列号或者是一段视频文件,如果是调用自身的摄像机则该参数为0。
2.2 差异度检测
2.2.1 关键技术
OpenCV中使用函数cv2.cornerHarris进行角点检测,该函数有输入图像的类型、角点检测中要考虑的邻域大小、窗口的大小、自由参数四个参数,通过其应用可获得较好的角点检测结果。
如果对检测有更高的要求,OpenCV函数库还可以提供亚像素级的角点检测函数cv2.cornerSubPix和适合在目标跟踪算法中使用的cv2.goodFeatureToTrack函数。
2.2.2 差异度检测的实现
二值化和角点检测是形状匹配的基础,角点作为描述图像特征的因子被当作形状匹配函数的输入。因角点算法具有旋转不变性,但当图像的尺寸发生变化时(如图像缩放),角点的描述就不再准确,即被判定为角点的像素点事实上可能不再是角点。为解决这个问题,系统使用根据Hu矩(一种图像特征描述方法,用于描述图像形状和几何特征的不变特性,具有平移、旋转和尺度不变性)计算的cv2.matchShape函数来进行形状匹配,具有缩放不变性。
2.3 背景减除算法
差异度检测算法中,不论是角点检测函数还是形状匹配函数,都要对图片中所有像素点进行遍历,嘈杂背景中的元素都会加入检测和匹配的过程。在实际的变电站应用中,天气等客观因素造成的背景变化是不可避免的,所以该算法投入应用,则必须配置一个高精度的背景减除算法。
2.3.1 背景建模
在视频中的任何一个像素点都是由K(一般取3~5)个高斯分布混合建模的,那么任意一个时间节点N的像素值为XN的概率为p(XN)=(XN,θj),式中:wj是第j个高斯分量的权重,η(XN,θj)是第k个分量的正态分布。在这个算法中使用适应值ωk/σk对K分布进行排序,其中,σk是第k个分量的协方差,wk为第k个高斯分布的权重。算法使用这个适应值对像素进行K分布排序,并且取其中的前B个像素作为背景的模型,其中B=argmin(>T),其中,阈值T是背景模型的最小部分,即背景在场景中的最小先验概率。背景减法通过将前景像素标记为远离任何背景像素大于2.5标准差的任何像素来执行,匹配测试值的第一个高斯分量将由一组更新方程进行更新。
此外,高斯混合分布模型可以将背景分量与前景分量进行比较,如果前景分量中的某个部分的色度和亮度都在设定的区间内则会被认定为阴影部分。基于背景亮度的考虑,Z.Zivkovic改进了该算法,为每一个像素都单独设定了一个K值,改进过后的算法对背景亮度的变化更加敏感。
2.3.2 测试
将上述算法打包成函数cv2.createBackgroundSubtractorMOG2,其包含了几个可调参数:进行建模场景的时间长度、高斯混合成分的数量、阈值等,在实际应用中全部设为默认值,测试结果如下。
1) 不同亮度的背景的减除。选用一段背景中含有不同亮度部分的视频,经算法优化,不同的亮度区域都被认定成了背景区域,说明高斯混合模型算法对于颜色和亮度都是敏感的。
2) 含有前景的图像的背景减除。采用视频中含有前景的一帧画面和经过背景减除之后含有前景的一帧画面进行对比,在这组实验中背景发生过一次变化(从白色变成蓝色),测试结果可知,当背景起初发生变化时会被当成前景不被减除,但由于算法中使用的函数具有自适应能力,蓝色部分很快被认定为背景并减除。
2.4 基于OpenCV的摄像机标定
由于机器人只搭载了一台单孔摄像机,导致拍摄的图片存在畸变,这就需要对摄像机进行标定。图像畸变是由四个内参数(fx,fy,cx,cy)和五个外参数(即三个径向畸变参数(k1,k2,k3)和两个切向畸变参数(p1,p2))造成的,想要消除畸变就必须求解出这些参数。求解参数的大致思路为,利用计算机中预存的包含明显图案模式的样本图片(如棋盘),图片上的一些特殊点(如棋盘的四个角点)的坐标是已知的,将这张预存的图片下载并打印,利用移动摄像机对标准图片拍摄若干张照片(拍摄的照片存在畸变),在畸变照片上的角点与标准图像中的角点之间建立方程组,求解这些方程组即可求出上文中的畸变参数[4],具体实现过程如下。
1) 设定好迭代过程停止的条件,cv2.TERM_CRITERIA_EPS表示精确度(误差)满足epsilon (误差设定值)时停止,cv2.TERM_CRITERIA_MAX_ITER表示迭代次数超过max_iter (最大允许迭代次数)时停止。cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER表示满足任意条件即可。
2) 获取标定板角点的位置并将坐标系建立在标定板上,建立2个数组用于存储角点的2D和3D坐标;使用cv2.findChessboardCorners函数找到棋盘格的角点。由于该函数找到的角点坐标并不是一个精确的坐标,如果有更高的精度需求,则需要使用cv2.cornerSubPix这个函数来找到亚像素级的角点位置。
3) 使用cv2.drawChessboardCorners函数把已经找到的角点在棋盘格的相应位置标记下来;再使用cv2.calibrateCamera函数来标定造成图像畸变的参数,返回摄像机矩阵、畸变系数、旋转和变换向量等。
4) 通过cv2.getOptimalNewCameraMatrix函数得到自由缩放系数,利用该系数对摄像机矩阵进行优化,同时返回一个包含感兴趣区域(ROI)的图像,后续程序可以用这个图像对结果进行裁剪。
3 视频实时回传设计
机器人不仅需要将在标定位置拍摄的图像与标准图像进行对比,同时也需要把巡检过程中的全部情况以视频形式传送给后台,以便后台人员对变电站有更及时和全面的了解。机器人的视频回传系统是一个基于树莓派的无线视频监控系统,树莓派插入无线网卡使机器人和后台PC保持在同一个局域网内,同时树莓派上的USB接口可连接搭载的摄像头。系统工作流程为基于Wi-Fi技术使机器人和后台保持在一个局域网内,通过V4L2接口技术完成视频的采集,在利用H.264编码技术完成视频编码,并在TCP/IP通信协议下搭建套接字(Socket)[5-7],最终将视频传送至后台。
3.1 关键技术分析
3.1.1 开发板介绍
Raspberry pi开发板是一款基于ARM架构、Linux操作系统的微型电脑,其尺寸小、售价低,拥有相较于单片机更大的内存,也可选用SD卡作为外存,并可拓展连接鼠标、键盘、无线网卡、摄像机及显示器等。
Raspberry pi拥有完善的Raspbian OS系统(基于Linux的树莓派板卡操作系统),相较于没有操作系统的芯片而言,在Raspbian OS下编写的通信程序将被极大地简化,且和PC端Linux系统下编写的程序差异并不大。
3.1.2 V4L2接口技术
Linux视频设备驱动(video for linux 2,V4L2)是一种在Linux系统下用于捕获影音硬件设备的接口,可为硬件设备提供驱动,也可通过一系列接口函数完成开发板和摄像机之间的指令传递和数据读取,其采集视频的流程如图3所示。
图3 V4L2采集视频流程
3.1.3 TCP/IP通信协议
国际标准化组织制定了实现开放系统互连的基础模型—OSI模型,具体可分为物理层、链路层、网络层、传输层、会话层、表示层和应用层,具体到TCP/IP协议下的模型可按图4划分,其中TCP属于传输层、V4L2和H.264属于第一、二层。
图4 TCP/IP协议下的模型示意
TCP/IP是面向连接的,在收发数据前必须和接收方建立三次可靠的连接(三次握手),结束后第四次握手断开连接。TCP网络编程是通过Socket套接字来实现,Socket可以理解为插座,其本质上是一种文件描述符,通过调用这个函数就可以返回一个包含了通信五元组(源端口、目的端口、源IP、目的IP、协议类型)的整形Socket描述符。
3.2 无线视频监控系统调试
在Socket通信前先设定机器人为客户端,后台PC为服务器端。编写TCP/IP协议下的Socket通信程序先要建立一个Socket套接字,设定协议的类型、套接字的类型、端口号等;接下来使用bind函数将套接字与主机间的IP、端口等信息关联,使用listen函数监听可能的访问,使用accept函数来相应接入请求,重新创建一个socket描述符用于与客户端交换信息,使用connect函数是用来完成客户端与服务器端的连接,使用send和recv函数用于传输和接收具体的数据,最后由close关闭,如图5所示。
图5 socket通信流程
4 结束语
针对变电站的智能巡检机器人的设计要求,把机器人的设计分成运动及导航、图像匹配检测、视频回传三部分。首先通过对磁传感器位置判断、PID控制技术、软硬件设计等实现了机器人的运动与导航;其次基于Python-OpenCV实现摄像机调用、差异度检测、摄像机标定等功能,并通过图像匹配的算法、摄像机畸形矫正和视频动态背景滤除提升识别准确率;最后利用Raspberry pi开发板、V4L2接口、TCP/IP通信协议以及Socket通信程序等技术构建了机器人视频回传系统。与其他巡检机器人最大差异在于,该设计加入了机器人在标定位置拍照并与模板库内标准照片自动对比差异度的功能,可在变电站存在异物悬挂或者较大形变时,自动发出报警,提高对变电站的巡检效率。