智能写字机器人设计
2016-09-07陈玉敏孟宪民杨东岳
陈玉敏,谢 玮,孟宪民,杨东岳
(1.哈尔滨工业大学(威海)信息与电气工程学院,山东 威海 264209;2.山东卡尔电气股份有限公司,山东 威海 264209)
智能写字机器人设计
陈玉敏1,谢玮1,孟宪民2,杨东岳1
(1.哈尔滨工业大学(威海)信息与电气工程学院,山东 威海264209;2.山东卡尔电气股份有限公司,山东 威海264209)
设计了一种两自由度写字机器人,可以很方便地完成在平面上的书写绘画任务;可以把在计算机输入的文字通过控制算法和硬件电路用步进电机带动写字笔在纸面自动地描写出来;上位机选用计算机作为主机,采用Arduino系统作为从机;在计算机上将输入的文字转换成坐标形式的G代码,在通过串口发送给下位机控制器,下位机控制器采用直线插补和圆弧形插补算法,输出控制脉冲和方向电平控制步进电机前进或者后退;步进电机是由脉冲控制的,每发来一个脉冲就前进一步,实现了对距离的精确控制;还可以拓展一轴,加入Z轴理论上可以实现3D打印功能,把写字笔换成雕刻刀或者是激光头可以雕刻立体作品,拓展功能丰富。
写字机器人;Arduino系统;插补算法;精确控制
0 引言
机器人方向作为高科技的重要研究领域,已经成为科技进步中不可缺少的重要装备。各智能机器人已应用到实际生活中,相关研究日益深入[1-2]。随着机器人技术广泛应用,各高校陆续开展了机器人课程的教学,设计一种可以在平面书写绘画的机器人应用于教学与科研中。
1 系统整体设计
写字机器人整体控制系统由计算机,控制器,电机驱动电路和电机四部分组成。计算机作为辅助控制器,主控制器由Arduino系统构成,执行环节则由电机组成。
计算机作为上位机主要将输入的文本信息转化为G代码,软件为Inkscape,转化后文件为.nc文件,用记事本方式打开看到n组坐标,也就是文本信息的坐标值。然后使用上位机软件Grbl Controller与下位机通信,将生成的G代码通过串口发送给单片机,使之执行目标文本的坐标信息。Grbl Controller不仅能将G代码发送给单片机,还能在可视化界面上模拟当前机器人写字进程。
下位机中单片机系统通过串口接收上位机发送的G代码,通过内部程序将G代码识别转换,再经逐点比较法的直线插补和圆弧插补程序及电机控制程序控制电机状态。电机是机器人动力部分,由控制器来控制电机正或反转实现机器人末端写字笔的左右或者前后平移和转动,实践中控制每输出一个控制脉冲,步进电机就前进或后退一步。
2 系统硬件设计
写字机器人的执行器选用步进电机加丝杠组合实现对行走距离的精确把握。控制器输出控制脉冲使步进电机动作,步进电机通过联轴器连丝杠,给步进电机53个脉冲时,丝杠前进1 cm,如此可精确地控制丝杠前进的距离。当步进电机转过一个步距角时,丝杠前进或者后退一小段位移,所以只需要计算好输出脉冲即可实现对距离的精确控制。
下位机采用Arduino UNO作为控制器。使用的AVR微控制器有20个I/O引脚且性价比高。主Arduino使用标准的USB数据线连接到计算机上,不仅提供到PC的串行连接,还包括操作所需的5 V电源[3]。UNO处理器核心是ATmega328,Arduino通过6路PWM引脚输出PWM方波,通过6路数字引脚输出数字电平或数字式脉冲信号。开发环境为Arduino IDE[4]。
步进电机运行要把具有足够功率和频率的电脉冲按选定的顺序加给各控制绕组。脉冲分配器接收控制脉冲信号和方向电平,并按步进电机的分配方式要求的状态顺序产生各相控制绕组信号,脉冲分配器输出信号数目与电机相数相同。每来一个控制脉冲,脉冲分配器的输出信号中至少有一个变化,输出状态就转换一次,步进电机转速的高低、升降、起停完全取决于控制脉冲状态。控制脉冲发生器在Arduino的IDE里编写程序,使Arduino产生控制脉冲信号和方向电平。步进电机驱动模块采用A4988。A4988是一款带过流保护和转换器的DMOS微步驱动器,在“步进”中输入一个脉冲,即可驱动电动机产生微步。只要控制STEP和DIR就可以了,STEP是控制脉冲输入端,DIR是方向电平输入端;3个模式选择端MS1、MS2、MS3全部接地也就是步进电机的全步进模式,如果要求更高的精度,可通过选其他模式,如选择1/4步进模式,电机转一圈就要送800个微步才能完成。控制脉冲发生器和驱动器的结构示意图如图1所示。
图1 控制脉冲发生器和驱动器的结构
CDS5500舵机控制电路中采用异步串行通信方式,通过UART异步串行接口进行统一控制,对舵机控制可采用计算机—控制板—舵机的控制形式。在计算机上将处理好的目标坐标通过串口发送到控制板中的AVR单片机上,再通过UART异步串行接口向舵机发送控制指令,使舵机根据要求执行动作。其中UART异步串行接口部分中,CDS5500兼Robotis Dynamixel通讯协议,单片机使用RS232通信协议,通过接口部分实现通信协议转换。采用控制程序对UART异步串行接口进行时序控制,实现半双工串行总线通讯。
3 系统软件设计
写字机器人执行机构中步进电机使用脉冲控制,设置控制脉冲与步进电机前进距离的对应方式。当给出一条直线起点和终点的坐标时,通过直线插补算法控制器输出控制脉冲可以使步进电机带动负载轻松地完成直线的绘制任务。
计算机上先将文本文字转换成坐标,首先使用矢量化图形处理软件Inkscape,在其位图临摹算法中首先读取输入文字编辑框中的字符区不同位置上像素颜色信息,如果读取出来信息不是背景默认白色,则在显示点阵编辑框中相应的位置点划出一个实心圆;如果读取信息为白色,则继续扫描下一个位置,不断执行,在显示点阵的编辑中输出相应字符的点阵图。在Inkscape中首先设置图形尺寸单位使用毫米,然后输入文字,对象转化成路径,提取位图轮廓,最后就可以导出.nc的坐标文件。利用这个坐标文件指导控制器输出控制脉冲控制步进电机。像素扫描算法流程图2所示。
图2 像素扫描算法流程图
机器人直线插补算法中采用逐点比较法。直线是构成字体的基本要素,机器人末端负载画笔不能严格沿着直线运动,只能使用折线轨迹进行逼近。插补就是根据写字要求在轨迹的起点和终点计算出若干个中间点坐标,插补中间点精度直接影响控制速度。逐点比较法中每一步都要将当前瞬时坐标同规定的图形轨迹相比较,然后判断其偏差,再决定下一步,如果当前点走到规定图形外面,那下一步就要往里面走;如果当前点在图形里面,那么下一步就要往外面走,缩小偏差得出一个十分近似指定图形的轨迹,最大偏差不超过一个脉冲当量[5-6]。
逐点比较法应用在直线插补过程中,步进电机每步都要进行偏差判别、坐标进给、新偏差计算和终点比较4个步骤。第一步判别,根据偏差值确定写字笔位置是在直线的上方(或线上),还是在直线的下方;第二步进给,根据判别的结果,决定控制器控制哪个坐标(x或y)移动一步;第三步运算,计算出笔移动后的新偏差,提供给下一步作判别依据,递推下去,当开始加工时,将写字笔移到加工起点,设开始加工点的;第四步比较,在计算偏差同时,还要进行一次终点比较,以用来确定是否到达了终点。如果已经到达,就不再进行运算,并发出停机或转换新程序段的信号。其中,递推次数由计数变量,决定,每完成一次插补计算,E自减1,当计数变量E减为0时,完成插补程序,程序结束跳出,等待进行下一次插补计算。对于不同象限,不同走向的直线其插补计算公式和控制器发出的控制方向都是不同的,需要将坐标和进行方向根据象限等的不同而进行变换。递推直线插补算法如图3所示。
图3 直线插补过程
机器人利用圆弧插补算法解决文字书写中撇和捺的曲线。写出一段圆弧,把写字点到圆心的距离和该圆的名义半径相比计算偏差。假设一段圆弧位于第一象限时的情况,圆弧起点为E,终点为A。选计算偏差为Fi,j= xi2-x02+ (yj2-y02)利用偏差判别式,即获得近似圆弧。若点P在圆弧外或圆弧上,即步进电机带动写字笔向圆内走一步;如果位于圆弧内侧,则步进电机带动写字笔向圆弧外走一步。采取递推法推算下一步新的计算偏差,这样用近似折线代替了圆弧[7-8]。其中,递推次数变量,为起点坐标,为终点坐标。圆弧形插补算法的算法流程如图4所示。
图4 圆弧形插补过程
4 系统测试
机器人控制系统一般分为组织级和实时控制级,分为位置控制、力控制和混合控制[9]。写字机器人的执行机构设计中步进电机和丝杠是理想的对距离有精确要求的机械机构,选用X-Y平移机构,一个平面平移结构需要有X,Y两轴丝杠,导轨和两个步进电机及其他一些支架和固定零件。步进电机有4个排线,排线从左到右为1,2,3,4。引出排线直接插到步进电机驱动模块的A4988上的插座上。利用两个步进电机组件相互垂直摆放就可以构成X-Y两个自由度。装配中需要注意的是:将X方向的黑色滑块和Y方向的黑色滑块分别移动
到它们的滑轨中点处,此时笔尖应当位于水平方向的工作平台的几何中心处。
机器人写字操作时,首先将两组步进电机的排线接头插到上图红色的步进电机驱动模块上,然后将步进电机模块插到Arduino控制板上,将Arduino控制板与计算机连接。在计算机中打开Grbl软件, 在选择好正确的COM口之后,设置传输波特率为9600,检查连线与电源接线准确无误后,点击OPEN键,选择之前制作好的G代码文件,点击Begin键开始发送,然后观察写字结果。写字结果演示如图5所示。
图5机器人写出“哈”字
5 结束语
写字机器人能精确完成写字任务,在计算机上将制作好的路径文件通过Grbl发送给下位机,Arduino执行翻译路径文件和直线、曲线插补程序,控制器输出脉冲控制两个步进电机完成末端写字笔的写字任务。写字机器人可以用来作为3D打印机的原型,再加入一个Z轴自由度将写字笔换成微型钻头可以雕刻立体图案,同时将写字笔换成激光头也可以作为微型雕刻机来雕刻图形、徽章等艺术品。
[1]郭清达,万传恒,史步海.基于遗传算法的工业机器人时间最优轨迹规划及仿真研究[J].计算机测量与控制,2014,22(4):1240-1242.
[2]王文凭,李天培,冯根生.一种智能搬运机器人的设计与实现[J].计算机测量与控制,2011,19(2):395-398.
[3]John-David,Warren Josh Adams. Harald Molle. Arduino robotics[M].北京:电子工业出版社,2014.
[4]陈吕洲.Arduino程序设计基础[M].北京:北京航空航天大学,2014.
[5]赵燕伟,朱双胜,卢东,等.基于直线插补的字体边缘识别技术[J]. 机电工程,2009,26(5):52-54.
[6]李进文,何素梅,吴海彬.一种直线插补算法及其在机器人中的应用研究[J].机电工程,2015,32(7):966-970.
[7]孔逸敏,凌秀泽,徐寅林.基于符号判别法的逐点比较法圆弧插补算法的研究[J].南京师范大学学报(工程技术版),2012,12(2):64-68.
[8]范希营,郭永环.数控系统差值比较法圆弧插补算法的研究[J].机械科学与技术,2011,30(5):789- 792.
[9]类延超.五自由度写字机器人系统研究[D].济南:山东大学,2012.
Design of Intelligent Writing Robot
Chen Yumin1, Xie Wei1, Meng Xianmin2,Yang Dongyue1
(1.Harbin Institute of Technology (WeiHai) ,Weihai264209, China;2. Shandong Kaer Electric Co.Ltd., Weihai264209, China)
Design two degrees of freedom to writing robot which can easily complete the task of writing drawing on a plane. You can put in the text entered by computer control algorithms and hardware circuit and the stepping motor drive styluses automatically describe it on paper. PC is chosen as the host computer, the system of Arduino as a slave. The text will be entered into a computer coordinates the G code, the next crew to the controller, the next bit machine controller uses serial port to send by linear interpolation and rounded interpolation algorithm, control pulse and direction output level control step stepping motor forward or backward. Stepper motor is controlled by a pulse, a pulse is sent to each step forward, allowing for precise control of the distance. It can be extended a shaft to join the Z-axis can theoretically achieve 3D printing capabilities, the writing pen or chisel into the laser head can be carved three-dimensional works, expansion of feature-rich.
writing robot; arduino system; interpolation algorithm; precise control
2015-08-24;
2015-09-26。
哈尔滨工业大学研究生教育教学改革研究项目(WH2015002)
陈宝伟(1989-),男,福建漳州人,硕士研究生,主要从事传感器与自动化检测方向的研究。
1671-4598(2016)01-0266-03
10.16526/j.cnki.11-4762/tp.2016.01.074
TB114.3
B