一种基于OpenCV视觉处理的Tripod机器人控制方法

文档序号:27039588发布日期:2021-10-24 06:42阅读:127来源:国知局
一种基于OpenCV视觉处理的Tripod机器人控制方法
一种基于opencv视觉处理的tripod机器人控制方法
技术领域
1.本发明涉及视觉控制领域,特别是一种基于opencv视觉处理的tripod机器人控制方法。


背景技术:

2.工业生产中经常需要将物体拾起并摆放在新的位置,这种工作,动作单一但是重复性大,对人来说很难不疲劳、快速并准确的完成,但是机器人系统却能轻松完成这种工作,其准确性和快速性是人所不能比的,使用机器人和工作平台,利用摄像头,对工作平台进行拍照,通过对获取的图像,利用opencv计算机视觉库对图片进行图像处理,对平台上的几何体进行颜色和形状的识别,并获取其坐标位置,通过路径优化,使用尽可能少的时间把每个几何体拾起并放置到正确位置是本发明要解决的技术问题。


技术实现要素:

3.针对上述情况,为解决现有技术之缺陷,本发明之目的就是提供一种基于opencv视觉处理的tripod机器人控制方法,可有效解决将物体拾起并摆放在新的位置的问题。
4.本发明解决的技术方案是,1)通过摄像头获取几何体的图像,进行图像处理,当外环上几何体的朝向与内圆几何图形孔位的朝向一致,夹角θ=0
°
,所以不用考虑tripod旋转的角度,通过颜色和形状的识别得出外环上三种不同颜色的圆、三角形、五角星,利用外环各个几何体的中心点到内环中心点的线段,求各个线段与水平方向的夹角,用公式 x=180cosθ,y=180sinθ.,求出各个几何体的实际坐标,将相同颜色的几何体预放在内圆相对应的位置上,然后进行路径选择,设计最优抓取顺序,得出一条最短路径,然后把这把相应的信息传给tripod机器人,tripod开始按照优化的路径进行抓取动作;
5.2)当外环可以旋转,此时,几何体的朝向与内圆几何图形孔位的朝向有一定夹角,通过图像处理,计算出外环每个几何体与内圆相对应的几何体之间的夹角θ,并把各个角度随颜色、形状、坐标、一起传给tripod机器人,在步骤1)的基础上进行相应角度的旋转,从而准确的放进目标位置。
6.本发明对几何体形状、颜色进行了很好的识别,同时对各个几何体的进行了较为准确的定位,在机器人在正确抓取几何体的同时,满足了抓取时间尽可能的短要求,是视觉处理的 tripod机器人控制方法上的创新。
附图说明
7.图1为本发明的图像处理流程图。
8.图2为本发明的图像腐蚀示意图。
9.图3为本发明的图像膨胀示意图。
10.图4为本发明的图像矫正示意图。
11.图5为本发明的图像矫正前示意图。
12.图6为本发明的图像矫正后示意图。
13.图7为本发明的圆形识别效果图。
14.图8为本发明的三角形识别效果图。
15.图9为本发明的五角星识别效果图。
16.图10为本发明的三角形角度计算二种情况示意图。
17.图11为本发明五角星旋转角度计算的三种情况示意图。
18.图12为本发明圆形、三角形和五角星角度识别结果示意图。
19.图13为本发明各个几何体的实际坐标示意图。
20.图14为本发明具体实施例1结果示意图。
21.图15为本发明具体实施例2结果示意图。
具体实施方式
22.以下结合附图对本发明的具体实施方式作进一步详细说明。
23.由图1给出,本发明具体包括以下步骤:
24.1)图像获取
25.利用opencv提供cvcreatecameracapture()函数从摄像头中捕获图像,使用cvsaveimage 来保存捕获的图像,供后续处理使用;
26.2)图像处理
27.①
灰度及平滑度处理
28.由于拍摄图像时受自身质量和环境因素的影响,拍摄的图像中难免会有噪声或失真,而进行平滑处理则能减少图像上的噪声或失真,平滑处理需要用到一个滤波器,而常用的滤波器有归一化滤波器、中值滤波器、高斯滤波器、双边滤波器,高斯滤波在保留信号的条件下减少噪声,但是,高斯滤波会磨平边缘,而双边滤波能够提供一种不会将边缘的平滑掉的方法,因此先用cvcvtcolor()函数对图片进行灰度处理,然后利用cvsmooth()函数对灰度图片进行双边滤波;
29.②
阈值处理
30.处理图像时受各种条件的限制和干扰,图片的灰度值往往与实际景物不完全匹配,这将直接影响到图片的后续处理,为了辨识和分析目标,需要将它们分离提取出来,在此基础上才可能对目标进一步利用,利用cvthreshold函数可以增强灰度的变化范围、丰富灰度层次,达到增强图像的对比度和分辨率效果,理想状态下,背景与对象之间的灰度差异很大,利用图像的灰度特征来选择一个或多个最佳灰度阈值,并将图像中每个像素的灰度值与阈值相比较,最后将对应的像素根据比较结果分到合适的类别中;
31.阈值化的表示如下:
[0032][0033]
经多次调试,本发明选取的阈值范围为(30,255);
[0034]
thresh是阈值,这里thresh=30;
[0035]
max val是灰度最大值,这里max val=255;
[0036]
dst(x,y)、src(x,y)代表某一点像素的值;
[0037]

