基于OpenCV的智能机械手臂的设计与实现

2015-12-08 12:55陈再师刘任任
电脑知识与技术 2015年25期
关键词:嵌入式系统

陈再师++刘任任

摘要:在机器人技术快速发展与持续完善的大环境下,工业机械手臂被广泛运用于工业领域中,其发展与应用意义重大。该论文采用TQ210开发板作为系统的主控模块,通过移植OpenCV视觉库到主控板,实现智能机械手臂的构建。在满足一定环境的要求下,它可以完全智能地抓取限定工作台面的物体。同时,它也可通过实时抓帧,测量周围物体的坐标位置,调整自身参数,实现其适应、交互的智能特性。

关键词:智能机械手臂;OpenCV视觉库;嵌入式系统;机器人控制

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)25-0118-02

1 引言

随着工业4.0概念的推广,在机器人技术快速发展与持续完善的大环境下,机械手臂现已广泛地运用于各工业领域中,其发展与应用有着十分重要的意义。在国内,机器手臂的研究起始于上世纪七十年代,相比于西方发达国家,我国对机械手臂的研究起步较晚,技术也相对落后。由于机械手臂可以实现更快、更精确地抓举物品、安装零件,可以更高强度的连续工作,所以现在人们开始把更多的精力用在了机械手臂的研究和制造上,期望它能给人类带来更多经济价值[1-4]。

现在所使用的机械手臂,大部分都是采用示教控制,即都是事先编好程序,使机械手臂按照一定的逻辑顺序从一个位置运动到另一个位置,这种控制方法对于流水线工作是简单有效的。但是当运动环境发生变化的时候,机械手臂还是会按照原来的编程好的路径运动,往往不能达到期望的位置,这就缺少了运动自主性。所以机械手臂的运动原理和核心控制系统就成为了机械手臂能够自由运动,抓放的基础,而控制核心的基石便是机械手臂的驱动技术的设计和研究。只有将机械手臂的运动系统的驱动与机械手臂运动系统算法很好的融合,才可以随时识别新的工作环境,动态调整手臂的运动路径,使得手臂能够准确定位目标物体。但目前机械手臂的研究还不是特别成熟和完善,很多成果只是单方面的或是基于仿真条件下的,所以本论文以实际对象为背景,对机械手臂运动的研究具有一定的理论和现实意义。

2 总体设计

系统主要是用6个mg995伺服舵机+16路舵机控制板实现机器人手臂的硬件动作部分;用TQ210+16路舵机控制板为核心实现机械手臂的控制部分;TQ210 +USB摄像头实现信息采集处理部分[5-6]。

系统的硬件平台主要由五部分组成:主控制板(TQ210)、USB摄像头、运动控制单元,如图1所示。其中,主控制板是TQ210开发板,它包含基S5PV210微处理器等硬件。运动控制单元为16路伺服舵机控制板和机械手臂,通过串口与主控制板相连实现机器人的动作控制。

3 详细设计

3.1机械手臂动作系统的硬件连接

由于本机器手臂的动作组是下载在舵机控制板中,因此主控制板可以根据所需的不同场景,发动不同的动作指令调取不同的动作组,使机器人能够做出相应的动作。具体方法如下:

(1)将舵机控制板的USB插针用跳线连接,通过miniUSB将控制板与PC相连。

(2)安装驱动,通过Windows环境下载动作组,双击安装。

(3)安装上位机软件环境,上位机软件需要有Microsoft.Net Framewoks2.0的支持。

(4)使用上位机软件下载动作。

下面以初始化动作组为例:控制以下六个多级到预设位置#0 P800 #1 P1500 #2 P1800 #3 P1800 #4 P1800 #5 P1800。选择动作组0,单击下载按钮,此预设动作组即被下载到舵机控制板256地址被自动编号为0动作组,下一个地址便是从498开始下载了。

舵机控制板与TQ210的串口TX1相连,+极连接VDD5V,-极连接GND,使用串口1为TQ210与舵机板的通信提供硬件基础,使用串口2为TQ210与Arduino通信提供基础,串口0作为pc的打印终端使用,具体如图2所示。

3.2 主控制板的RS232通信方法

主控制板与舵机控制板以及Arduino拓展版的通信方法均是通过RS232方法实现信息传输。S5PV210可以方便地利用UART控制器(TQ210实验板的UART控制器为SP3232EEN)实现串口通讯功能。如图3所示。

S5PV210属于常规的电平转换芯片,其作用在于:实现53C2440端的TTL电平和RS232串口协议标准规定的电平两者之间的灵活切换。嵌入式Linux内核在主控制板内运作的情况下,在重编译移植的工作中将所支持的串口驱动加入配置选项里面。其连接串口的方式可分成三种类型,其主控板里面的三线串口引脚中的RXD、TXD连接的分别是Arduino平台中的引脚TXD、RXD,一般情况上,其他针角连接GND针脚,或干脆悬空。该系统内串口0与/dev/ttys0相对应,串口1与/dev/ttys1相对应,串口2实现了系统指令和传感信息两者的传输,与之相应的设备文件是/dev /ttyS2。TQ210的实验板有三个串口接口,其中只有串口0与SP3232相连,本系统就是用此串口0作为开发板与宿主机的串口终端链接,进行控制;采用串口1与舵机控制板相连,组成是机械手臂动作模块,用以实现主机控制手臂动作。

3.3 控制指令的编码设计

机器人运动控制和内部传感器信息采集单元通过串口实现与上位机两者之间的通讯。其控制指令集:# P S T

