基于OpenCV的机械臂驱动系统设计
2017-03-21马超范光宇张治军黄达何群
马超+范光宇+张治军+黄达+何群
摘要:该文主要对四自由度机械臂控制系统进行了研究与设计,用于识别物体并抓取运输。首先,该文先对机械臂的整体机械结构进行设计包括它的底座、躯干、以及机械爪等,然后选择合适的躯干以及钩爪的驱动方式,构建出机械臂的机械结构部分;然后,我们则对其运动方式进行设计,包括电路控制板和驱动装置的选择,数据的接收以及发送方式,以及后期图像接口的设计等;在软件系统上选择了可移植能力强大的OpenCV,其提供的视觉处理算法非常丰富强大:扫描图像对齐、图像去噪、物体分析等,从而加强控制软件的可靠性和机器人运行过程的安全性。实验表明,该机械臂控制系统采用OpenCV不仅具有很好的控制精度,还具有很好的稳定性、准确性,而且在很大程度上改善了定位精度。
关键词:六自由度机械臂;OpenCV;伺服;制动
中图分类号:TP302 文献标识码:A 文章编号:1009-3044(2016)33-0227-03
1 机械臂控制系统软件设计
1.1 开发环境
本设计的开发环境是arduino。Arduino是一款完全开源的电子原型平台,包含了arduino板和arduino IDE。由欧洲开发团队开发,使用类似C语言的processing开发环境。Arduino可以自行设计或者购买已经焊接好的板子,程序代码写在arduino IDE上,实现对arduino板子的控制。
1.2 国内外研究现状
作为近几十年来发展起来的一种自动设备,机械臂可以通过编写软件程序来完成目标任务,它不仅大部分机械臂共同的机械有点,而且特别具有人的视觉以及判断能力。在作业过程中,机械臂控制的准确性和对环境的适应性,已经使其在各个领域有着广阔的发展前景。高级类型的机械臂,可以执行更复杂的操作。将机器臂运用于工业生产过程,除了可以提高生产率之外,还能够减弱工人的劳动强度,使生产过程实现自动控制。因此机械臂在近几年得到了愈来愈广泛的应用。
在国外,工业机器人的发展已经较为成熟,涵盖于各个行业,已经得到了非常广泛的运用,而相比国内,我国基础产业跟不上,机械设计的工艺也达不到一个极高的水平,而且部分设计不够系统科学,大多处于一个模仿的阶段。以上原因导致我国工业机器人在国际上并不能达到一个较高的水准。如今国内企业需要革新自己的技术,加强学习才能在国际市场上占有一席之地。
1.3 总体思路
1.3.1 机械臂软件设计核心思路
摄像头采集视频图像->利用OpenCV获得图像的一帧->对此帧图像进行滤波处理->将图像序列帧由RGB模型转为HSV模型->对得到的二值图像进行轮廓检测->创建回调函数并对得到的三幅图像进行合并->创建滑动条窗口->将得到的图像分为H,S,V三幅单通道图像->在目标体上绘制轮廓。
本文提到的OpenCV函数库是一个开源的跨平台的视觉图像处理库,利用此库中提供的开源算法并加以逻辑上的改进来提取摄像头中帧图像,再使用颜色阈值调节功能进行颜色识别,再对结果进行一系列的处理达到预期要求。
1.3.2 OpenCV简介
OpenCV是一个基于开源发型的跨平台计算机视觉库,可以运行在众多操作系统上,由一系列C函数和C++类构成,轻量且高效,其提供的视觉处理算法非常丰富,被大量使用于众多科学领域,卫星地图的图像整合拼凑;医学界病人器官图像的去噪处理;安全系统中的物体动态监测而预警;军事行动中代替人眼而进行众多无人操作与活动,不光如此,在图像处理能力外,还能对声谱图进行识别操作从而进行对声音的识别。
1.4 单一模块
1.4.1 颜色识别
颜色识别的首当之事应是正确选取颜色空间,常用的颜色空间有RGB、CMY、HSV、HIS等。本文采用RGB和HSV。
RGB(红、绿、蓝)可以看成一个三维的坐标系,一个坐标点表示一种颜色。HSV是颜色空间模型。表示颜色的是Hue,与坐标点不同,他使用有角度的圆形来表示相应颜色,比坐标点更加灵活。表示饱和度的是Saturation,饱和度越低,则颜色填充就越少,例如圆心处取值为0,那么颜色会非常的淡,从底部往上,圆的半径r越来越大,那么颜色就会越来越深。表示颜色的亮度的是Value,同理,也是从圆锥底端到顶端的数值渐变,底部表示为黑色,而顶端表示为白色。在实际实验环境中,RGB颜色经测验非常容易受到强光、弱光、阴影等其他因素的干扰。相比之下,HSV空间能更加稳定的处理这些光照的变化从而能更好地反应颜色本质、传达正确信息。
1.4.2 图像获取与处理
1.4.2.1 图像获取与预处理
利用体感周边外设中强大的Kinect攝像头(VideoCapture(…))获取周围环境图像,读取一张图片或视频中的一帧图像,进行两次滤波后利用cvtColor(imgOriginal, imgHSV, COLOR_BGR2HSV)函数进行RGB与HSV的转换,再在HSV空间下对彩色图像做直方图均衡化。
高斯滤波函数:cvSmooth(…CV—GAUSSIAN…)。真实图像的邻近点像素如果变化,不会十分明显,因为真实图像的像素点是缓慢迁移变化的,但是如果两个像素点倏忽变化的话,便会有很大的像素差,就是我们说的噪点,这时候便要用到广泛用于图像处理的减噪的高斯滤波,他对整幅图进行加权平均,从而能够减少噪声却又不失真(保留信号)。
中值滤波函数:cvSmooth(…CV—MEDIAN…)。有时候图像中会有孤立的噪声点从而会形成较大差异,这样会影响平均值也会产生较大噪音,所以便使用非线性平滑的中值滤波,他把图像中的孤立的噪声点用其领域中各个点值的中值代替从而有效的去噪并且能够保护信号边缘使之不模糊,其算法也十分简单。
1.4.2.2 图像细处理与生成
创建滑动条:返回所读取的颜色参数阙值。本文设定了6个参数:
[LowHue(色度下限值)HighHue(色度上限值)LowSaturation(饱和度下限值)HighSaturation(饱和度上限值)HighBrightness(亮度上限值)LowBrightness(亮度下限值)]
之后得到返回的参数阙值,便用于检查图像像素灰度是否在设置的范围内并且可以得到目标颜色的色度、饱和度和亮度单通道图像。
将得到的三个单通道图像进行按位与运算,这样便能检测其二值图像,由于此时会出现噪声,所以采用膨胀腐蚀的方法进行图像形态学处理,使得到的目标体进行最大的连通。
图像生成:查找轮廓和绘制轮廓,轮廓正确勾勒,图像便能正确显示。利用OpenCV中对灰度图像处理的Canny边缘检测法(cvCanny(…)),将试图独立的候选像素拼装成轮廓,轮廓的形成是对这些像素运用滞后性阙值,Canny边缘检测算法是高斯函数的一阶导数,是对信噪比与定位精度之乘积的最优化逼近算子。
Canny函數输入输出的都为灰度图,在边缘检测完成后,利用“cvFindContours(…)”函数得到输出的图像的轮廓函数(在二值图像中),检测轮廓个数,然后再用“cvDrawContours(…)”函数绘制检测的轮廓。
2 机械臂控制系统硬件设计
2.1 自由度及关节
本机械手臂采用4个电机实现4自由度,进行手臂的升降,转动,抓取,移动等功能。
2.2 基座及连杆
2.2.1 基座
基座是机械手臂的支撑,起到稳固的作用,为了使机械手臂更加的稳定,增大其与表面的接触面积,降低重心,提升其稳定性能。同时,基座的剩余部分,可用于防止控制的单片机及其扩展版,使空间充分利用。
2.3 机械手臂设计
机械手是机械行业中必不可少的一个部分,主要起到操作,转移等功能。根据工件的不同,机械手的精度,重量,形状,光滑程度等都会不一样,以至于达到节省成本或准确夹取工件等实际要求。一般机械手包括:1)灵巧手;2)吸附手;3)夹取手;4)专用操作器。本设计因实现的主要功能是夹取物体并转移,工件物体不确定,因此采用夹取手作为机械手臂的机械手进行操作。
2.4 驱动方式
调用Servo实现对舵机的控制,定义多个舵机,控制多个舵机,具体内容根据实际情况进行调试。采用for语句,当红外或者视觉采集到数据,给予反馈,实现舵机的停止或执行下一步。舵机的转动的角度通过脉冲宽度占空比实现。由于舵机牌子不同,舵机转动的角度也会不同。
本机械手臂通过电机的扭矩进行传动。手臂的升降,转动,抓取都是由能够承受很大力的电机进行完成。在机械手臂抓取物体时,尽量的平稳,并且力不能够过大或者过轻,移动时活动空间大。
机械行业一般常用的驱动方式有液压驱动,电机驱动和气压驱动三种方式,每种驱动方式各有优劣。本设计机械手臂中,要求驱动时满足一下条件:1)输出功率适中,效率高;2)精准度尽可能的高;3)便于维护,调试;4)安全性高;5)成本低。
综上所述,本设计采用电机驱动的方式对机械手臂进行驱动。电机参数如表所示:
本机械手臂采用控制角度的方式控制手臂。在初始位确定的情况下,通过控制角度,实现电机的转动,其优点是,能够精确控制位置,但是因为需要进行初始位置,导致运行时间过长。本文设计方案传动方式为舵机直接传动,故不多作介绍。
3 结论
机械臂控制系统是当今社会的一项非常重要的研究课题,尽管其发展已经有了一段很长的历史,但是其发展并不完全成熟。无论是学术界、工业还是在教育教学方面都一直在进行着这方面的研究,距离成熟阶段还要有一段时间。
本设计是基于OpenCV六自由度机械臂驱动系统的设计,以六自由度机械臂为控制对象,以arduino为开发环境,辅以有着丰富视觉处理算法的OpenCV软件,并在此基础上,采用先进的控制理论,以正确的控制方法为指导,进行了系统的硬件设计。
在整个系统的设计中,硬件的设计是本论文研究的重点,芯片的选型是系统硬件设计的保证,并且辅以可靠性分析为指导,保证了系统运行的可靠性和稳定性。
从实验结果中看出,我们设计制作的基于OpenCV的四自由度机械臂能够和一些中小型机器人控制器的性能要求类似,在操作灵活度、控制精度、易操作性等方面都表现出优秀的性能。然而,仍有一些不足之处需要进一步的改进。
1)机械臂的传感器提升。作为机械臂的控制对象,其结构、性能的优劣成为了机械臂的重中之重、中流砥柱,为了实际运行效果的完美,我们机械臂的手爪部分应加入压力等传感器,为控制的精准提供、保证更为完整的信息。
2)完善机械臂自动控制算法。算法的优良决定了机械臂是否能自动协调运行,特别在输入参数和机械臂抓取后的运输,需要更加优化、灵活的算法,从而将计算出的控制参数变得更加精确和一体。
3)视觉的广泛性运用。视觉不单单只作用与颜色的阈值识别,还包括如骨骼识别,轮廓识别等等,再后续的研究中,添入以上功能,可以使机械臂的作用范围变得更加的广泛。
鉴于上述情况,在以后的工作中,我们应该不断改进、完善,以提高该机械臂系统的稳定性以及可靠性。
参考文献:
[1] 方龙,陈丹,肖献保.基于单片机的机械手臂控制系统设计[J].计算机与信息技术,2012,8(8):89-90.
[2] 任美玲.机械臂的研究与进展[J].出国与就业,2012(2):84-85.
[3] 刘少丽.浅谈工业机械手设计[J].工业自动化,2011,40(7):45-46.
[4] 毛星云.OpenCV3编程入门[M].电子工业出版社,2015.
[5] 程晨.自律型机器人制作入门[M].基于Arduino.北京航空航天大学出版社,2013.
[6] (美)Don.Wilcher.学ARDUINO玩转电子制作[M].翁恺,译.人民邮电出版社,2013.
[7] 孙骏荣,吴明展,卢聪勇.Arduino一试就上手[M].科学出版社,2013.
[8] (德)乌尔里希·菲舍尔.简明机械手册[M].2版.杨放琼,编.湖南科学技术出版社,2012.
[9] 陈明秋.机械制图[M].武汉理工大学出版社,2009.
[10] 冈萨雷斯.数字图像处理[M].电子工业出版社,2011.
[11] 侯宾,张文志,戴源成,等.基于OpenCV的目标物体颜色及轮廓的识别方法[J].现代电子技术,2014(24).