基于OpenCV的麦克纳姆轮全向平台的视觉循线设计
2017-10-18张志安董培方梅新虎
朱 朔, 张志安, 董培方, 梅新虎
(1. 南京理工大学 机械工程学院, 江苏 南京 210094; 2. 南京理工大学 计算机科学与工程学院, 江苏 南京 210094)
基于OpenCV的麦克纳姆轮全向平台的视觉循线设计
朱 朔1, 张志安1, 董培方1, 梅新虎2
(1. 南京理工大学 机械工程学院, 江苏 南京 210094; 2. 南京理工大学 计算机科学与工程学院, 江苏 南京 210094)
针对仓库、 厂房等地对运送平台自主移动的需求, 文中着重进行了麦克纳姆轮全向移动平台的摄像头循线算法优化设计. 通过HSV与RGB结合分割的方式适应多背景的颜色分割. 采用概率霍夫变换检测直线后, 提出一种简化算法, 可准确获得目标直线并减少运算量. 在拐角与十字路口检测时引入凸包缺陷检测, 通过算法的优化与几何条件的综合判定, 做到准确检测. 采用OpenCV编程, 移植到Manifold嵌入式处理平台后, 经实际测试证明, 该算法能够达到实时分析的要求.
麦克纳姆轮; 全向平台; 摄像头循线; OpenCV; 嵌入式平台; 实时分析
Abstract: In order to satisfy the needs of the autonomous mobile transport platform in warehouse and factory, patrol line by camera of omni-directional platform with me can um wheel is studied in this article. Combination of HSV and RGB color segment is used to accommodate different kinds of background. Probabilistic hough transform is used to detect line, and an algorithm is proposed to get target line information and reduce the operating quantity. Convexity defects is used to detect turn and crossroad. The accuracy of detection is improved by the optimization algorithm and comprehensive judgment of geometry conditions. The program is based on OpenCV. It is transplanted to Manifold embedded platform. The actual test proved that the algorithm can achieve real-time analysis requirements.
Keywords: mecanum wheel; omni-directional platform; camera patrol line; OpenCV; embedded platform; real-time analysis
0 引 言
麦克纳姆轮因其全向移动的特点, 在现代工业中的应用越来越广泛. 麦克纳姆轮全向移动平台, 在要求移动灵活的仓库、 工厂、 停车场等场合有着巨大的市场潜力[1]. 仓库等地由于高效运行的要求, 必然要求物流小车是全向移动的, 并且自主程度越大越好, 传统的移动平台无法适应这种需求. 现在很多研究人员进行了麦克纳姆轮全向平台控制的研究, 除了采用微处理器进行控制外[2], 新型的智能控制方法例如手势控制平台的运动也逐渐增多[3]. 但是对应采用摄像头循线自主运动的麦克纳姆轮平台控制研究还较少. 基于这种需求, 本文设计了一种麦克纳姆轮全向移动平台的循线控制算法.
1 麦克纳姆轮的运动和控制
1.1 麦克纳姆轮平台的运动模型
本文设计的全向移动平台采用麦弗逊悬架, 底盘上安装4个麦克纳姆轮, 两个为左旋轮, 两个为右旋轮, 左旋轮、 右旋轮对角安装. 如图 1 所示.
图 1 4麦克纳姆轮移动平台运动分析Fig.1 Motion analysis of four mecanum wheels platform
以移动平台中心O点为原点建立全局坐标系. 在平面上, 全方位移动平台具有3个自由度. 当无刷直流电机驱动车轮旋转时, 可将车轮的运动分解为2个分运动, 一是沿垂直于电机轴方向的前进运动, 二是与辊子绕其轴线的旋转运动. 轮4中心的速度为
式中:R是麦克纳姆轮的直径, 用到的麦克纳姆轮直径为76 mm,α是电机轴和辊子的夹角.
另外, 由平台整体的速度可知
由式(1), 式(2)可得
同理可得
式中:J为系统逆运动学方程的雅克比矩阵. 此平台α角约为35°, 因此J矩阵中各元素均不为零, 所以总有rank(J)=3, 所以平台可以全方位移动.
该全方位移动平台的自由度为3, 但是拥有4个独立的电机, 所以为过驱动模式. 4个驱动之间必须相容, 即4个电机的角速度严格按照公式(4)给出的速度. 这就要求必须引入反馈进行闭环控制.
1.2 平台控制
平台的控制采用STM32F405作为主控芯片, 采用3510减速电机驱动平台. 在底盘的运动控制中, 电调通过CAN总线输出电机的运行状态信息, 根据反馈得出控制输出量输出至电调以驱动电机转动.
底盘硬件系统如图 2 所示, 实物图如图 3 所示.
图 2 底盘硬件控制系统Fig.2 Hardware controls system of underpan
图 3 平台实物图Fig.3 Picture of real platform
2 摄像头图像处理
如今图像处理与机器视觉已成为炙手可热的研究领域, 为检测、 工业自动化等带来更高的工作效率. 摄像头廉价、 可靠、 输出直观, 现在已经广泛应用于工业生产、 城市监控等领域. 本文采用常见的USB接口CMOS摄像头进行车辆前方的图像采集, 获得地面上预设线的图像.
2.1 图像的预处理
摄像头捕获图像之后, 由于光照干扰、 摄像头自身的缺陷以及传输过程中的干扰等问题, 会存在很多的缺陷, 所以首先进行图像滤波. 摄像头分辨率为640*480, 原图如图 4.
图 4 摄像头捕获的原图Fig.4 Original picture of camera
采用归一化块滤波器, 输出像素值是核窗口内像素值的均值 ( 所有像素加权系数相等), 其卷积核为[4]
图像平滑之后, 对图像进行颜色空间变换, 由RGB空间转化为HSV空间. HSV颜色空间中颜色的参数分别是: 色调(H), 饱和度(S), 明度(V). HSV颜色空间受光照影响较小, 所以很多情况下将采用RGB和HSV颜色空间结合的方式进行颜色分割.
本文设定不同的颜色分量取值范围, 获得图像掩膜, 将两种颜色空间分割获得的掩膜进行相与操作. 只用RGB颜色空间分割时, 效果如图5(a)所述, 只用HSV颜色分割时, 效果如图5(b)所示, RGB与HSV颜色分割相结合之后的分割效果如图5(c)所示.
图 5 颜色分割图Fig.5 Color segment picture
由以上效果可知, RGB与HSV颜色相结合使用时, 分割效果最好, 可以最大限度地分割出目标颜色. 但是可以看出分割的效果还不是很理想, 图像内部存在一些孔洞, 会对后续的识别产生不利影响.
图 6 开闭运算后的颜色分割图Fig.6 Color segment picture after morphological opening-and-closing operation
所以需要进一步对图像进行开闭运算. 在图像处理中, 膨胀与腐蚀都是常见的处理缺陷的手段[5]. 膨胀可以使图像中的目标区域生长, 这样就可以去除一些孔洞, 腐蚀则相反, 两者的结合可以得到预期的效果而不会大幅度影响整个画面. 腐蚀和膨胀都是集合操作.A被B膨胀, 表示为A⊕B, 定义为
式中:φ为空集;B为结构元素. 腐蚀的定义为
A被B腐蚀是包含在A中的B由z平移的所有点z的集合. 开运算即为先腐蚀后膨胀, 闭运算相反.
可以看出, 处理后效果更好, 填充了很多孔洞缺陷, 而且图像的边缘变得更平滑, 如图 6 所示.
2.2 目标区域的寻找
具体的程序流程如图 7 所示.
图 7 确定车身位置与初步运动程序流程Fig.7 Platform position located and preliminary movement flow control
2.3 边缘检测与直线检测
为了检测出白色区域的轮廓, 需要对前文获得的二值化图像进行边缘检测. 边缘是指图像局部强度变化最显著的部分, 是进行图像分割等操作的基础. 比较常用的边缘检测算子有: Canny、 Sobel等.
Canny 边缘检测算法是 John F. Canny 提出的一个多级边缘检测算法[6]. 由于本文需要检测各个方向的边缘, Sobel算子对竖直和水平的边缘较为敏感, 所以Sobel算子不合适, 于是文中选择Canny边缘检测算子[7].
Canny边缘检测中计算梯度幅值和方向:
1) 运用一对卷积阵列 (分别作用于x和y方向)Canny边缘检测中采用非极大值抑制来排除非边缘像素, 仅仅保留了一些细线条(候选边缘).
图 8 检测到的边缘Fig.8 Edges detected
2) 使用式(11), 式(12)计算梯度幅值和方向
最后, 使用了滞后阈值, 滞后阈值需要两个阈值(高阈值和低阈值), 根据这两个阈值来判断是否将像素保留为边缘像素.
3 直线检测与运动策略
3.1 概率霍夫直线检测
获得边缘后, 本文对整幅图像进行直线检测. 最常用的是霍夫直线检测算法. 标准霍夫变换需要计算所有的M个边缘点, 它的运算量很大. 如果在输入图像中抽取m(m 检测步骤如图 9. 检测到的直线如图 10 所示. 图 9 概率霍夫变换检测步骤Fig.9 Probabilistic hough transform process 图 10 检测到的直线Fig.10 Line detected 3.2 不同背景下的直线检测 图 11 是在不同颜色的地面上的颜色分割与直线的检测效果, 可以看出提出的算法可以适应各种颜色的地面, 具有广泛的适应性. 图 11 不同背景下检测到的直线Fig.11 Line detected against different background 3.3 斜率的计算 通过统计概率霍夫线变换, 获得直线的两个端点: (x1,y1), (x2,y2), 在整个图像中建立直角坐标系, 如图 12 所示. 图 12 图像中建立的直角坐标系Fig.12 Rectangular coordinate system in the image 这样, 根据直线的一般式方程 带入获得的直线端点坐标(x1,y1), (x2,y2)来解出直线的方程, 进而获得直线的斜率. 3.4 多条直线的筛选与排除 在直线检测中会遇到各种难以解决的问题: 贴条自身有宽度, 会检测出多条基本平行的直线; 检测出多条直线; 检测出本来是一条直线而在图像中检测为基本共线的间断的两条直线等. 传统的解决方法中有将所有检测到的直线进行归一化处理, 最终合成一条位于中间的直线; 还有一种方法, 将间断的共线直线合成为同一条直线. 上面两种直线的处理方式计算极为复杂, 都不适合本文的要求. 本文提出一种简单的方法来进行直线的筛选: 首先, 通过直线长度阈值除去过短的直线, 然后计算车辆当前位置点A与检测到的所有直线的距离, 采用点到直线距离公式 筛选出点到直线距离最短的直线, 认为该直线即为当前所检测到的贴条斜率, 这样, 便极大地简化了计算过程, 同时也符合设计要求. 随后, 根据斜率的正负与大小来判断直线的朝向, 进而控制麦克纳姆轮平台进行原地左转或者右转或者直行的命令. 但是仅仅依靠这种判断, 显然是无法达到要求的. 本文引入一种方法, 通过将A点正前方、 左前方、 右前方3个正方形内的白色像素总数进行对比, 再进行直线、 向左平移、 向右平移的操作. 优先级最高的是正前方的正方形, 如果正前方的正方形内的白色像素数目大于一定的阈值, 那么就认为车辆可以向前直行, 否则判断左前方是否符合要求, 符合则向左平移, 右前方同理. 3.5 左拐直角、 右拐直角、 十字路口的检测 传统的拐角和十字路口检测方法都是采用扫描与最小二乘法拟合, 这样的方法受角度和光照影响大, 无法准确地识别各类旋转后的目标. 本文提出一种基于凸包与凸包缺陷检测的方法, 可以大大减少因车身旋转带来的问题, 提高检测的成功率. 凸多边形拟合后的轮廓线与轮廓之间的部分为凸包缺陷[9]. 每个凸包缺陷区域, 本文选出4个特征量: 起始点, 结束点, 距离多边形最远点, 最远点到多边形的边的距离[10]. 本文的检测对象: 拐角和十字路口显然是具有凸包缺陷的. 针对拐角的情况, 左拐与右拐的凸包缺陷中, 右转的凸包可以看出缺陷内点在外侧两个起始点的左上方, 而且即使拐角在图像中有较大的偏移, 这个特征也不会改变. 而由图 13 可知, 即使检测到的图像存在缺陷或者噪点较多, 凸包缺陷也可以被清晰地检测出来, 获得准确的凸包缺陷几何信息, 不会影响对道路属性的判断. 图 13 拐角与十字路口检测Fig.13 Rectangular coordinate system in the image 至此, 视野中所有可能出现的视觉特征都被准确地检测出来. 4.1 移植 为保证程序运行效率, 程序采用依赖OpenCV库的C++编写, 而且可以满足跨平台的要求. 为了保证程序的运行实时及保证在麦克纳姆轮平台上的便携性, 采用大疆妙算Manifold作为嵌入式图像处理平台. 妙算配备了NVIDIA 公司的Tegra K1 作为核心处理器, 运行Ubuntu 14.04操作系统. 整个麦克纳姆轮全向平台采用STM32F405作为主控制器, 可保证车辆的全向移动以及转向. 上位机与下位机之间采用串口通信的方式进行数据传输, STM32F405在串口接收中断时对上位机Manifold的指令做出反应. 4.2 串口编程 为保证程序的简洁轻便, 本文采用自定义串口头文件的方式进行处理. 在妙算上, 串口2的设备号为ttyTHS3, 直接打开串口即可. 定义一个Comm类, 公有成员move, 有3个参数, 分别为前进量、 左移量、 旋转量. 下位机STM32根据这3个量可以合成平面内的任意运动. 协议开始标识: 0xff (-128), 结束标识: 0x80 (-0). 表 1 不同路面状况下的帧率 这样, 定义Comm类的变量Car之后, 执行Car.move(m,n,p)即可实现串口指令的输出. 在实验室的条件下, 对系统处理速度进行了测试, 测试结果如表 1 所示. 经过测试, 摄像头能够准确获得地面的标志信息, 帧率在20FPS左右, 满足实时性的要求, 车辆运行状况良好. 本文设计了一种麦克纳姆轮全向移动平台的摄像头循线算法, 提出了一种新的搜索与移动策略, 在检测出直线的同时, 通过优化算法减少了计算量, 提升了程序的效率. 并基于凸包缺陷提出了一种准确度较高的拐角与十字路口的识别方法. 经过移植到大疆Manifold嵌入式平台后, 检测的准确度与实时性都满足要求. [1] 侯彬, 李亚明. 麦克纳姆轮技术及其在船用轮式设备中的应用[J]. 船舶工程, 2011(3): 84-87. Hou Bin, Li Yaming. Mecanum wheel technology and its application in ship wheel devices[J]. Ship Engineering, 2011(3): 84-87. (in Chinese) [2] 魏权利, 高吉明. 基于STM32微处理器的全方位智能移动平台设计[J]. 机床与液压, 2016, (23): 34-37. Wei Quanli, Gao Jiming. Design of omni-directional mobile platform based on STM32 microprocessor[J]. Machine Tool & Hydraulics, 2016, (23): 34-37. (in Chinese) [3] 孙强, 王文涛, 周璇. 基于kinect传感器的全方位运输平台控制系统研究[J]. 电子设计工程, 2015, (24): 99-102. Sun Qiang, Wang Wentao, Zhou Xuan. Development of omnidirectional mobile system based on the kinect sensor[J]. Electronic Design Engineering, 2015, (24): 99-102.(in Chinese) [4] Pham C C, Ha S V U, Jeon J W. Adaptive Guided Image Filtering for Sharpness Enhancement and Noise Reduction[C]. Pacific Rim Conference on Advances in Image and Video Technology. Springer-Verlag, 2011: 323-334. [5] 杨信廷, 孙文娟, 李明, 等. 基于K均值聚类和开闭交替滤波的黄瓜叶片水滴荧光图像分割[J]. 农业工程学报, 2016, 32(17): 136-143. Yang Xinting, Sun Wenjuan, Li Ming, et al. Water droplets fluorescence image segmentation of cucumber leaves based on K-means clustering with opening and closing alternately filtering[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2016, 32(17): 136-143. (in Chinese) [6] 李俊山, 马颖, 赵方舟, 等. 改进的Canny图像边缘检测算法[J]. 光子学报, 2011, (增刊): 50-54. Li Junshan, Ma Ying, Zhao Fangzhou, et al. A novel arithmetic of image edge detection of canny operator[J]. Acta Photonica Sinica, 2011, (S1): 50-54. (in Chinese) [7] Bing W, Fan S S. An Improved CANNY Edge Detection Algorithm[C]. International Workshop on Computer Science and Engineering, 2010: 497-500. [8] 胡彬, 赵春霞. 基于概率霍夫变换的快速车道线检测方法[J]. 微电子学与计算机, 2011, (10): 177-180. Hu Bin, Zhao Chunxia. A fast lane detection method based on the progressive probabilistic hough transform[J]. Microelectronics & Computer, 2011, (10): 177-180. (in Chinese) [9] 李海, 张宪民, 陈忠. 基于直线检测的棋盘格角点自动提取[J]. 光学精密工程, 2015, (12): 3480-3489. Li Hai, Zhang Xianmin, Chen Zhong. Automatic corner detection of checkerboard based on LSD[J]. Optics and Precision Engineering, 2015, (12): 3480-3489. (in Chinese) [10] Youssef M M, Asari V K. Human action recognition using hull convexity defect features with multi-modality setups[J]. Pattern Recognition Letters, 2013, 34(15): 1971-1979. MachineVisionPatrolLineofMecanumWheelOmni-directionalPlatformBasedonOpenCV ZHU Shuo1, ZHANG Zhian1, DONG Peifang1, MEI Xinhu2 (1. School of Mechanical Engineering, Nanjing University of Science and Technology, Nanjing 210094, China; 2. School of Computer Science and Engineering, Nanjing University of Science and Technology, Nanjing 210094, China) 1671-7449(2017)05-0369-08 TP391.41 A 10.3969/j.issn.1671-7449.2017.05.001 2017-04-02 国家自然科学基金资助项目(11472008) 朱 朔(1992-), 男, 硕士生, 主要从事机械电子与图像处理等研究.4 移植与下位机串口通信
5 结束语