APP下载

基于Arduino与Processing的悬挂画图机器人的设计

2018-12-14高明华黎强叶子恒张寒儒王珍许丽金

现代电子技术 2018年24期
关键词:程序设计

高明华 黎强 叶子恒 张寒儒 王珍 许丽金

关键词: Arduino; Processing; 悬挂画图机器人; 机械运动; 程序设计; 本体结构

中图分类号: TN830.1?34; TP193                 文献标识码: A                  文章编号: 1004?373X(2018)24?0153?04

Design of a hang?drawing robot based on Arduino and Processing

GAO Minghua, LI Qiang, YE Ziheng, ZHANG Hanru, WANG Zhen, XU Lijin

(School of Information Engineering, East China Jiaotong University, Nanchang 330013, China)

Abstract: In allusion to the problems of high prices, complex structures, implementation difficulty and limited function extensions of the current drawing robot, a hang?drawing robot based on the Arduino and Processing is designed. The hardware and software selection, program design, and body structure of the robot are described in detail. The robot does regular mechanical movements by controlling a hanging pen to draw a picture loaded to the upper computer by users. The robot can draw on various vertical planes, and the drawing scope can be adjusted according to the users′ requirements. The results of several experiment verifications show that the robot can draw a complete picture, run stably, and has a certain application prospect.

Keywords: Arduino; Processing; hang?drawing robot; mechanical movement; program design; body structure

机器人是一种综合类的高新技术产品,结合了多学科的先进技术,如电子、机械、计算机、艺术、机构学等。机器人的普及和应用很大程度地提高了人们的生活水平,改善了人们的生活质量。

人类最初发明的机器人被称为“机械手”,目的是用其代替人劳动,从事一些高危、艰苦、单调的工作,改善人们的劳动条件。随着电子信息技术的不断进步,更多种类的机器人被研发出来,适应人们的各种需求,并在越来越多的领域“崭露头角”。如今市面上出现各式各样的机器人开始进军艺术领域,设计者们将艺术与电子科学技术相结合,碰撞出了激烈火花。

目前,许多不同类型的绘画机器人已被研制出来,如通过神经网络不断学习并模仿人类动作绘制人类肖像画的机械手臂,可在任何表面进行绘画的mDrawBot机器人,做成智能小车可在平滑地面作画的3D打印机器人,还有像街头艺术家能“主观”地进行绘画并实现不同画风的智能绘画机器人等。但这些机器人都存在一定的缺憾,如价格高,结构复杂难以实现,功能擴展有限等。为此,本文设计的绘画机器人在很多方面具有优势:整个系统成本低廉;绘图完整,可根据用户所提供的图片,完整绘制出来,并且根据绘图像素调整画风,增大像素比例可以达到素描的效果;可在许多垂直平面上绘画,如在黑板、墙壁、玻璃等垂直表面作画;机器部件少,组装相对简单;重量轻,移动便捷。

1  机器人系统总体设计方案

1.1  Arduino Uno板

本设计所使用的控制板为Arduino Uno板(下文简称Uno板)。它是一块基于开放原始代码的Simple I/O 平台,该平台由两部分组成:硬件(包括微处理器、电路板等)和软件(编程接口和语言)。本设计选择Uno板的主要原因如下:

1) 开源的软硬件平台,模块化,便于进行二次开发。

2) 使用廉价的微处理控制器。

3) 支持ISP线上烧录,可以通过串口或USB转RS 232线更新固件。可采用USB 接口供电,不外接电源,也可以使用外部DC 9 V输入。

4) 支持多样的互动程序,如Processing,FLASH,C,VVVV等。

1.2  Processing

本设计使用Processing软件搭建的界面作为上位机。Processing是 Java 语言的延伸,并支持许多现有的 Java 语言架构,不过Processing将Java在语法 (syntax) 上简化,但同样可以完整地完成Java程序语言编程,具有许多贴心及人性化的设计。其源代码是开放的,用户可依照自己的需要自由裁剪出最合适的使用模式。

Processing可使用户直接专注于图形和交互的程序,比如建立类的路径和编译参数,或者建立串口和图形环境这样辅助性的图形环境,非常适合无太多编程经验的设计师和艺术家使用。

1.3  总体方案设计

Processing的上位机界面的控制窗口主要包含以下部分:图片信息、参数配置、轨迹追踪、命令存储。通過上位机载入一张图片,选取图片的画图区域,设定好相应的参数后加载到Uno板上。

