体感控制车载机械臂的设计与实现-毕业论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
体感控制车载机械臂的设计与实现摘要本科生毕业论文(设计)
题目:体感控制车载机械臂的
设计与实现
体感控制车载机械臂的设计与实现
[摘要]随着科技的日新月异,越来越多的智能化的设备慢慢出现在市场之上,人与计算机之间的交互方式也在不断推陈出新。
人机交互技术首先是以使用者的日常生活出发,让使用者的生活更加便捷、更智能化。
除了个人用户的需求之外,在人机交互技术的不断发展更新的背景下,其应用范围也在迅速扩大,带动着各类技术的快速发展。
其中体感识别越来越普及和重要。
本设计利用体感识别实现一款体感控制车载机械臂,采用体感手套采集并处理人体手部动作数据,将模块所测的数据进行校准,并将当前手部运动状态所对应的特定控制指令字符串通过无线模块将指令传送至车载机械臂上的控制模块STM32F1芯片后,产生对应PWM波对车载机械臂进行控制,使车载机械臂进行一定的操作。
经测试结果表明,系统运行稳定,可正常运作且可靠性高,能够有效识别特定的人体手部动作,并能正常传输控制指令,准确的进行工作,具有一定的实用性价值。
[关键词]体感;体感手套;车载机械臂; PWM
Design and Implementation of Somatosensory Control Vehicle
Robot Arm
[Abstract]With the rapid development of technology, more and more intelligent devices are slowly appearing on the market, and the way of interaction between people and computers is constantly being updated. Human-computer interaction technology is based on the daily life of the user, making the user's life more convenient and intelligent. In addition to the needs of individual users, under the background of continuous development and updating of human-computer interaction technology, its application range is also rapidly expanding, driving the rapid development of various technologies. Among them, somatosensory recognition is becoming more and more popular and important. This design uses somatosensory recognition to realize a somatosensory control vehicle-mounted robotic arm, uses somatosensory gloves to collect and process human hand motion data, calibrates the data measured by the module, and sets the specific control instruction string corresponding to the current hand motion state After the instruction is transmitted to the control module STM32F1 chip on the vehicle mechanical arm through the wireless module, the corresponding PWM wave is generated to control the vehicle mechanical arm, so that the vehicle mechanical arm performs certain operations. The test results show that the system runs stably, can operate normally and has high reliability, can effectively recognize specific human hand movements, and can normally transmit control instructions to work accurately and has certain practical value.
[Key words]Somatosensory; Somatosensory Gloves; Vehicle Robotic Arm; PWM
目录
摘要 (I)
ABSTRACT (II)
第 1 章引言 (1)
1.1选题背景分析 (1)
1.2国内外的研究现状和相关工作 (1)
1.3研究目的与意义 (2)
1.4本文论文结构及章节安排 (2)
1.5本章小结 (3)
第 2 章硬件介绍 (4)
2.1车载机械臂 (5)
2.2 体感手套 (6)
2.3本章小结 (7)
第3 章体感识别系统 (8)
3.1体感识别系统模块介绍 (8)
3.2体感信息采集 (10)
3.3本章小结 (11)
第 4 章车载机械臂控制系统 (12)
4.1通信模块 (12)
4.2主芯片介绍 (12)
4.3驱动模块 (13)
4.4体感控制指令 (16)
4.5本章小结 (19)
第 5 章调试与测试 (20)
5.1通讯测试 (20)
5.2故障原因及解决办法 (21)
5.3本章小结 (22)
第 6 章总结与展望 (23)
6.1工作总结 (23)
6.2研究展望 (24)
参考文献 (25)
致谢 (26)
附录 (27)
第 1 章引言
1.1选题背景分析
在我国的电子信息、计算机科学技术、自动化等多个领域的快速发展的背景之下,我国对于机械臂的研究也有了新的进展。
在日常生活当中,通常所说的机械臂是指具有多关节连接并且能在二维空间或者三维空间内进行线性移动的一种机器人[1]。
由于机器人技术的不断发展,所应用的场景也不断增加,机械臂所要面对的挑战也日渐增大,对机械臂的功能、精准度、耐用度以及灵活度提出了更高的要求。
在欧美等发达国家,对机械臂的研究主要是研发具有某种智能的机械臂,通过传感器使其拥有特定的传感功能,能够自动感应外界的条件变化,并向内置的控制芯片发送反馈信息,令其做出相应的变更,从而形成智能化控制。
如位置发生一定变化的时候,能够自动对其位置进行更正并对新的位置进行监测,当前重点是对视觉功能以及触觉功能的研究,目前已经取得一定成绩。
由此可见,机械臂也是国内外许多学者一直不断深入研究的课题。
本文所研究的是利用体感来控制车载机械臂,可应用于多场景工作,通过体感控制的方式,对车载机械臂的准确操控,相比于由固定程序控制的传统机械臂按照固定轨迹实现自动抓取、搬运或操作具有更多的可能性。
同时体感技术在人机交互方面上的应用越来越普遍,有望成为智能终端设备的基本配置。
因此研究由体感控制的机械臂有长远的意义和发展空间。
1.2国内外的研究现状和相关工作
近年来,机器人技术发展极为迅速。
而在机器人工作的最终环节,需要机器人的执行末端进行动作,一般使用机械臂来进行操作。
所以,机械臂的研究也一直是国内外研究的热点课题[1]。
随着机械技术的发展,用于各个行业的机械手的款式、控制方式推陈出新,在目前现有的机械臂中,都是由小型电子计算机来进行控制。
其中日本的机器人产业
发展的最为迅速,机械臂的应用也最为广泛、其工业生产的效率也随之提高,大大促进了日本的工业发展。
虽然国内的机械臂产业发展起步较慢,但是在国内,成本导向的相关技术升级有着巨大的市场发展空间,对机械臂的未来发展具有很大的优势,虽然机械臂的成本投入较大,但是机械臂的使用寿命较长并有更高的效率与工作质量,可以创造更大的经济效益。
故而关于机械臂的研究前景十分可观[2]。
1.3研究目的与意义
机械臂的出现给工业生产提供了新生命,能够应用在激光切割、注塑、涂胶等领域,其优点能够降低由人进行工作产生危险的风险,并能够在环境危险,条件恶劣的工作环境下代替工人进行生产的实际操作,如冲压、涂装、焊接、机械加工与原子能领域以及有害有毒物质的生产搬运工作等[1]。
所以对机械臂的研究有益于工业生产的经济效益以及工作效率。
传统的机械臂是由固定程序控制的机械臂,通过固定轨迹抓取固定位置的物件的机械臂在应用方面会有所限制,而随着人机交互的技术的不断发展,机械臂的控制方式也从固定方式发展到由人手控制进行仿生动作。
所以在技术方面也具备了一定的研究价值。
1.4本文论文结构及章节安排
第一章为引言,首先对该选题的背景进行简要分析,然后通过对机械臂的国内外发展情况研究做出说明,突出车载机械臂的发展前景,并表明了研究内容,最后对论文的结构进行安排以及对章节的分布。
第二章概括了本文研究对象,主要介绍本设计所包含的硬件组成,其中包括控制端:体感手套以及执行端:车载机械臂,并简要说明其如何构成。
第三章为本主要章节,突出讲解体感识别系统,首先介绍了体感识别的硬件主要组成部分,然后说明MPU66050芯片与Arduino之间的通信方式及其原理,最后介绍体感识别的采集信息,以及如何通过代码实现功能。
第四章也是本文的主要章节,详细介绍控制系统,首先阐述控制系统与识别系
统之间的通信方式,然后介绍控制系统的主芯片以及对执行端驱动方式的算法,从而可以实现对应的功能。
并展示了体感传输的指令,以及部分代码的展示。
第五章为调试章节,主要测试最终成品是否可以达到预期结果,首先测试各模块是否能够正常通信,然后对系统进行整体的测试,尽可能的满足设计目的。
第六章对全文进行总结,以及对利用体感控制车载机械臂的以后发展趋势进行探讨。
1.5本章小结
本章结合选题内容的背景以及相关课题的国内外研究情况进行分析,并在此基础之上,阐述了本课题所研究的目的与意义。
最后对本论文的结构章节分配情况做出说明。
第 2 章硬件介绍
本文中所研究的体感控制车载机械臂,由履带式车体、四自由度机械臂、以及体感手套构成。
履带式车体与四自由度机械臂组装成车载机械臂,体感手套对其进行统一控制,实现前进、转向、抓取等活动[3]。
如图2-1为系统结构,图2-2为整体硬件组装图。
体感手套动作
无线串口透传
主控STM32F1芯
片处理
L298P驱动
模块
机械臂运动车体动作
图2-1 系统结构
图2-2 整体硬件组装图
2.1车载机械臂
本次设计所采用的车载机械臂是由履带式车体以及四自由度机械臂拼接组成,共同由STM32F105RBT6芯片控制。
2.1.1 履带式车体
本设计的底盘采用履带式车体。
车体的实物如图2-3所示,履带式车体的优势就是其与地面之间的接触面积较大,并因此增大了摩擦力,可适应条件不好的环境下进行工作的优点[4]。
本履带式车体输入电压为12V,采用双电机模式,电机转速可达160转/分,可爬坡30度,且能够载重3Kg,能够达到一般的搬运工作。
车体的电机驱动模块采用了L298P芯片进行控制,可同时驱动两台直流电机,满足本次设计的双电机车体需求,且其具备实现电机正反转及调速,符合车体对于前进、后退、转向等操作要求。
除此之外,还具备启动转矩大,启动性能好等优势,所以选用L298P芯片作为驱动芯片十分适合。
车体的双电机驱动控制过程为:由主控模块STM32芯片传输PWM信号至驱动芯片L298P,然后将车体驱动,进而实现直行、转弯、加减速工作[5]。
图2-3 履带式车体
2.1.2 四自由度机械臂
本次设计的车载机械臂的执行末端选用四自由度机械臂,该机械臂爪子闭合时
整体长度为310mm,前端爪子极限开度为55mm,爪子极限宽距离为98mm,并具备四个995舵机,其工作扭矩可达13 N·m,反应转速可达53-62转/分,能够应付一般的抓取工作,机械臂实物如图2-4所示。
舵机的接口是标准三线接口含电源线、地线、以及控制线;其中本设计的舵机的转动角度是通过PWM即脉冲宽度调制信号的占空比来实现的,将三线接到驱动板中,等待体感手套的动作信号,通过主芯片STM32F1产生PWM波使四个舵机进行协调运作,从而使机械臂达到可对物品进行抓取,释放等工作[6]。
图2-4 四自由度机械臂
2.2体感手套
体感手套为本次设计采集体感信息的唯一渠道,并通过其对车载机械臂进行控制,实物图如图2-5所示,体感手套基于Arduino开发平台进行开发,其微控制器为ATMEGA8芯片,同时还具备采集体感信息的MPU6050芯片,以及通信模块GT-38无线串口模块。
体感手套由GT-38无线串口模块进行通信,实现传输数据的功能。
手套搭载MPU6050芯片对手掌动作进行感应,通过IIC通信协议将数据传输至Arduino主板上,手指的动作信号则由电位器反馈到Arduino主板上。
采集到体感信息后,通过无线传输的方式将MPU6050芯片所感应到的数据传至STM32进
行处理进而控制车载机械臂。
MPU6050芯片中包含陀螺仪与加速度计,通过陀螺仪测量变化角度,利用加速度计测量角度,以达到一个精准的控制体感[7,8]。
图2-5 体感手套
2.3本章小结
本章首先介绍了整个系统的流程结构,然后分别对系统硬件的各个组成部分进行介绍,其中包括车载机械臂以及体感手套,首先描述了车载机械臂的主要构造及其各组成部分特点,并附上实物图供参考,再对体感手套进行详细介绍以及附上实物图供参考。
第 3 章体感识别系统
体识别系统主要由MPU6050芯片进行对手部倾角的识别,本芯片将贯穿整个识别系统,并对后续的控制系统具有先导作用,因此,如何精准识别体感是利用体感进行控制的第一道关卡。
3.1体感识别系统模块介绍
体感识别系统模块的核心是MPU6050芯片以及手指端的电位器。
MPU6050芯片内置加速度计、陀螺仪以及IIC通信接口[9,10]。
3.1.1加速度计
当我们使用体感手套时,加速度计将会感应到空间轴上的加速度,分别对应x/y/z三轴,加速度计采集到的数据为模拟量,即输出一个预定范围内的电压值。
而获得数字量则还需要通过MPU6050芯片内置的16位ADC模块转换才能输出为数字量,进而得到三个矢量值,且该矢量为方向分别对应x/y/z轴,此时可计算重力加速度与x/y/z三轴的夹角,即可算出当前的角度。
但是所得角度的精确度较低,此时我们再通过一系列的数据转换计算,再配合陀螺仪所采集的数据相结合,可以得到一个更精确的倾角,从而得到相应的体感控制信息,可实现对机械臂以及车体的控制[11]。
3.1.2陀螺仪
相对于加速度计是对加速度做出反应,陀螺仪则是对空间所翻转的角度做出反应。
陀螺仪所采集的数据类型与加速度计相同,均为模拟量,输出一个预定范围内的电压值,然后通过MPU6050芯片内置的16位ADC模块转换为数字量,如果以度表示角度,以秒来表示时间,可得到一个以度/秒的值,即为角速度,得到角速度后,通过数学公式,进行积分运算可得到对应角度,所以可以通过陀螺仪得到一个角度值。
再通过陀螺仪得到的数据以及加速度计得到的数据,经过滤波互补校正,可以得到一个较为精确的角度,从而得到对应的体感控制信息,可以使车体进行前
进、后退、转向等操作,机械臂进行旋转、伸展等动作。
3.1.3 IIC通信
在加速度计与陀螺仪采集到数据经过处理之后,需要通过Arduino板上的GT-38模块将数据传输至STM32主板,再对机械臂与车体进行控制。
那么MPU6050芯片如何将数据传输至Arduino板呢?因为MPU6050芯片内置了IIC接口,所以采用了IIC的通信协议,这种通信方式需要两根双向的信号线:数据线SDA以及时钟线SCL。
通信协议双方中分主机与从机,一般认为主机、从机可互换。
本次假设Arduino板设为主机,MPU6050芯片为从机,当主机初始化完成后,主机时钟线SCL处于高电平,此时主机数据线SDA会有一个高电平向低电平的下降沿出现,而从机为高电平,此时,从机变为主机获得传输数据权限,主机变为从机接收数据,主机所传输的数据结构为7个地址位、1个读写位和一个应答位。
若从机成功接收数据,则会在最后一位,向主机发送一个应答信号若接收成功则为有效应答位ACK,若接收失败,则为非应答位NACK。
总线空闲时,时钟线SCL与数据线SDA均为高电平[9],传输数据时信号变化图如图3-1所示。
图3-1 IIC总线通讯时信号变化过程
尽管MPU6050芯片的通信方式仅有IIC通信方式,但IIC的通信方式具备极低的电流消耗、抗高噪声干扰、电源电压范围宽等优势,所以选用MPU6050芯片进行采集体感信号,是非常合适的。
3.1.4 电位器
当我们要通过一个手套既控制电机又控制舵机的时候,我们还需要五个手指进
行配合,而手指的动作信号,则由电位器提供各手指数据。
拇指对电机的运作进行控制,而其余四个手指则联合控制四个舵机的运作。
当拳头紧握时,其余四个手指的组合张开,表示此时可以控制与其相对应的舵机。
电位器具有三个引出端,其中中间一端为输出端,左端接地,右端为输入端。
电位器原理与滑动变阻器相似,通过中间滑片调节电阻,进而调节电压,通过相似的原理,当手指向上或向下弯曲,此时电位器中间的转轴会转动,改变电压值。
经过设定好的固有数值,当手指发生动作,数值发生变化,此时采集数据,记录新的数据,此时再与手部的动作相结合,发送对应数据至STM32F1芯片,驱动车体电机的动作以及机械臂舵机旋转。
3.2体感信息采集
体感识别方面由MPU6050采集手掌的摆动信息以及电位器则对手指的动作进行反馈信息,两者共同配合,形成完整的体感信息,实现体感识别[10],MPU6050芯片主要采集手部的偏移角度,其采集代码如下:
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); //获取当前各轴数据//校准加速度数据
ax_offset = ax; //X轴校准数据
ay_offset = ay; //Y轴校准数据
az_offset = az - 8192; //Z轴校准数据
//校准角速度数据
gx_offset = gx; //X轴校准数据
gy_offset = gy; //Y轴校准数据
gz_offset = gz; //Z轴校准数据
}
通过采集代码采集到数据之后,得到角度数据,更新角度数据,对读取到的值进行滤波,校正,互补最终得到角度偏移量。
文中仅展示采集部分代码,具体的代
码实现将在附录补充。
而手指部分采集代码如下:
if (timer_sampling <= millis())
{
for (int i = 14; i <= 18; i++)
{
if (i < 18)
sampling[i - 14] += analogRead(i); //读取各个手指的数据
else
sampling[i - 14] += analogRead(A6); //读取小拇指的数据
sampling[i - 14] = sampling[i - 14] / 2.0; //取上次和本次测量值的均值
data[i - 14 ] = float_map( sampling[i - 14],min_list[i - 14], max_list[i - 14], 2500, 500); //将测量值映射到500-2500,握紧手时为500,张开时为2500 data[i - 14] = data[i - 14] > 2500 ? 2500 : data[i - 14]; // 限制最大值为2500
data[i - 14] = data[i - 14] < 500 ? 500 : data[ i - 14]; //限制最小值为500
}
通过该部分的信息采集,可以为下面对车载机械臂的体感控制提供基础。
3.3本章小结
本章介绍了体感识别系统的核心硬件MPU6050芯片,电位器,通过这两个核心硬件可以对手指、手掌的主要体感信息进行采集,还简述了MPU6050芯片与Arduino板以及其工作原理和两者之间的通信方式,除此之外还展示如何通过代码实现对体感信息的采集。
第 4 章车载机械臂控制系统
控制系统由主控模块、驱动模块以及车载机械臂模块构成。
通过识别系统收集到的体感信号数据,利用无线串口透传的通信方式将体感信号数据传输到主控芯片STM32上,从而控制驱动模块驱动车载机械臂模块动作[2]。
4.1通信模块
该部分是体感手套与主控板STM32芯片信息交互的枢纽,由于主板上仅有UART串口可用于通信,并且该通信方式的成本较低。
因此本次设计控制主板STM32与体感手套的通信方式是通过UART串口来实现的无线串口透传。
同时,为了体感手套与主板STM32能够实现更好的通信,在体感手套以及控制主板上都加了芯片为SI4438的GT-38无线串口模块,该模块在安装上只需要UART串口的RX、TX、VCC、GND四个接口,无需时钟信号,所占用引脚资源少,并且该模块在功耗上相对于SI4432接收电流更低,对功耗有明显的改善。
本次选用该模块所设置的工作频率为433MHz,其传输距离相对较远,在空旷地,该模块无线传输数据最远可达2公里。
通过该模块,主板与手套可顺利进行通信,发送方与接收方的数据长度内容一致,在接收方接收到数据之后无需做过多的处理,可认为是直接通过数据线进行传输数据。
本通信方式还具有可双向传输,数据丢失几率较低。
通过无线串口透传的通信方式可以达到体感手套将一个动作控制信号发送到主控板,从而通过STM32F1芯片的内置定时器产生多路PWM波,通过PWM波控制机械臂以及车体的动作,达到体感控制车载机械臂的效果。
4.2主芯片介绍
本设计的控制模块的芯片采用STM32F1芯片,芯片的实物图如图4-1所示,此芯片工作频率最高可达72MHZ,是同类型中性能较高的一款芯片,内部装配高速存储器,具有高容量闪存存储器,最高可满足128K字节的数据存储,以及20K
字节的静态随机存取存储器即SRAM。
还具备2个12位的数模转换模块、3个通用16位定时器,还包括多个标准通信接口:IIC、SPI、USB、UART等,所选用芯片满足本设计的通讯,控制要求。
其中舵机与电机的PWM波的产生输出由定时器TIM2与TIM5分别控制。
而UART串口可在通信时添加GT-38无线串口模块接收体感手套所传输的控制动作信号。
本控制模块实物图如图4-2所示:
图4-1 STM32芯片
图4-2 控制模块
4.3驱动模块
4.3.1 L298P芯片
本设计的驱动模块实物图如图4-3所示。
车载机械臂的驱动部分由驱动板提供动力进行动作、驱动板主要含有电源接口DC7-15V、L289P芯片、8路舵机驱动、2
路电机接口,能够正常提供车体的双电机和机械臂的四个舵机的驱动动力,控制车体的移动以及机械臂的抓取。
该模块的4个输出端:OUT1、2、3、4、为电机的输出接口,分别对应车体两个直流电机的正负极。
4个输入端:INPUT1、2、3、4为两个电机的方向逻辑引脚,如可设置INPUT1为高电平,INPUT2为低电平,此时电机正转。
ENBLEA与ENABLEB为电机的使能引脚,本次控制方式为PWM波控制,故此可称为PWM输入引脚,其接到单片机的PWM控制引脚上可实现电机的转速进行控制。
实现车体的前进转向的基础功能。
图4-3 驱动模块
4.3.2 多路PWM控制
关于车载机械臂的车体与机械臂,车体的直流电机与机械臂的舵机将采用统一控制方式,车体的左右电机均在车体尾部,提供动力以及控制转向,动力由L298P 模块提供,那么控制转向的方式使用哪种方式呢?本设计中使用的是PWM控制方式,即脉冲宽度调试方式。
由于有两个电机,所以使用两路PWM信号分别给左右两个电机,这样可以使两个电机相互独立。
当体感手套上的Arduino板发送动作信号给STM32芯片后,STM32F1芯片外设的定时器TIM5产生两个PWM波,经过设定好的周期,频率以及占空比等参数,分别通过L298P驱动模块的EA端与EB 端输入PWM波信号,通过已经程序设定好的左右两个电机的转速方向,通过PWM 波来控制左右电机的旋转速度以及正反转。
利用定时器产生控制电机的PWM波的程序代码设计流程图如图4-4所示。
开始
配置PWM输出引脚
设置定时器TIM5定时周期
设置定时器TIM5工作频率
设置定时器TIM5初始化
分别输出定时器TIM5两通道PWM波
结束
图4-4 电机部分PWM波程序流程图
与该流程图相对应的程序设计完整代码可在附录中查看。
而机械臂拥有四个舵机,所以需要产生四个PWM波分别控制四个舵机的旋转角度,当体感手套上的Arduino板发送启动信号给STM32F1芯片后,经IIC通信将所对应的角度初始信息存储至EEPROM中,当发送动作信号给STM32F1芯片后,读取EEPROM中的初始值,并对其进行计算,得到所需要的旋转角度以及向左向右偏移量,届时STM32F1芯片外设的定时器TIM2将会产生4个PWM波,经过L298P芯片处理后,再通过自带的控制线向四个舵机发送PWM波,使四个舵机分别至程序所设定的旋转角度,并让他保持这个角度,这个角度是由所产生的PWM 波的占空比大小决定的。
本部分利用定时器产生控制舵机的PWM波的程序代码设计流程图如图4-5所示:
开始
设置定时器TIM2定时周期
设置定时器TIM2工作频率
编写定时器TIM2中断服务函数
设置定时器TIM2初始化
分别输出4路PWM波
结束
图4-5 舵机部分PWM程序流程图
与该流程图相对应的程序设计完整代码可在附录中查看。
4.4体感控制指令
本设计的主要通信是体感手套与车载机械臂之间的通信。
体感手套与主芯片STM32F1的通信方式是采用了无线串口透传的通信方式。
当手套已经收集到体感信息之后需要传输特定字符串指令至主芯片STM32F1,通过芯片对驱动板进行控制,从而实现车载机械臂的对应功能。
主要体感信息是通过手握拳头,此时张开拇指为两个电机的控制标识,张开另外四根手指表示数字“1”至“4”,则分别对应四个舵机的控制标识,然后摆动手部进行相对应的操作,如张开拇指,手部左倾此时车体便会向左转。
在程序设置中,对体感手套发送控制电机运作的的各字符串指令设。