腐蚀和膨胀
[0038]
腐蚀和膨胀是基本的形态学操作,广泛应用于:(1)消除噪声,(2)分割独立的图像元素,以及连接相邻的元素,(3)寻找图像中的明显的极大值区域或极小值区域;
[0039]
腐蚀的原理:将图像a(二值图或灰度图)与任意形状的内核b(通常为正方形或圆形) 进行卷积,而内核b中有一个可定义的锚点,通常定义为内核中心点,进行腐蚀操作时,将内核b划过图像,提取内核b覆盖区域的最小像素值,并代替锚点位置的像素,如图2所示,这样会使图像中的亮度区域被隔离且缩小,
[0040]
腐蚀公式为:
[0041]
erode(x,y)代表某一点的像素值;
[0042]
min src(x+x’,y+y’)代表锚点范围内像素最小值;
[0043]
膨胀的原理:将图像a(二值图或灰度图)与任意形状的内核b(通常为正方形或圆形) 进行卷积,而内核b中有一个可定义的锚点,通常定义为内核中心点,进行膨胀操作时,将内核b划过图像,提取内核b覆盖区域的最大像素值,并代替锚点位置的像素,如图3所示,这样会使图像中的亮度区域得到拓展和连接,
[0044]
膨胀公式为:
[0045]
dilate(x,y)代表某一点的像素值;
[0046]
max src(x+x’,y+y’)代表锚点范围内像素最大值;
[0047]

图像矫正
[0048]
由于摄像头广度角及安装位置的限制,无法对圆盘进行垂直拍摄,为了拍摄到完整的图片,摄像头的光轴与拍摄的圆盘有一定的倾斜角,无法直接在倾斜的图片上进行角度识别,因此需要对图片进行矫正,比较常用的矫正方法有:仿射变换cvwarpaffine()、透视变换 cvwarpperspective()等方法,透视变换方法主要依据摄像机成像原理,实现图像校正,比起仿射变换的2*3的映射矩阵,透视变换3*3的映射矩阵具有更大的灵活性与更为准确的优点:仿射变化只能把矩形矫正为平行四边形,而经过2次透射变化却可以将原图片矫正为任意的四边形,使用范围更广,如图4所示;
[0049]

透视变换
[0050]
根据透视变换原理,已知变换对应的几个点就可以求取变换矩阵,opencv提供了一个方便的函数cvgetsperspectivetransform(),可以通过对应点列表计算3
×
3变换矩阵,在得出变换矩阵之后,使用cvwarpperspective()函数对整幅源图像进行透视变换,得到正投影下的目标图像,并把目标图像保存下来,方便后续使用,矫正前与矫正后的图如图5、图6所示;
[0051]
3)图形特征形状识别
[0052]

圆的识别
[0053]
霍夫圆变换检测圆是在图像中检测圆的一种方法,函数是cvhoughcircles,其具有简单、高效及其准确等诸多优点而被广泛的应用,数学原理如下:
[0054][0055]
根据极坐标,圆上任意一点的坐标可以表示为如上形式,所以对于任意一个圆,假设中心像素点p(x0,y0),像素点已知,圆半径已知,则旋转360由极坐标方程可以得到每点上的坐标,圆形检测如图7所示;
[0056]

三角形的识别
[0057]
opencv中提供一个轮廓提取函数,即是cvfindcontours,一个轮廓一般对应一系列的点,也就是图像中的一条曲线,在opencv中一般用序列cvseq来存储轮廓信息;
[0058]
当进行形状分析时,通常需要使用多边形逼近一个轮廓,使得顶点数目变少,opencv中函数cvapproxpoly可以实现这个功能,根据三角形三个顶点、三条边的特点,再加上判断三角形的面积来过滤cvapproxpoly逼近的结果,得到三角形的轮廓,在得到三角形轮廓后,使用轮廓矩cvmoments计算三角形的重心三角形识别效果如图8所示;
[0059]