具体释义如下:

=舵机号,0-31; =脉冲宽度单位微秒,范围500-2500; =移动速率us/s每秒移动脉宽数, 针对一个舵机有效;

舵机控制板可以直接提取以上控制指令加以执行。如:"#5 P1600 S750 ",表示移动舵机号5到脉宽 1600us 速率为每秒移动脉宽750微秒;"#5 P1600 #10 P750 T2500 ",表示移动舵机号5 到脉宽1600us移动舵机号10到脉宽750us使用时间为2500ms。

3.4 OpenCV图像处理

OpenCV[7,8]调试开发是在Windows下通过vs2008完成的,项目集成在Linux下进行,具体如下:

(1)Windows下安装OpenCV主要使用cmake工具将源码配置好,再使用vs2008打开工程编译生成动态链接库。

C:\ OpenCV-2.1.0\VS-2008\include\OpenCV

C:\ OpenCV-2.1.0\VS-2008\lib

C:\ OpenCV-2.1.0\VS-2008\bin,三个目录分别存放了OpenCV开发依赖的头文件,动态连接及可执行文件。然后在配置vs2008就可以使用OpenCV开发了。

(2)Linux的安装主要修改makefile,给ubuntu安装OpenCV需要的依赖库,

[sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev]和[libjpeg62-dev libtiff4-dev libswscale-dev libjasper-dev]。使用cmake生成makefile,然后编译安装就能生成OpenCV的库文件。

OpenCV图像处理过程具体如下:

(1)抓取一帧图片并灰度处理。

(2)通过极值处理提取轮廓。

(3)判断物体轮廓分布在哪片区域再返回转向坐标指令。

3.5 机械手臂根据物体位置确定动作组

根据摄像头和机械手臂建立的坐标系,确定机械手臂的运动控制库。根据OpenCV返回的物体位置,直接匹配运动控制库,实现根据物体在坐标系中的位置规划机械手臂运动抓取物体的目的。

首先将串口指令封装,void HandMove(int num,int degree,int time)函数用来控制伺服电机并适当延时,随后根据物体位置调用运动控制库,匹配动作组启动机械手臂抓取物体。

物体以机械手臂基座的位置为圆心呈一定角度和距离,角度和距离根据OpenCV像素坐标计算得出,物体坐标封装在结构体struct Location变量goal中,直接通过函数计算得出。

distance = sqrt(goal.X*goal.X + goal.Y*goal.Y);

angle =180.0/3.14159*atan2(goal.X,goal.Y);

再通过HandMove(1,1500-angle*8,800);调整底座舵机直接转向物体,匹配动作组抓取物体。

好的机械手臂应具备学习能力,我设计的这款机械手臂也不例外。当机械手臂完成抓取物体之前的任务后,会提醒用户是否启动学习模式,这时候用户选择学习即可通过图形界面在线调整机械手臂,系统将自动记录更新后的运动数据,系统下次将自动调用新的动作库数据。

4 结论

本作品通过运用嵌入式开发中的某些技术,实现了机械手臂的智能化,具体总结如下:

(1)以TQ210开发板作为整个工作系统的控制主板,对各种数据信号进行了相关处理。

(2)以OpenCV作为视觉库,实现了机械手臂对物体实施抓取动作的路径设计。

(3)在一定环境下,机械手臂可不接受外界控制完全自主执行抓取动作。

(4)能通过实时抓帧、测量周围的物体的坐标位置,调整自身参数,以实现其适应、交互的智能特性。

由于在时间和实验条件上的限制,在实验数据的采集、理论方法和实际控制等方面都存在一些不足之处,总结如下:

(1)机械手臂抓取目标物体的路径,不仅仅只能通过OpenCV进行图像处理得到,还可以通过建模,运用智能优化算法得到,如:蚁群算法、粒子群算法,禁忌搜索算法等。

(2)机械手臂自由度比较有限,抓取范围和抓取物体都受到一定的限制,还不能360度地旋转。

(3)运动控制库建立比较欠缺,待完善。

参考文献:

[1] 高微,杨中平,赵荣飞,等.机械手臂结构优化设计[J].机械设计与制造,2006(1):13-15.

[2] 刘伟,齐晓慧.基于视觉的机械手臂自主抓物的实现[J].兵工自动化,2008(12):79-80.

[3] Bicchi A, Tonietti G. Fast and "soft-arm" tactics [robot arm design]. IEEE Robotics & Amp Amp Automation Magazine, 2004, 11(2):22-33.

[4] Khan S G, Grafi M A. Humanoid Robot Arm Adaptive Control: Experimental Implementation. Journal of Applied Sciences, 2014, 14(19):2267-2275.

[5] 徐中林.基于Arduino平台频率、占空比测试仪器的制作[J].沧州师范学院学报,2015(1):38-41.

[6] 刘泽良,胡日新.物联网技术下基于Arduino的智能公交系统模型设计[J].实验技术与管理,2014(11):140-143.

[7] Bradski G. The OpenCV Library. Doctor Dobbs Journal, 2000, 25(11):384-386.

[8] 刘瑞祯.OpenCV教程[M].北京:北京航空航天大学出版社,2007.

猜你喜欢
嵌入式系统
Teaching Research on IoT and—Embedded System of Software Engineering
基于Xilinx口袋实验室的组合逻辑电路设计实验
面向应用的智能专业嵌入式系统教学
基于AVR单片机的SPI接口设计与实现
办公自动化系统的设计
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究