基于arduino平台的小型机器人舵机应用
基于arduino平台的小型机器人舵机应用,基于,arduino,平台,小型,机器人,舵机,应用,利用,运用
摘 要本文研究的是小型舵机在机器人的研究和应用。就目前来看,工业方面,很多的操作会损害人类的身体,而高精度的工作类又难以重复胜任。因此,发展机器人无疑是将人类从危险中解放出来的最好的办法。本文将舵机结合最近新兴的Arduino平台,设计一个具有四自由度的关节坐标式小型机械手结构,通过Arduino平台进行编程进而控制舵机,设计一个具有实际意义的程序和目的,完成程序的编写,再通过舵机对机械臂进行控制,达到之前设计的目的,完成对小型舵机对机器控制与研究,用以证明课题的可行性以及其研究价值。使用Arduino的平台将伺服系统与机器人结合起来,必将会具有良好的发展前景。关键词:Arduino, 舵机, 机械手IABSTRACTThis study is the small steering gear in the research and application of the robot. Currently, the industry, many operations can damage the human body, and the high precision and difficult to repeat the work competence. Therefore, the development of robot is undoubtedly the best way to human liberation from danger. This paper will be combined with the recent rudder the emerging Arduino platform, the design of a structure type small joint coordinate manipulator with four degrees of freedom, and steering control through the Arduino platform for programming, design a practical program and to complete the program, and then through the control of the manipulator servo, reach Before the design, the completion of the servo control and research of small machines, in order to prove the feasibility of topics and the research value. The use of Arduino platform servo system and robot together, will have good prospects for development.Key Words:Arduino,steering gear ,manipulator I目 录摘 要IABSTRACTII1 绪论11.1 本课题的目的与意义11.2 国内外研究现状与趋势12 系统结构设计42.1 系统总体方案设计42.2 机器人手臂结构设计52.3 机械臂位置的运动72.4 机器人软件的选择和设计83 系统硬件选型及设计93.1 Arduino的器件选型93.2 无限控制模块123.3 机械臂的材料选择134. 实物的拼装和成型144.1 机械臂的拼装144.2 机械臂和UNO板的连接154.3 机器人控制和运行轨迹设计164.4 系统程序流程184.5 源代码的构思与设计185. 系统修改与调试246 结 论26参 考 文 献27附录1:外文翻译28附录2:外文原文32致 谢37基于Arduino平台的小型机器人舵机应用1 绪论1.1 本课题的目的与意义 在如今的社会中,许多应用都跟伺服系统相关联,伺服系统广泛应用于军事、工业、家用电器、智能玩具、便携式智能仪表和机器人制作等领域。其中机器人系统同样是集机械工程、电子技术、计算机技术、传感技术、智能控制技术等技术的综合系统,机器人在未来的社会中将会起到越来越重要的作用,可以解放人力,都会提高劳动生产率和产品质量,创造出更多的社会财富。特别是工业方面,很多方面的操作会损害人类的身体,并且很多工作对工作的要求精度非常高,人类难以胜任,如汽车焊接精密装配等。在人类对世界越来越了解的同时,机器人也能代替人类进行各种探测探险。在不违背机器人三原则的情况下,发展机器人无疑是将人类从危险中解放出来的最好的办法。在小型工业机器人的控制当中,伺服机构的控制是非常重要的,特别是舵机的控制,舵机早期是应用在航模中控制方向的,在航空模型中,飞行器的飞行姿态是通过调整发动机和各个控制多面来实现的,后来有人发现这种机器的体积小、重量轻、扭矩大、精度高,由于具备了这样的优点,很适合应用在机器人身上作为机器人的驱动,可以说现代机器人最重要的就是舵机了,它是机器人的主要部分。因此对舵机的控制对于研究机器人十分的重要。而目前的工业机器人控制采用PLC控制,PLC控制是一个功能较多的方式,但是PLC的体系结构是封闭的,各PLC厂家的硬件体系是互不兼容的,当一个厂家选择了一项PLC的时候就必须学习相应的控制编程,不适合一些小厂家和新入门的人群,而Arduino是近年来较为流行的电子互动平台,具有简单,功能多样,价格低廉等优点,适合新手学习与使用,Arduino的理念就是开源,软硬件完全开放,技术上不做任何保留。针对周边I/O设备的Arduino编程,很多常用的I/O 设备都已经带有库文件或者样例程序,在此基础上进行简单的修改,即可编写出比较复杂的程序,完成功能多样化的作品结合Arduino对机器人进行编译,将伺服系统与机器人结合起来,将会具有良好的发展前景。1.2 国内外研究现状与趋势Arduino是一块较为简单的单片机开发板,如今在国外已经非常的流行,并成为快速原型搭建方案的事实标准 Arduino是2005年1月由米兰交互设计学院的两位教师David Cuartielles 和 Massimo Banzi 联合创建,是一块基于开放原始代码的 Simple I/O 平台,该平台由两部分组成:硬件(包括微处理器、电路板等)和软件(编程接口和语言)。平台的两部分都是开源的,如果需要,可以下载Arduino的图表、购买需要的所有独立部件、切割电路板并制作一个电路板。Arduino具有类似java、C 语言的开发环境。可以快速使用 Arduino 语言与Flash或 Processing等软件完成互动作品。Arduino能够使用开发完成的电子元件,如Switch、Sensors或其它控制器、LED、步进电机或其它输入/输出装置,同时,Arduino也可以成为独立与软件沟通的平台,如 flash、 Processing、Max/MSP或其它互动软件。 工业机器人是最典型的机电一体化数字化装备,技术附加值很高,应用范围很广,作为先进制造业的支撑技术和信息化社会的新兴产业,将对未来生产和社会发展起着越来越重要的作用。国外专家预测,机器人产业是继汽车、计算机之后出现的一种新的大型高技术产业。据联合国欧洲经济委员会(UNECE)和国际机器人联合会(IFR)的统计,世界机器人市场前景看好,从20世纪下半叶起,世界机器人产业一直保持着稳步增长的良好势头。进入20世纪90年代,机器人产品发展速度加快,年增长率平均在10左右。2004年增长率达到创记录的20。其中,亚洲机器人增长幅度最为突出,高达43%。经过四十多年的发展,工业机器人已在越来越多的领域得到了应用。在制造业中,尤其是在汽车产业中,工业机器人得到了广泛的应用。如在毛坯制造(冲压、压铸、锻造等)、机械加工、焊接、热处理、表面涂覆、上下料、装配、检测及仓库堆垛等作业中,机器人都已逐步取代了人工作业。机器人舵机的概念起源于对“航模舵机”的改进。长期在各种教育娱乐机器人上大量使用的“航模舵机”可以实现位置伺服的功能;由于它具有高度集成、标准统一、控制简单、价格较低等特点,因此广泛使用在各类教育娱乐机器人上。随着伺服系统的应用越来越广,用户对伺服驱动技术的要求也越来越高。总的来说,伺服系统的发展趋势可以概括为以下几个方面:集成化:伺服控制系统的输出器件越来越多地采用开关频率很高的新型功率半导体器件,这种器件将输入隔离、能耗制动、过温、过压、过流保护及故障诊断等功能全部集成于一个不大的模块之中,构成高精度的全闭环调节系统。高度的集成化显著地缩小了整个控制系统的体积。智能化:伺服系统的智能化表现在以下几个方面:系统的所有运行参数都可以通过人机对话的方式由软件来设置;它们都具有故障自诊断与分析功能;参数自整定的功能等。带有自整定功能的伺服单元可以通过几次试运行,自动将系统的参数整定出来,并自动实现其最优化。网络化:伺服系统网络化是综合自动化技术发展的必然趋势,是控制技术、计算机技术和通信技术相结合的产物。简易化:这里所说的“简”不是简单而是精简,是根据用户情况,将用户使用的伺服功能予以强化,使之专而精,而将不使用的一些功能予以精简,从而降低了伺服系统成本,为客户创造更多的收益。在国外,工业机器人技术日趋成熟,已经成为一种标准设备被工业界广泛应用。从而, 相继形成了一批具有影响力的、著名的工业机器人公司。国外专家预测,机器人产业是继汽 车、计算机之后出现的一种新的大型高技术产业。据联合国欧洲经济委员会(UNECE)和国际机器人联合会(IFR)的统计,世界机器人市场前景看好,从20世纪下半叶起,世界机器人产业一直保持着稳步增长的良好势头。在发达国家中,工业机器人自动化生产线成套设备已成为自动化装备的主流。国外汽车行业、电子电器行业、工程机械等行业已经大量使用工业机器人自动化生产线,以保证产品质量,提高生产效率,同时避免了大量的工伤事故。像国际上著名公司ABB、 Comau、KUKA、BOSCH、NDC、SWISSLOG、村田等都是机器人自动化生产线及物流与仓储自动化设备的集成供应商。目前,日本、意大利、德国、欧盟、美国等国家产业工人人均拥有工业机器人数量位于世界前列,全球诸多国家近半个世纪的工业机器人的使用实践表明,工业机器人的普及是实现自动化生产,提高社会生产效率,推动企业和社会生产力发展的有效手段。 国内工业机器人的发展现状在降低制造成本,解决用工严重不足等口号的呼喊下,近年来机器人产业在全世界范围内兴起。中国作为世界工厂,面临的形式更是严重。有数据显示中国每年工业机器人的装机量约占全球的1/8,仅次于日本、韩 国,预计2015年中国的装机量会超过这两个国家,成为世界上使用工业机器人最多的国家。自2009年以来,中国机器人市场持续快速增长,工业机器人年均增长速度超过40%,到目前为止,中国工业机器人市场份额约占全球市场的1/5;以教育、清扫等为代表的服务机器 人在国内也在逐步进入市场。随着我国门户的逐渐开放,国内的工业机器人产业将面对越来越大的竞争与冲击,因此,掌握国内工业机器人市场的实际情况,把握我国工业机器人研究的相关进展,显得十分重要。2 系统结构设计本文的设计内容是一个可以完成写出汉字或者字母的机械臂。机器人的设计其实就是一套将机械和控制合二为一系统设计。通常来说普通的机械臂类型的机器人的设计由以下的部分组成:动力和驱动模块、机器机械结构、传感以及检测部分,控制及信息处理和执行模块等几大模块。机器人的机械部分是机器人最重要的组成部分之一,机械部分是机器人作业任务的执行机构,可以顺利的执行某项操作以及所预期的功能。这一系统的精髓在于其控制部分,控制部分也是机器人的技术性的体现,控制系统用于控制机械部分的行动与操作,相当于机器人的大脑。机器人本体设计的合理性、可靠性直接影响到整个机器人的功能和性能。而控制部分的设计将决定机器人的功能性。本章将基于模块化设计的思想设计一个多自由度机器人,结合舵机和Arduino平台,从而实现一个用夹住笔写出目的字的功能。 2.1 系统总体方案设计如果想要写出一个字,那么需要至少平面两个自由度才能完成字体的书写,加上需要抬笔和落笔,那么就需要多一个自由度。除此之外机构还需要用夹持机构夹住笔,由此可知,如果想要做出一个简单的可以完成抓取并自由移动的机械臂,就至少需要四自由度,而且作为一个机械手,虽然设计功能是书写一个字,但是为了具有实现更多功能的功能,可以打破书写横竖的二维模式,因此将采用一个三维结构。所以目前所需要设计的机器人是一个四自由度的机械臂。这样的一个四自由度的机械臂,我们可以用四个舵机来控制它的运动,通过最简单的传动方法使舵机控制其左右前后上下大范围的运动。根据网上现有的多数机械臂来看,机械臂由底座,手臂主体,前端夹持机构三部分构成,由四个舵机分别控制运动。我们将四个舵机分别编号为1,2,3,4号舵机。1号舵机可以控制机械夹持机构的开关,2号舵机控制机械手的前后的移动,3号舵机用来控制舵机上下方向的控制,4号舵机控制机械手左右的转动。这样分析下来,一个实用的机械臂就形成了。图2.1 系统控制结构图 2.2 机器人手臂结构设计机械手类型的机器人简单来说,是一种三维开环链式并具有多个自由度的机构,机器人需要进行的动作是较为复杂的,因此手臂部分的结构需要进行设计。简单的传动装置有两个方案。方案一:普通的连杆滑块传动,将两个连杆用滑块槽连接起来,可以互相滑动完成位移。这种方式缺点是较为死板,活动不够灵活,且运动范围较小。但是结构较为简单,不用涉及到复杂的设计。方案二:我们采用连杆关节传动的方式对手臂进行设计,缺点是计算路径复杂,优点为动作灵活且运动范围广,可以在狭窄的空间里做出较为复杂的动作。方案三:使用链条传动,方便安装和设计,但是链条传动的精度和稳定性不是很好。综合考虑,这个机械臂结构简单,设计起来并不复杂,因此在保证了设计不会太复杂,而又运动范围最优的情况下,我们选择了方案二进行设计。因此,符合系统设计方案的机械臂拥有3个自由度,可以在x,y,z三个方向进行自由移动。首先是底座的设计,为了方便行动,可以使底座由一个旋转关节控制,可以左右各90的转动,仅仅由一个舵机就可以控制很大的范围的转动,同时结构也非常简单,可以满足在平面x轴方向上的位移。为了使机械臂可以完成前后移动和上下移动的方案,整个机械臂可以将之分为左右两个部分,分别用一个舵机控制,然后总体运动时,可以两边舵机同时转动,是的运动更加的流畅而不会显得机械生硬。而各自运动时也不会互相干扰。这种设计无疑是符合我们的要求的。机械臂左半部分由一个平行四边形结构的连杆机构控制,如图2-2,舵机安装在最下部分的连杆处,当3号舵机启动时,就可以非常巧妙的带动竖直杆件使得机械臂可以上下移动。机械臂的右半部分则是一个完整的平行四边形,根据平行四边形不稳定的特性,当右边的2号舵机启动时,则可以带动整个机械臂前后转动。前端夹持机构的结构如图2-4所示。舵机只和夹手上的连杆相连接,两边的夹手以齿轮连接当一号舵机转动时,那么就可以让夹持机构运动起来,并且行程要大于180。有效的增大了机械夹持物体的体积范围。如图2-3所示,其中我们将大臂和前臂分别暂定为10cm,即最长伸出距离为20cm,底座的高度约为5cm,这是较为合适的机械手尺寸,符合小型机器人的设定。图2.2 左部分连杆机构示意图 图2.3 右部分连杆机构示意图图2.4 夹持机构示意图 2.3 机械臂位置的运动在机器人的位置运动学中,一个空间上的位置点可以用矩阵来表示,矩阵是用来演示机械手位置变换的工具,矩阵的应用范围包括了向量,点坐标系和位置变换。位置变化用在机器人运动上可以分为纯旋转,纯平移和旋转和平移的结合。以平移为例,如式2.1中,式中左边的矩阵表示平移量b相对于坐标系的位置,中间的矩阵表示原来的位置,左乘以后就得到了之后的位置。纯粹的绕坐标系旋转也是这样,如式2.2,是转动的角度,新的位置等于老位置左乘式中矩阵所得。而在机械臂的位置确定中,一般要运用到机器人的正逆运动学,即通过关节角度计算末端执行器的位置(正运动学),通过预知的末端执行器位置,计算出在上几个位置的关节角(逆运动学)。因为机器人的底座是固定已知的,各个结构和尺寸也是已知的,所以可以对机器人利用D-H法进行建模。先给几个关节分别建立坐标系,然后确定每个关节的运动关系,将每个关节变化的步骤以表格(D-H参数表)的方法记录下来,进一步用矩阵的方法进行求解。 (2.1) (2.2)2.4 机器人软件的选择和设计舵机的控制方式在目前来说,以单片机PLC较为常见,近年来,PLC已经形成了完整的产业链,但同时也因为其种类过于繁多,不够统一,粗腰的模块和系统也有更多的要求。同时在实践中知道,随着伺服电机的增加,PLC就不会很方便控制舵机,并且精度也不是很高了。Arduino的功能与PLC相似,但是Arduino却可以很好的弥补PLC的很多缺陷,这里选择使用开源的Arduino代替单片机去控制舵机。Arduino是一款基于c+等语言的控制开源电子控制平台,已经非常流行和成熟,方便于二次开发。这里选择Arduino进行试验设计,将之与小型机器人结合起来。3 系统硬件选型及设计3.1 Arduino的器件选型 Arduino的开发板具有很多的型号,我们要考虑不同的情况下要选择不同的Arduino版本。我们列举各种版本来进行比较。Arduino MEGA 是增强型Arduino控制器,相对于UNO提供了更多的输入输出接口一控制更多的设备,拥有更大的程序空间和内存。本次机械手较为简单,并不需要用到复杂的模块。Arduino Leonardo使用集成SUB功能的AVR单片机作为芯片,可以模拟鼠标、键盘等USB设备。ATmega328是Arduino UNO的处理器核心,同时具有14路数字输入/输出口,一个USB口,一个电源插座,一个复位按钮。和其他Arduino开发板相比较而言,UNO较为结构清晰,并且Arduino UNO上USB口附近有一个可再次使用的保险丝,当电流过500mA则会断开USB连接,非常适合广大的新手和入门者使用。同时Arduino UNO还具有一个非常方便的自动复位设计,可以通过主机通电就可以自动复位,不用在编写程序时让程序再进行复位了。综上所述,UNO是非常适合本次设计的,所以在开发板上选择了UNO。其中在网上查到UNO板2010推出的Arduino Sensor Shield V5.0扩展板,它采用了双层模块的设计,主板将Arduino UNO的数字与接口以舵机线序形式连接起来,还具有IIC接口、蓝牙模块通信模块、接口舵机控制器的接口、无线射频模块、超声波模块和12864LCD串行与并行接口等几个模块,扩展更加的方便。对于Arduino初学者,具有良好的易接纳性,这个UNO扩展板将电路简化,能够容易的通过这些模块接口将那些传感器连起来,仅要一种通用3P传感器连接线连接到传感器,编写程序下载到Arduino 控制器中,再通过读取传感器数据、接收无线模块数据,经过运算,就可以完成想要的运动。图3.1 Arduino UNO管脚示意图 电机的选择:因为我们研究的是舵机,所以电机方面肯定选择舵机即伺服电机,舵机在工作中,控制器发出一种称之为PWM的信号给舵机,从而获得直流偏置电压。大部分的舵机内部设计了一个基准电路,其产生固定的周期,和特定宽度的基准信号,然后将获得的直流偏置电压与电位器的电压比较,获得电压差输出到电机驱动芯片,芯片根据电压差的正负控制电机的正反转。而舵机转动的角度是通过改变PWM信号的占空比来实现的,一般来说脉宽一般在0.5ms到2.48ms之间,标准的PWM信号的周期固定为20ms,脉宽是和舵机的转角0180相对应的。也就是说精确度大概在0.11左右,如果假设脉宽在0.5ms2.5ms范围控制舵机的角度转动,转动范围为0180.舵机收到控制信号后,会先判断这个舵机的转动方向,然后计算这个舵机的转动角度,接着驱动舵机中的马达开始转动,将动力通过减速齿轮将传输至受控物体,接下来由位置检测器接受传回来的信号,从而最后判断舵机是否已经完成任务。图3.2 舵机的示意图表格2.1 MG90S参数表舵机型号MG90S舵机尺寸22*12*28mm舵机质量14g工作转矩2.4KG/cm反应转速0.1秒/60度(4.8v)工作温度0-55死区精度5S插头型号JR和FUTABA通用转动角度最大180度舵机类型数字舵机额定电压4.8伏额定电流-产品材料金属铜齿、空心杯电机、双滚珠轴承舵机的种类繁多,我们在网上搜索了较为优秀的舵机。由此,舵机我们选择的是数字舵机MG90S,由表格2.1可以知道,这个舵机是非常小的,仅仅只有十几克,其额定电压月在5伏左右,和我们所选择的UNO板差不多。MG90S舵机的是小型舵机中较为优秀的一种,全重14g,其工作力矩约为2.4kg/cm,假设一只笔的重量为10g,机械臂最远距离约为20cm,加上机械臂本身的重量约为30g。那么 (2.3)由上式可知,MG90S可以是可以带动一个较轻的机械臂的。电源的选择是非常的重要的一部分,在选择了开发板之后和舵机之后,我们要根据这两个的对电源进行选择,我们的UNO板大概所需要的电源在5V左右,这点通过USB接口就可以满足使用,舵机的使用电压也约为5V,所以,在这个系统当中,我们只使用一个电源就可以了,但是为了保险起见,电流过低可能会导致舵机的运行不稳,所以我们在此选择使用两个电源接口,一个电源插头,另一个就是USB数据线供电,在电源不稳定的时候可以同时供电,并且在一些特殊情况下,多种供电方式也保证了机械臂的正常使用。3.2 无线控制模块除了之间连接USB接口传递讯号以外,为了体现Arduino的多种控制方式,我们还装备在机械臂上安装一个无线通讯装置,用来控制舵机。目前使用较多的无线通信方式有蓝牙通信、红外线通信、wifi通信以及无线射频通信,下面我们比较一下各个通信方式从而选取最适合本次设计的方式。(1)蓝牙:蓝牙连接是较为老牌的无线控制,已经发展到在各种控制终端拥有蓝牙模块,例如智能手机、笔记本电脑、汽车等,只要用有蓝牙适配器,就可以轻松连接上蓝牙,从而进行数据传输,而且蓝牙连接的兼容性非常好。非常方便的可以随时控制。(2)红外线通信模块:成本比较低,便于安装但是传输范围较短。但是在此处局限性较大,不如其他的控制。(3)wifi模块:数据安全性较好,实现wifi通信方式便捷,属于短距离无线通信技术。虽然也是非常优秀的无线通讯模块,但是无线通讯模块成本较略高。在此,通过比较,使用蓝牙模块,可以更广泛的接受控制,只需要将蓝牙程序导入arduino UNO板中就可以下载蓝牙控制APP进行控制了。由于研究方式选择通过烧录程序控制,在此就不详细阐述了。图3.3 蓝牙模块 3.3 机械臂的材料选择如果机器人用合金结构虽然整体非常的结实,但是会增加整个主体的重量,让舵机的负担增大,并且合金的加工固定较为麻烦。而如果用普通的亚克力板或者尼龙棒用作为主体的构架,虽然没有金属那么稳固,但是在小型机器人中已经足够使用。其中亚克力板非常的轻便以及拥有良好的硬度,取材方便,并且亚克力板的价格非常便宜,可以降低成本,加工也很方便,既可以保证舵机的压力不会过大,也可以方便获得拼接。因此在此我们选择亚克力板作为机械臂的主体。4. 实物的拼装和成型4.1 机械臂的拼装首先需要将机械主题部分拼接完成,底座和底部4号舵机连接,可以完成转动部分,再接着是机械臂手臂部分安装,以及夹持机构的拼接。图4.1 底座部分安装图4.2 手臂安装示意图图4.3 夹持机构安装示意图在安装整个的机械臂的过程中,需要注意一些细节,安装的舵机线需要摆放整齐,不能对行程造成阻碍和影响。对安装的舵机最好有统一的电源,不需要不同舵机分开供电。当然和Arduino的电源可能有时候需要分开供电,因为舵机和Arduino开发板的的工作电压不一样。在不一样的时候如果使用同一个电源则可能会烧坏部件。这个时候选择性的安装USB电源和插头电源。4.2 机械臂和UNO板的连接这一部分的设计主要是将舵机和UNO板连接起来,首先将扩展板和UNO主板连接起来,这样就可以在成型的扩展板上直接连线了。然后在扩展板上连接舵机,舵机线一般有三种颜色(可见图2-6舵机示意图)分别是GND(接地),VCC(电源)和IO(信号)口。在舵机接线的时候舵机原本的线不够长,则可以使用舵机延长线,要保证运动不被线的长度所阻挡。同时,在接延长线和接UNO板舵机接口的时候,不能将各个颜色接混,否则舵机容易损坏。一般会有明确的标识。我们将连接夹持机构的1号舵机接在UNO的3号端口处,将左边的3号舵机连接在6号端口处,将右边的2号舵机连接在5号端口,将最下部分控制机身整体旋转的4号舵机连接至9号端口。此时舵机就已经连接好了,接下来,再直接将蓝牙部分连接入规定的蓝牙接口。这时候,完整机械臂就已经拼接完成了。图4.4 扩展板示意图 4.3 机器人控制和运行轨迹设计机器人采用Arduino控制,Arduino的程序编写是c语言的一种延伸变种。在这个机械臂中,只需要控制几个舵机的转动转速角度等参数就可以完成这个动作了。由于是夹持机构,需要先夹住笔,再在既定的轨迹中写出字。Arduino的开源性使得它拥有很多的可能性,我们在此使用下面的方法来验证舵机在Arduino开发环境中的使用。本文所想要设计的是写字机器人,让机器人写出“连大”这两个字。首先让夹持舵机夹住准备好的笔,为了可以程序化,我们需要计算笔的高度,夹持的位置,在几次夹持对比中,让夹持机构离笔尖约为10cm较好。机械臂手臂长约为20cm,我们在设计路线时应注意不能超出行程,然后开始对字进行路线化。将笔尖抬高至离纸面约为1cm处,向左移至大的左边,机械臂整体向下移动1cm,再横向向右移动,写出“横”这一笔画,再抬笔,写出另一横,以此类推,写出“连大”字。如下图所示,我们将字数据化后,对字所在的位置,笔画的长度进行了规划测量。图中的单位都是mm。图4.5 “连”路径轨迹图图4.6 “大”路径轨迹图 4.4 系统程序流程首先打开Arduino软件,了解各舵机的接口分别是什么,通过计算机知道机械臂的串口,连接到Arduino编程软件上,再在软件中设置开发模块为UNO模块。就可以对各个舵机进行编程了,下图即是程序流程图。我们不断地通过调整,得到舵机最佳的位置信息。Arduino最终得到出程序,编译下载到机械手开发板,机械手就可以完成写出“连”字的任务了。图4.7 程序流程图 4.5 源代码的构思与设计程序的控制模块,在这个机械手中只需要对舵机进行控制。而在Arduino中,这是一个可以模块化的地方,可以系统化的对舵机进行角度控制。 在Arduino中的servo类下有下面的几类函数,可以通过这些语言,对舵机的角度进行编译。attach( )这是连接舵机,是一般控制舵机的程序的第一步,将舵机与其相连接,write( )这个括号就是可以填写舵机的角度,需要我们自己去调试,一般来说是0到180,.read( )的应用是读取上一次舵机的转动的角度,进行反馈。可以将过程简洁的表述如下: 1.第一步include 。 2.Servo(你舵机的名字)这就是定义一个舵机。 3.需要运动的舵机的名字.attach(不同舵机的信号线在哪个接口就填写在哪)。 4.需要运动的舵机的名字.write(要到达的度数)。当设计的机械臂有四个舵机的时候,则需要分开编写,四个舵机就需要分成四个子程序进行编写。表4.1 servo模块函数表图4.8 单个舵机程序控制 以下是写出“大”的程序 #include Servo myservo; /创造出你控制的舵机Servo myservo2; Servo myservo3;Servo myservo4;int pos = 0; / 储存舵机变量的位置 void setup() myservo.attach(3); / 连接舵机的引脚,在哪个位置就放在,本文设置的是3569四个引脚 myservo2.attach(5);myservo3.attach(6);myservo4.attach(9); void loop() for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 120,pos3 = 60,pos4 = 0; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) /控制四个舵机的转动角,以及没个舵机每步用多少myservo.write(pos); myservo2.write(pos2);/ 让舵机执行转动角度 myservo3.write(pos3;myservo4.write(pos4);delay(15); / 等待 15ms 让舵机运行到指定位置 for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 10,pos3 = 15,pos4 = 10; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 10,pos3 = 2,pos4 = 25; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 25,pos3 = 3,pos4 = 8; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 14,pos3 = 3,pos4 = 8; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 4,pos3 = 3,pos4 = 8; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 5,pos3 = 3,pos4 = 0; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = ,pos3 = 60,pos4 = 0; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); elay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 110,pos3 = 40,pos4 = 0; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 120,pos3 = 60,pos4 = 0; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 120,pos3 = 60,pos4 = 0; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 40,pos3 = 30,pos4 = 15; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos); myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); delay(15); for(pos = 90,pos2 = 90,pos3=90,pos4=90; pos = 30,pos2 = 110,pos3 = 60,pos4 = 0; pos += 1,pos2 += 1,pos3 += 1,pos4 += 1) myservo.write(pos);myservo2.write(pos2);myservo3.write(pos3;myservo4.write(pos4); delay(15); 5. 系统修改与调试系统整个搭建完成后,再进行修改调试,对过程进行验证,保证机械手可以正常运动,不会出现故障并且完成指定操作。在对机械臂进行调试的时候,我们可以用到很多帮助,比如通过USB端口接入的软件Arduino奇点机器人,这个软件可以对最多六个舵机进行角度位置调试,我们在这里利用这个软件,对各个位置进行寻找和调试,软件的使用方法非常简单,需要先将上位机程序烧录进UNO板中,在进行串口连接,就可拖动进度条,改变各个舵机的位置。本机械臂也安装了无限蓝牙模块,同时也可以使用手机上的Arduino 蓝牙APP对机械臂进行控制,控制方法和奇点机器人软件相似,也是先将程序烧录进Arduino,不用连接串口,而是打开蓝牙,连接蓝牙,选择出需要控制的舵机,就可以进行调试了。这个蓝牙APP相对于奇点软件,拥有更多的舵机可以控制。图5.1 奇点机器人软件调试图图5.2 蓝牙APP控制图完整的机械臂的结构运行非常的流畅,可以完成我们所预期的功能,需要排好舵机线和蓝牙线,以保证不阻碍运动。 6 结 论基于Arduino模块的小型机器人舵机应用是一项非常有意义的课题。在完成过程中,解决的四自由度机械臂的结构和材料选型的问题,成功的将Arduino和舵机进行结合,证明了Arduino对多个控制的可行性。并利用Arduino控制舵机进行了一系列的试验,根据试验结果可以了解Arduino控制舵机是具有很高的精度的,并且在多各舵机控制过程中也具有出色的表现,达到很高的精度要求。机械手通过计算机制作好的轨迹和程序可以执行既定的任务。同时机械手的结构简单,组装容易,使用条件也不苛刻,能耗较低,体积较小,占用较少的空间,运行范围却很大,适合作为小型机器人在家庭使用。结合Arduino平台的小型机器人,因其开源的特色,精准的控制,对以后将工业机器人转向家用机器人具有很大的参考意义。参 考 文 献1 潘元骁. 基于Arduino的智能小车自动避障系统设计与研究D. 长安大学 20152 丁小妮. 基于Arduino&Android小车的仓储搬运研究D. 长安大学 20153 侯亮,王浩伦,贾鸿翅. 支持产品平台创新的知识分类及其本体建模研究J. 机电工程. 2010(11)4 陈永亮,焦明生. 基于产品平台和机械总线的爬行机器人可适应设计J. 工程设计学报. 2005(05)5 纪欣然. 基于Arduino开发环境的智能寻光小车设计J. 现代电子技术. 2012(15)6 蔡睿妍. Arduino的原理及应用J. 电子设计工程. 2012(16)7 凯姆卡尔文,泰勒卡尔文,庞明珠. Arduino与电子制作J. 电子制作. 2012(08)8 崔才豪,张玉华,杨树财. 利用Arduino控制板的光引导运动小车设计J. 自动化仪表. 2011(09)9 邹建梅,王亚格. 利用Arduino增强Flash互动性的研究J. 中国教育技术装备. 2010(36)10 Kun Zheng,Dunbing Tang,Wenbin Gu,Min Dai. Distributed control of multi-AGV system based on regional control modelJ. Production Engineering . 2013 (4)11 孙建朋.基于Arduino的智能小车避障系统设计J.黑龙江科技信息,2016,0(15).12 8-bit Microcontroller with 16K Bytes In -System Prog rammable Flash-AT mega16 Datasheet M .Atmel Co rporation, 2009.13 陈玉敏,谢玮,孟宪民,杨东岳. 智能写字机器人设计J. 计算机测量与控制,2016,01:266-268.14 类延超. 五自由度写字机器人系统研究D.山东大学,2012.15 张学文,陈小安,梁锡昌. 写字机器人运动学分析及仿真J. 现代制造工程,2009,10:142-145.16 Matteo Palpacelli. Static performance improvement of an industrial robot by means of a cable-driven redundantly actuated systemJ. Robotics and Computer Integrated Manufacturing,2016,38:.17 Balzs Dniel,Pter Korondi,Trygve Thomessen. Joint Level Collision Avoidance for Industrial RobotsJ. IFAC Proceedings Volumes,2012,4522:.18 Bjrn Olofsson,Henrik Nilsson,Anders Robertsson,Johan kesson. Optimal Tracking and Identification of Paths for Industrial RobotsJ. IFAC Proceedings Volumes,2011,441:.19 M. Rahaman Laskar,R. Bhattacharjee,M. Sau Giri,P. Bhattacharya. Weather Forecasting Using Arduino Based Cube-SatJ. Procedia Computer Science,2016,89:. 20 TSUMUGIWA T, YOKOGAWA R, KHARA R. Variable impedance control based on estimation of human arm stiffness for human-robot cooperative calligraphic taskC/Proceedings of IEEE International Conference on Robotics and Automation.Washington, DC, USA, 2002:644-650.- 27 -附录1:外文翻译具有四自由度的低成本机器人手臂的设计与开发摘要 这项工作的重点是设计、开发和实施有竞争力的机器人手臂控制和成本的提高。机器人手臂设计有四个自由度和故事 想做到准确简单的任务,如轻质材料处理,这将成为一个移动平台,为工业劳动力的助理。机器人手臂是平等的 唯一的几个伺服电机做武器进行手臂运动之间的联系。伺服电机包括编码器,使没有控制器实现。我们使用LabVIEW控制的机器人,这 逆运动学计算和通信的H执行正确的角度对单片机串行驱动伺服电机改变位置的能力,速度和加速度 机器人手臂进行测试和验证,结果表明,它的正常工作。关键词:机器人手臂,成本低,设计,验证,四自由度,伺服电机,Arduino的机器人控制,机器人控制软件1. 介绍机器人术语实质上定义为制造业机器人系统的研究、设计和使用。机器人通常用于执行不安全的,危险的,高度重复的和不愉快的 任务.它们有许多不同的功能,如材料处理,装配,电弧焊接,电阻焊接,机床装卸功能,喷漆,喷涂等。主要有两种不同的机器人:服务机器人和工业机器人。服务机器人是一个机器人,半自主或完全自主地执行服务,以有益于人类和设备,不包括制造业。工业机器人,另一方面,由ISO正式定义为一个自动控制和多用途的机械手程序 梅布尔在三轴以上的。工业机器人被设计成通过可变的程序运动来移动材料、零件、工具或专用设备来执行各种任务。一个工业 机器人系统不仅包括工业机器人,还包括任何设备和/或机器人执行任务,以及测序或监测通信接口所需的传感器。2007,世界市场增长了约114000,新安装的工业机器人3%。在2007年底,大约有一百万个工业机器人在使用,而估计为50 ,000个工业用服务机器人由于工业机器人手臂的使用增加,一个进化到这个主题开始尝试模仿人类运动的详细模式。例如,一组学生在韩国进行的设计创新 机器人手臂考虑跳舞手,举重,中国书法写作和颜色分类。另一组工程师在美国开发八度自由度机械臂 。这个机器人能够掌握许多物体从一个笔到一个球的形状很多,模拟人类的手。在太空中,航天飞机遥控机械手系统,称为SS RMS或Canadarm,及其继任者的例子多自由度机器人的手臂已被用来执行各种任务如检查航天飞机使用专门部署 D繁荣与相机和传感器附在末端执行器和卫星部署和检索演习从货物湾航天飞机。 在墨西哥,科学家有望开发许多机器人手臂的设计,和墨西哥政府估计,在墨西哥大约有11000的机械臂,用于在不同的工业应用 ONS。然而,专家认为,机器人手臂的远不仅是高质量的,而且准确,重复性好,与粗短的成本。大多数机器人是建立了一个操作的教导和重复技术。在这种模式下,受过训练的操作员(程序员)通常使用一个便携式控制装置(教挂件)教机器人它手动任务。机器人在这些编程过程中的速度是缓慢的。目前的工作是一个阶段的项目的一部分,这就需要一个移动机器人能够运输工具从存储 老年房到工业小区。在这个阶段的项目,并进行技术,蒙特雷大学墨西哥,主要的重点是设计、开发和实施的一个印度 试验机械臂粗短的成本,准确和最优控制。这个机器人手臂的设计具有四个自由度,才能完成简单的任务,如光的伴侣、处理, 这将被集成到一个移动平台的形式,作为一个助理工业劳动力2.机械设计机械臂的机械设计的基础上的机器人机械手类似的功能,以人的手臂 6-8 。这种机械手的连接连接的关节,允许旋转运动机械手的链接被认为是形成一个运动链。机械手的运动链的业务端被称为末端执行器或手臂工具的结束,它是类似的对人类的手。图1显示了机械臂机械设计的自由体图。如图所示,末端执行器不包括在设计中,因为市售的夹持器是很少的。这是因为末端执行器是最复杂的系统的一部分,反过来,它是更容易和经济的使用一个商业比建立,图2显示了机器人手臂的工作区域。这是典型的工作空间的四自由度(4自由度)的机器人手臂。机械设计仅限于4自由度,主要是因为这样一个设计允许大多数必要的
收藏