五角星的识别
[0060]
轮廓提取及轮廓逼近与三角形的识别相同,但这里利用五角星10个顶点、十条边的特点,再加上判断五角星的面积来过滤cvapproxpoly()逼近的结果,得到五角星的轮廓,在得到五角星的轮廓后,同样使用cvmoments()计算五角星的重心,即中心点,五角星识别及整体效果如图9所示;
[0061]
4)图形特征颜色识别
[0062]
图像处理中经常要进行颜色空间的转换,摄像头采集的图像颜色空间通常是rgb模型,而hsv模型是一种直观的颜色模型,更易于分辨颜色分量,当用于指定的颜色分割时,能减少光照强度带来的影响;
[0063]
opencv提供rgb颜色空间转换到hsv的函数,即cvcvtcolor()函数,rgb到hsv 的转换如下:设(r,g,b)分别是一个颜色的红、绿、蓝的坐标,e=min(r,g,b),则计算
[0064]
v=max(r,g,b),
ꢀꢀꢀ
(3

5)
[0065][0066][0067]
v代表明度、s代表饱和度、h代表色调;
[0068]
在形状识别中,得到圆、三角形、五角星的像素坐标,然后使用cv_image_elem函数读取这三种形状的像素坐标,进行颜色空间转换的计算,得出h、s、v的值,接着判断这三个值是否符合我们设定的颜色区域值,从而筛选出我们想要的橙色、黄色和蓝色,经过多次测
试,选定的橙色、黄色和蓝色的范围分别是(0,40),(40,70),(180,230);
[0069]
5)图形特征角度识别
[0070]

圆的角度
[0071]
由于外环上抓取的圆不需要旋转或者转动任意角度就可以放在内圆中,所以圆的角度不用考虑;
[0072]

三角形的角度
[0073]
在三角形的识别中,根据得到的三角形的轮廓(包含三角形的3个顶点,3条边),对存储这3个顶点坐标的pt[3]数组按点的纵坐标y由大到小进行排序,得到新的点序列数组pt[3],如图10所示:
[0074]
求取向量和x轴正方向的夹角θ的余弦值,即
[0075]
如果θ<90
°
,tripod的旋转轴顺时针旋转θ角度;
[0076]
如果θ>90
°
,tripod的旋转轴逆时针旋转(180
°‑
θ)角度;
[0077]

五角星的角度
[0078]
在五角星的识别中,根据得到五角星的轮廓(包含五角星的10个顶点,10条边),对存储这10个顶点坐标的pt[10]数组按点的纵坐标y由大到小进行排序,得到新的顶点序列数组 pt[10],如图11所示:(1)当有四个顶点的y值相等时,即是图中第一种情况,此时,比较 pt[1]、pt[2]、pt[3]和pt[4]这四个点的x值,找出其中x值最小的点,假设设此点为p,然后求取向量和x轴正方向的夹角θ的余弦值,即
[0079][0080]
如果θ<90
°
,tripod的旋转轴顺时针旋转θ角度;
[0081]
如果θ>90
°
,tripod的旋转轴逆时针旋转(180
°‑
θ)角度;
[0082]
(2)当10个顶点的y值都不同时,即是图中第二种和第三种情况。求取向量和 x轴正方向的夹角θ的余弦值,即
[0083][0084]
(3)如果θ<90
°
,tripod的旋转轴顺时针旋转θ角度;
[0085]
如果θ>90
°
,tripod的旋转轴逆时针旋转(180
°‑
θ)角度;
[0086]
圆形、三角形和五角星角度识别如图12所示;
[0087]
6)坐标定位
[0088]
利用外环各个几何体的中心点到内环中心点的线段,求各个线段与水平方向的夹角θ,因为整个圆盘直径为180mm,用公式x=180cosθ,y=180sinθ.,可求出各个几何体的实际坐标,如图13所示;
[0089]
7)路径优化
[0090]

从外到内:因为需要把颜色相同的几何体放在一起,经过推算,内环共有36种摆
放方式,当外环几何体位置相对固定后,摆放的方式确定一种后,各个几何体从从外环起始点到内环目标点的距离就已经确定,这时会得出一个距离之和out_in_distance,所以36种情况对应36个out_in_distance,通过冒泡排序,能够得到一个最小的out_in_distance,此时可以根据最小的0ut_in_distance,确定摆放方式;
[0091]

从内到外:普通的贪心算法,只能实现局部最优,所以在抓取的时候,使用优化的贪心算法,包括以下步骤:
[0092]
1:冒泡排序,去抓取几何体到目标点距离最小的几何体;
[0093]
2:抓取后,给内环各个集合体卡槽中心点到该几何体外环坐标的距离赋个很大值,如 10000,即把抓取过的点剔除,防止动作重复;
[0094]
3:把第一个放置到目标位置后,计算该几何体中心点到剩余8个几何体的距离,并把各个距离加上与其对应的out_in_distance得到8个距离和,然后比较8个距离和,去抓距离和最短的那个几何体;
[0095]
4:重复步骤2,直至完全把几何体全部放进对应的位置;
[0096]
8)通讯、抓取
[0097]
采用tcp/ip通讯,发送一个202字节的数据帧,根据通讯需要,定义一个结构体 all_move_data,the_last_data数据包用于存放起始校验码和抓取各几何体的起点、终点、角度值,构造一个通讯函数communication(),以端口12000和ip地址10.86.13.236与 vnc