然后,从串口传输过来的参数,由Uno板分析处理后,通过数据输出接口发送至L293D步进电机驱动模块的数据接收接口。由驱动板驱动电机转动,通过转动电机带动卷帘机械结构的悬臂进行规律的运动。所谓的规律的运动就是让笔画波形,画的波形密度越大表示像素点越高。

绘画前,要先将机器人的贡多拉装置(即用来固定画笔的装置)手动移到实际的画图零点,也可通过软件控制笔移动到画图零点,但当设定的参数与实际机器人大小存在误差时,则可能造成画图偏离。

最后,由上位机来控制机器人绘画的开始、暂停和结束。总体系统功能框图如图1所示。

2  机器人本体设计

本系统的机器人实体结构主要由四部分组成:画板、卷帘机械结构、贡多拉装置和画笔。下面分别介绍各部分的材料选取、结构设计以及功能。

2.1  画  板

本设计采用实木画板,画板材料的选定可为多样性,可以是白板、磁板甚至墙壁。画板的每边应比画纸多出90 mm的长度,为此,对于画板需要做两点:测量尺寸、找到零点。画板示意图如图2所示。

根据画板示意图,在画板上标记相应的线。为了测量精确,在测量时让水平线尽可能水平,垂直线尽可能垂直。若标记不准确,画图时将会出现笔画偏移、线条扭曲或图片拉伸等情况。

画板的宽度是画纸理想中的最大宽度,绘画的大小取决于画板的宽度,同时也取决于在软件中设置的画纸的大小。

2.2  卷帘机械结构

卷帘机械结构相当于机器人的手臂,是整个系统结构的关键所在。

首先,将步进电机用电机支架固定在画板上,使其中心轴尽可能靠近画板表面,并且保证在同一水平线上。其次,将适配卷珠帘拉绳的链轮齿推入步进电机的5 mm直径轴上。

卷珠帘拉绳的长度选取决定了画图的范围,拉绳两头分别绑定贡多拉装置和平衡重物。使用砝码作为平衡重物,每边砝码150 g。实际上重物的重量并无严格限制,该机器不需要绝对的平衡,只要能拉稳贡多拉装置即可,重物的作用只是让贡多拉在机器画图区域的顶上方中间自然悬挂。

2.3  贡多拉装置

贡多拉装置相当于机器人的手掌,是一种用来固定笔的装置。该装置使用3个6003Z的轴承堆叠在一起,通过圆筒连接,使画笔可准确地保持在两根卷珠帘拉绳聚合处,并且保证开合角可随位置的改变而变化。贡多拉的圆筒握笔一定要稳,且在绘画时只露出一点笔径,保证贡多拉装置平衡,避免抖动。

2.4  画  笔

本设计对画笔的选择无硬性要求,但需要注意的是,笔径的大小决定了一个像素由多少波形组成。如果像素是20 mm2,而笔径是1 mm,那么该像素内最大只能容纳20条线。笔径设置的越细,一个像素填充的线条越多。如果开始部分笔径大小被设置成0.6 mm,结尾部分是2.0 mm,增量是0.1 mm,那么机器以0.6 mm宽度画出第一个像素,每次增长0.1 mm,一直增加到2 mm。机器会基于设定的笔径大小,尽可能地以最大密度去作画。

3  机器人系统软件程序设计

3.1  Arduino程序设计

3.1.1  主程序Polargraph_Server_a1

主程序主要进行全局变量的定义以及变量初始化。包含步进电机对象、E2PORM地址、画板大小、提笔随动系统、绘图方向、像素大小、电机转速以及定义串口的波特率为57 600 bit/s。

3.1.2  控制笔移动PenLift

机器人会核对全局布尔变量“IsPenUp”的值(“true”或“fault”)来决定笔的移动方向,如果为“true”,那么机器认为笔已经向上移动,再向机器发送“Pen Up”或“Pen Lift”的笔移动命令 (“C14,END”)也将无效。如果正确的“PenUp”命令被接收,在这条命令中包含笔的位置信息,如(“C14,150,END”),然后全局“Up”位置的变量被更新,并且贡多拉运动到该位置,即使它已经是“Up”状态。自然而然的,如果向上的位置发生变化,即使它之前已经产生了向上的动作,也会继续向上。控制画笔移动流程图如图3所示。

3.1.3  画图像素设定Pixel

这是polargraph服务器程序的核心文件之一,包含生成和绘制方波,以及涂鸦像素风格的重要例程。像素用密度来表示,定义为“BRIGHTNESS”,其中0为黑色,255是白色,密度可在0~255范围内调整。如将密度设置为“DARKNESS”,则此时的0表示白色,而随着数值增大则变暗。