viewer服务器连接,并将the_last_data数据包传给tripod机器人,之后机器人按照优化的路径进行拾取与放置动作。
[0098]
本发明摄像头选型:jd

202高清摄像头模组硬件30万像素usb免驱微型监控模块,分辨率640*480,理由是:
[0099]
*标准usb2.0接口:高清免驱动即插即用
[0100]
*感光器件:高品质cmos1/4英寸,硬件30万像素
[0101]
*图像处理部分用到算法,对摄像头像素、广度角非畸变等要求较小,故一般的摄像头即可满足实际要求,节约成本。
[0102]
摄像头获取的图片时,由于光线的明暗、个别图形的反光以及拍摄的角度,都会对后期的图像处理造成很大的影响,考虑到场地、光线等因素的改变,之前经过多次调试安装的摄像头位置,可能并不适用,而手拿着摄像头拍摄,因其具有操作简便、灵活、适应范围更广等诸多优点,可以成功的避免摄像头安放在固定位置时带来的困扰。
[0103]
在具体使用时,实施例1为当外环上几何体的朝向与内圆几何图形孔位的朝向一致时,抓取结果见图14所示,结果表明,颜色相同的几何体均能放在一起,所以颜色识别方面没有问题,个别放不进去的原因如下:
[0104]
(1)由于实施例1各个几何体与内环放置卡槽夹角为0,即使这样,经过图像处理也会有一定误差,所以在处理图像的时候,如果程序判断九个几何体与对应卡槽之间的角度,均小于一个较小的角度如5
°
,就直接对所有角度进行赋值为0,所以放不进去与角度无关。
[0105]
(2)在实施例1中,无论是外环还是内圆都是固定的,即放置几何体的卡槽中心点固定。在把角度赋值为0的同时,也把各个点的实际坐标赋给各个不同颜色不同形状的几何体。经过路径优化后,几何体的起点及终点均已是实际值,而理论上实际值要比经过图像处理后得到的坐标精度要高上很多,表面上,放不进去,与实际坐标无关,但是,经过多次分
析,我们发现:因为各个几何体下面的圆柱体,比外环卡槽的圆柱体在直径上要小3mm,而放的时候,几何体下面的圆柱体的圆心不一定和实际中心点重合,因而产生一定偏差。
[0106]
实施例2为几何体的朝向与内圆几何图形孔位的朝向有一定夹角时,抓取结果见图15所示,结果表明,与实施例1的不同之处在于随机转动外圈圆环,外环放置的彩色几何图形的朝向与内圆几何孔位的有一定夹角,颜色相同的几何体均能放在一起,所以颜色识别方面没有问题,个别放不进去的原因如下:
[0107]
(1)在进行图片矫正时,是以理论中平台为水平进行矫正的,而实际中的测试平台并非水平,经测量外圆环上最高与最低处高度差可达3mm,所以这是造成矫正不准,个别坐标有较大误差的因素之一。
[0108]
(2)除了机械本身的误差因素外,在图像处理方面:如矫正,虽然可以矫正得尽可能接近垂直拍照时效果,但与理论上垂直拍照会有一定差距。
[0109]
(3)在矫正之后,还涉及到图形识别,图形识别轮廓的时候是以多次逼近方法得到的结果,与真实的轮廓存在一定出入,这样求取中心点的时候会出现一定的误差,从而造成抓偏。
[0110]
本发明能按要求准确地把几何体放到目标位置,在抓取时间的控制上效果也较好,同时也为后续如何把一张任意的图片矫正的和垂直拍照时效果尽可能的一样而误差较小,以及在光线很强或者光强不足的情况下,怎么才能准确的识别几何体形状和颜色指明了方向。
[0111]
本发明是在以贝加莱公司提供的tripod机器人的基础上进行的,选取了价格较为低廉而又不影响拍照效果的摄像头,对平台进行拍照并保存,然后通过图像处理和算法设计,对几何体形状、颜色进行了很好的识别,同时对各个几何体的进行了较为准确的定位,在路径优化中,采用dijkstra算法,从全局出发,设计了较优的抓取顺序,通过通讯程序,把获得的颜色、形状、起始及终点坐标、抓取顺序发送给机器人,从而对其进行运动控制,在机器人在正确抓取几何体的同时,满足了抓取时间尽可能的短要求,是视觉处理的tripod机器人控制方法上的创新,具有良好的经济和社会效益。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1