由于纸是白色的,而且油墨是深色的,该密度值被用于控制一个像素内能绘制多少波形。因此,0表示无油墨,用直线代替该处的像素,灰度值低;100意味着像素不为零,所以用一定频率的方波表示该点的像素,颜色较深,灰度值高。编程时还必须定义绘制波形的方式。绘制方波设定了4个笔移动方向:东南方向、西北方向、西南方向、东北方向;涂鸦像素风格设定为在一定范围内随机绘制线条。画图像素设定流程图如图4所示。

3.1.4  执行文件Exec

在该文件中包含一些最通用的画图命令,但只有直接调用的方法,复杂结构或转换的例程不包括在内。如直接调用控制笔移动的方法、像素描述的方法、电机转速以及笔位置判断的方法。同时,读取E2PORM中画板的规格,若当前值与存储器中的值不一致,则将值重新写入E2PORM中。

3.2  Processing程序设计

上位机的设计是为了实现对画图机器人的实时控制,控制键是参数化、可调的,分为两类:一类是只与控制软件相关,比如图片加载;另一类会发送命令到机器上。

Processing流程图如图5所示。

4  机器人画图测试结果

Uno板与上位机正常通信后,在上位机中根据实际画板大小设定相应参数并保存,然后加载图片,选定画图区域,调整像素亮度和比例,设置变频等幅值方波的画图波形以及从右上角开始作画的方式,传送命令。对于机器人本体采用A3纸张,0.8 mm的马克笔。机器画图过程中工作正常,运行稳定,图6为机器人画图与原图的对比,两者比例一致,图像轮廓清晰,内容还原度高。

5  结  论

悬挂画图机器人是一个结构相对简单的系统,主要涉及硬件设计、跨界软件编程、机械结构设计三个方面。该设计的意义在于将一门边缘的艺术注入现代的科技元素,呈现出一幅具有工业4.0气息的美术作品,并且该机器人的出现也为市场带来新的机遇和挑战,具有较大的应用价值。

参考文献

[1] 蔡睿妍.Arduino的原理及應用[J].电子设计工程,2012,20(16):155?157.

CAI Ruiyan. Principle and application of Arduino [J]. Electronic design engineering, 2012, 20(16): 155?157.

[2] 杨继志,杨宇环.基于Arduino的网络互动产品创新设计[J].机电产品开发与创新,2012,25(1):99?100.

YANG Jizhi, YANG Yuhuan. Arduino?based interactive product innovation [J]. Development & innovation of machinery & electrical products, 2012, 25(1): 99?100.

[3] BENDER P, KUSSMANN K. Arduino based projects in the computer science capstone course [J]. Journal of computing sciences in colleges, 2012, 27(5): 152?157.

[4] 李茂宁.数字绘画与传统绘画比较研究[J].艺术教育,2012(11):119?120.

LI Maoning. Comparative study of digital painting and traditional painting [J]. Art education, 2012(11): 119?120.

[5] 李路希.电子时代下的绘画艺术发展[J].大众文艺,2014(3):53.

LI Luxi. The development of painting art in the electronic age [J]. Art and design, 2014(3): 53.

[6] 邓知辉.基于Arduino控制平台的家居机器人设计与实现[J].信息通信,2015(10):64?66.

DENG Zhihui. Design and implementation of furniture robot based on Arduino control platform [J]. Information & communications, 2015(10): 64?66.

[7] 刘南君,毛培宏.基于Arduino Mega2560单片机的简易智能割草机器人的设计与实现[J].安徽农业科学,2012,40(36):17899?17901.

LIU Nanjun, MAO Peihong. Design of simple intelligent grass?cutting robot based on Arduino Mega2560 [J]. Journal of Anhui agricultural sciences, 2012,40(36): 17899?17901.

[8] 于强,许强,杨为民,等.基于Arduino的两轮自平衡机器人设计与实现[J].电脑知识与技术,2014,10(34):8332?8334.

YU Qiang, XU Qiang, YANG Weimin, et al. Design and implementation of self?balancing two?wheeled robot based on Arduino [J]. Computer knowledge and technology, 2014, 10(34): 8332?8334.

[9] OXER J, BLEMINGS H. Practical Arduino: cool projects for open source hardware [M]. New York: Apress, 2009.

[10] 孔晶晶.基于Processing的互动媒体设计研究[D].无锡:江南大学,2009.

KONG Jingjing. Research on interactive media design based on Processing [D]. Wuxi: Jiangnan University, 2009.

猜你喜欢

程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
OBE理念下基于Greenfoot的Java程序设计课程教学改革
PLC梯形图程序设计技巧及应用
三级甲等公立医院绩效考核程序设计