球形六足变形机器人设计_第1页
球形六足变形机器人设计_第2页
球形六足变形机器人设计_第3页
球形六足变形机器人设计_第4页
球形六足变形机器人设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要摘要:本次项目要求制作球形六足变形机器人,预计最终可实现的功能有手柄遥控、球形六足模式的变换、球形滚动行进和六足模式行走。此次项目中我们只是针对该机器人制作实验模型,实现球形六足机器人的一部分功能,本文汇报了机器人模型制作过程有关机械结构的设计,硬件选型及软件的设计过程,机械结构设计主要包括机械本体上中间展开结构,下肢机械足和上肢机械臂。硬件方面选择以STM32作为控制核心部件与舵机控制板和九轴传感器相结合,所以在软件设计方面主要是基于STM32单片机控制的编程,以及Matlab求出机械足的运动反解结合舵机控制板实现机械足的正确轨迹。除此之外还有装配与实物调试以及市场前景的分析。关键词:球形 六足 STM32 目录摘要第一章 设计概述1.1球形六足机器人国内外发展现状1.2球形六足机器人系统设计任务概述1.3课程设计主要内容第二章 方案设计2.1机械结构方案设计2.2驱动方案选择2.3传感器的选择第三章 机械系统设计3.1 机械系统总体方案3.2 关键尺寸设计3.3 关键零部件结构设计3.4 驱动关节运动轨迹规划第四章 控制系统设计4.1 控制系统总体方案4.2 运动控制器选型4.3 传感检测外围电路设计4.4 电源供电电路设计第五章 软件系统设计5.1 软件系统总体方案5.2速度控制方案与流程5.3 轨迹控制方案与流程第六章 装配与调试6.1 机器人系统整体装配6.2系统调试流程与状况6.3 设计创新点6.4 系统缺陷与改进第七章 市场应用前景分析项目心得参考文献附录一 系统数学建模与轨迹规划附录二 成本分析附录三 程序源代码第一章 设计概述1.1球形六足机器人国内外发展现状球形机器人作为一种较新颖的机器人,它与传统的机器人相比具有可变形,控制容易,可实现全方位运动适应各种地形等特点,其应用前景十分广阔。由于其越野性能较好,不但可以作为玩具供人娱乐,而且可以作为交通运输工具使用,特别是在军事领域扮演重要角色,如输送军用物质,用于爆破、军事侦察等。1.2球形六足机器人系统设计任务概述a. 具备球形模式和六足行走模式的相互变形转换。b. 具备球形模式实现滚动行进(通过九轴传感器实时检测位姿)。c. 具备六足模式实现六足行进。d. 具备PS2手柄控制。e. 具备重心调节能力,可携带移动电源。f. 球形直径约为32cm。1.3课程设计主要内容(1)资料查阅、分析总结,所需天数1天 (2)总体方案设计,所需天数2天(3)机械结构设计,所需天数2天 (4)传感、信息传输和运动控制系统的设计,所需天数2天(5)关键零部件的设计制作,所需天数2天 (6)控制程序编码与调试,所需天数3天(7)绘制总装图和关键零件图,所需天数2天(8)系统整体装配与调试所需天数3天(9)编制课程设计说明书所需天数2天(10)答辩考核、演示,所需天数1天 第2章 方案设计2.1机械结构方案设计按设计要求设计球形六足机器人应具有一个展开结构用来实现球形模式和六足模式的转换;具有六个下肢机械足用来实现六足行走功能;由于球形模式还具有滚动功能故应有六个机械上肢对应于六个机械足来实现滚动功能。展开结构采用一个舵机带动齿轮,通过齿轮啮合带动其余6个曲杆的展开和收缩。(见图2-1)图2-1展开结构下肢机械足采用3个舵机带动,由舵机、杯士轴承、长U架、短U架和多功能支架组成;足部与地面接触处加装一个缓冲器(见图2-2)。图2-2下肢机械足上肢机械臂采用2个舵机带动,由舵机、杯士轴承、长U架、短U架、多功能支架和斜支撑架组成(见图2-3);图2-3上肢机械臂2.2驱动方案选择舵机的选择:动态模型都离不开舵机的,而舵机又分为两种,一种是数字舵机一种是模拟舵机,现在市场上一般都是用数字舵机,很多人问那么数字舵机与模拟舵机有什么区别呢,其实数字舵机和模拟舵机在基本的机械结构方面是完全一样的,主要由马达、减速齿轮、控制电 路等组成,而数字舵机和模拟舵机的最大区别则体现在控制电路上,数字舵机的控制电路比模拟舵机的多了微处理器和晶振。不要小看这一点改变,它对提高舵机的 性能有着决定性的影响。数字舵机在以下两点与模拟舵机不同:1.处理接收机的输入信号的方式;2.控制舵机马达初始电流的方式,减少无反应区,就是对小量信号无反应的控制区域,增加分辨率以及产生更大的固定力量。模拟舵机在空载时,没有动力被传到舵机马达。当有信号输入使舵机移动,或者舵机的摇臂受到外力的时候,舵机会作出反应,向舵机马达传动动力(电压)。这种 动力实际上每秒传递50次,被调制成开/关脉冲的最大电压,并产生小段小段的动力。当加大每一个脉冲的宽度的时候,如电子变速器的效能就会出现,直到最大 的动力/电压被传送到马达,马达转动使舵机摇臂指到一个新的位置。然后,当舵机电位器告诉电子部分它已经到达指定的位置,那么动力脉冲就会减小脉冲宽度, 并使马达减速。直到没有任何动力输入,马达完全停止。模拟舵机的“缺点”是:假设一个短促的动力脉冲,紧接着很长的停顿,并不能给马达施加多少激励,使其转动。这意味着如果有一个比较小的控制动作,舵机就会 发送很小的初始脉冲到马达,这是非常低效率的。这也是为什么模拟舵机有“无反应区”的存在。比如说,舵机对于发射机的细小动作,反应非常迟钝,或者根本就 没有反应。相对于传统的模拟舵机,数字舵机的两个优势是:因为微处理器的关系,数字舵机可以在将动力脉冲发送到舵机马达之前,对输入的信号根据设定的参数进行处理。这意味着动力脉冲的宽度,就是说激励马达的动力,可以根据微处理器的程序运算而调整,以适应不同的功能要求,并优化舵机的性能。数字舵机以高得多的频率向马达发送动力脉冲。就是说,相对与传统的50脉冲/秒,现在是300脉冲/秒。虽然,以为频率高的关系,每个动力脉冲的宽度 被减小了,但马达在同一时间里收到更多的激励信号,并转动得更快。这也意味着不仅仅舵机马达以更高的频率响应发射机的信号,而且无反应区变小;反应变得更 快;加速和减速时也更迅速、更柔和;数字舵机提供更高的精度和更好的固定力量。由于本次项目所设计的机器人为实验模型机,故选用模拟舵机MG995(见图2-4)。这样可节约大量成本。图2-4 舵机MG9952.3传感器的选择球形六足机器人在球形模式下需要具备滚动行进,故需要选择一款九轴传感器MPU-92/65(见图2-5)。图2-5九轴传感器MPU-92/65九轴惯性测量传感器包括三轴陀螺仪, 三轴加速传感器, 三轴磁感应传感器。使用九轴传感器实时检测机器人的位姿,通过程序的编写,实现机器人接触地面的两个球片伸缩来推动球,实现滚动行进。第3章 机械系统设计3.1 机械系统总体方案首先确定球体设计大小为32cm,绘制二维装配图确定各个零件的大致位置和尺寸(见图3-1),初步设计各个零件具体尺寸,绘制三维图进行仿真装配(见图3-2),以便零件尺寸有问题可以及时修改。 图3-1二维装配图 图3-2三维装配图3.2 关键尺寸设计中间展开结构零件: 图3-3 中间上盘图3-4 中间下盘图3-5 曲杆上肢支架与支架圆盘: 图3-6 上肢支架与支架圆盘 图3-7 上部与中部连接盘齿轮挡盘与电源架:图3-8 齿轮挡盘图3-9电源架3.3 关键零部件结构设计中间展开结构部件图 图3-10 中间展开结构部件图上肢部件图: 图3-11上肢部件图下肢机械足部件图: 图3-12 下肢机械足部件图3.4 驱动关节运动轨迹规划见附录1第四章 控制系统设计4.1 控制系统总体方案 图4-1控制电路图4.2 运动控制器选型运动控制通常是指在复杂条件下,将预定的控制方案、规划指令转变成期望的机械运动,实现机械运动精确的位置控制、速度控制、加速度控制、转矩或力的控制。 按照使用动力源的不同,运动控制主要可分为以电动机作为动力源的电气运动控制、以气体和流体作为动力源的气液控制和以燃料(煤、油等)作为动力源的热机运动控制等。在这几种运动控制中,电气运动控制应用最为广泛。 从基本结构上看,一个典型的现代运动控制系统的硬件主要由上位机、运动控制器、功率驱动装置、电动机、执行机构和传感器反馈检测装置等部分组成。其中的运动控制器是指以中央逻辑控制单元为核心、以传感器为信号敏感元件、以电机或动力装置和执行单元为控制对象的一种控制装置。 运动控制器就是控制电动机的运行方式的专用控制器:比如电动机在由行程开关控制交流接触器而实现电动机拖动物体向上运行达到指定位置后又向下运行,或者用时间继电器控制电动机正反转或转一会停一会再转一会再停。运动控制在机器人和数控机床的领域内的应用要比在专用机器中的应用更复杂,因为后者运动形式更简单,通常被称为通用运动控制(GMC)。本次球形六足机器人选用PS2手柄与舵机控制板结合控制机器人(见图4-2);或者备选STM32单片机与蓝牙模块结合通过手机控制 图4-2 手柄及手柄接线4.3 传感检测外围电路设计九轴传感器电路: 图4-3九轴传感器电路图4.4 电源供电电路设计电源供电电路使用2块电池分别给舵机控制板和舵机供电(见图4-)。图4-4 电源供电电路图第5章 软件系统设计5.1 软件系统总体方案六足行走模式采用Matlab编程反解出各个动作所需的端机角度,然后通过舵机控制板上位机软件拖动舵机到相应的角度下载到相应的动作组中。通过PS2手柄遥控发出信号控制舵机控制板中相应的动作组来实现机器人行走。球形模式采用STM32编程通过检查九轴传感器发出的数据(对应角度)和PS2手柄发出的数据共同决定来运行相应的舵机控制板中下载好的相应动作组。5.2速度控制方案与流程速度控制可以通过舵机控制板上位机软件来实现每个舵机运行的速度,从而实现整体机器人速度的控制。5.3 轨迹控制方案与流程轨迹控制可以通过Matlab编程来实现。第6章 装配与调试6.1 机器人系统整体装配图6-1整体装配图6.2系统调试流程与状况调试流程:a.设置动作组使机器人可实现球形与六足模式转换。 b.在六足模型下实现各种动作,如水母,莲花等。 c.实现六足行走。 d.调试九轴传感器,对应角度可以执行对应的动作。 e.结合STM32实现球形模式的滚动行进。 f.实现综合手柄遥控所有动作。状况:由于舵机抖机与舵机之间信号的干扰仅能实现少部分舵机的联合运动。6.3 设计创新点a. 可实现球形模式与六足模式相互变换。b. 球形可实现滚动行进。c. 使用PS2手柄控制。6.4 系统缺陷与改进缺陷:舵机抖机,舵机数量太多之后舵机之间相互干扰(舵机乱动,电压不稳,电流瞬间增大)。改进:将模拟舵机换成数字舵机,控制更加精确;串联多个电源供电使电压更加稳定。第7章 市场应用前景分析目前国内已经出现了球形机器人,不过这种球形机器人只能实现滚动行进。而我公司研发的球形六足机器人还未在市场上发现同样的产品,相比球形机器人来说我们的产品可以变形而且可操纵性更强。项目心得项目持续了一个月半左右的时间,在此次课程设计项目中,我们自学了STM32有关控制的知识,这让我们对单片机控制产品有了更加深刻的了解,自学知识,并成功将其应用于实践中,我们感受到很大的自豪感,同时也对机电专业产生了更加浓厚的兴趣。在本次项目中我们遇到了许多问题,有硬件问题也有软件问题,通过一次一次的实践,一次一次的把硬件烧坏,最终都将他们解决并完成了我们的机器人制作。通过这次项目我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。经过小组成员的不懈努力,最终圆满完成了此次项目。最后再一次感谢所有在项目中曾经帮助过我们的良师益友和同学,以及在设计中被我引用或参考的论著的作者。 参考文献1熊有伦.机器人技术基础,华中科技大学出版社,19952张志涌,杨祖樱.MATLAB教程,北京航空航天大学出版社,20153许立忠、周玉林.机械设计,中国标准出版社,20124邵晓荣、张艳.互换性与测量技术基础,20115张建民,机电一体化原理与应用,北京,国防工业出版社,1992 附录一 系统数学建模与轨迹规划通过SolidWorks绘制三维模型,我们确定的机械腿如下图所示: 附图1-1机械腿 并得到个杆长如下表所示:附表1-1连杆长度a2d2a3a4杆4100mm25mm10mm84mm80mm为了确定机器人各连杆之间相对运动关系,在各连杆上分别固接一个坐标系,与基座固接的坐标系是0系,和连杆i固接的坐标系是i系,机械腿共有四根连杆,四个转动副共有四个自由度;建系规则:建立坐标系时,对于中间连杆,坐标系i-1的z轴与关节轴i-1共线,指向任意,坐标系i-1的x轴与连杆i-1的公垂线重合,由关节i-1指向关节i,当两关节相交时,取,y轴是在确定了x轴和z周之后使用右手法则确定;对于i-1的原点,当两关节轴线不相交时,原点取在x轴和z轴的交点,两轴线相交,即和相交时,i-1的原点取在两轴线交点上;对于基座标系,将其与基座固接,固定不动;按照以上原则,建立该项目机械腿坐标系如下图所示:附图1-2 机械退坐标图连杆参数表连杆参数定义为:从到沿着测量得到的距离;从到绕着旋转的角度;从到沿着测量得到的距离;从到绕着旋转的角度;结合各个杆长,得到连杆参数表如下表所示:附表1-2机械腿连杆参数连杆序号i关节变量关节变量初值1000021000-25031000484000齐次变换矩阵连杆变换可以看做坐标系i经过以下四个子变换得到:(1) 绕轴转角;(2) 沿着移动距离;(3) 绕轴转角;(4) 沿着移动距离;由机器人技术基础公式(3.3)可以得到: 由复合变换,就可以得到任意两杆件之间的齐次变换矩阵;也可得到末端执行器和基座标系之间的齐次变换矩阵为:现在将机械腿初始位置得到的末端位置代入进行分析,由以上得到,在初始位置的时候:T4_0 = 1, 0, 0, 194 0, 0, 1, 0 0, -1, 0, -25 0, 0, 0, 1编写程序如下:clcclear allsyms a alfa theta dsyms nx ox ax px ny oy ay py nz oz az pzsyms Tsyms theta1 theta2 theta3 theta4%以上为所定义的变量T(1,1)=cos(theta);T(1,2)=-sin(theta);T(1,3)=0;T(1,4)=a;T(2,1)=sin(theta)*cos(alfa);T(2,2)=cos(theta)*cos(alfa);T(2,3)=-sin(alfa);T(2,4)=-d*sin(alfa);T(3,1)=sin(theta)*sin(alfa);T(3,2)=cos(theta)*sin(alfa);T(3,3)=cos(alfa);T(3,4)=d*cos(alfa);T(4,1)=0;T(4,2)=0;T(4,3)=0;T(4,4)=1;%以上为齐次转换矩阵各个元素T1_0=subs(subs(subs(subs(T,a,0),alfa,0/180*sym(pi),theta,theta1),d,0);%1号杆件的转换矩阵T2_1=subs(subs(subs(subs(T,a,100),alfa,0/180*sym(pi),theta,theta2),d,-25);%2号杆件的转换矩阵T3_2=subs(subs(subs(subs(T,a,10),alfa,-90/180*sym(pi),theta,theta3),d,0);%3号杆件的转换矩阵T4_3=subs(subs(subs(subs(T,a,84),alfa,0/180*sym(pi),theta,theta4),d,0);%4号杆件的转换矩阵T4_0 =1,0,0,194;0,0,1,0;0,-1,0,-25;0,0,0,1;T11=inv(T1_0);%T11为T1_0的逆矩阵T411=T2_1*T3_2*T4_3T41=T11*T4_0由此计算得到当机械腿处于给定位置的时候,各关节的对应角度为:附表1-3机械腿反解12340000可以验证其结果是正确的。附录二 成本分析附表2-1元件价格表总计:1750元附录三 程序源代码舵机控制板程序代码:#4P1120#5P1425#6P1030#7P1430#8P1100#9P1325#16P1080#17P1390#24P1080#25P1400#26P1080#27P1365T3000#1P1341#2P1724#3P1322#10P1376#11P1700#12P1300#13P1401#14P1767#15P1300#18P1450#19P1700#20P1278#21P1363#22P1698#23P1300#29P1366#30P1678#31P1256#32P1000T3000蓝牙程序:主程序int main(void) u8 t;u8 len;u16 times=0; delay_init(); /NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/uart_init(9600); /uart2_init(9600);/LED_Init(); /while(1) if(USART_RX_STA&0x8000)if( (USART_RX_BUF0=#) len=USART_RX_STA&0x3fff;/for(t=0;tDR=USART_RX_BUFt;USART_ReceiveData(USART1); USART2-DR=USART_RX_BUFt;USART_ReceiveData(USART2); /* USART1-DR=USART_RX_BUFt;USART_SendData(USART1,USART_RX_BUFt);USART_SendData(USART2,USART_RX_BUFt);*/while(USART2-SR&0X40)=0);/USART_SendData(USART2,0x0d);while(USART2-SR&0X40)=0);/USART_SendData(USART2,0x0a);while(USART2-SR&0X40)=0);/GPIO_SetBits(GPIOB,GPIO_Pin_10);USART_RX_STA=0;if (USART_RX_BUF0=b)&(USART_RX_BUF1=a)GPIO_ResetBits(GPIOB,GPIO_Pin_10);USART_RX_STA=0;if (USART_RX_BUF0=c)&(USART_RX_BUF1=b)&(USART_RX_BUF2=a) times+;if(times%30=0)LED0=!LED0;/delay_ms(10); if(times%200=0)GPIO_SetBits(GPIOB,GPIO_Pin_10);USART_RX_STA=0;if (USART_RX_BUF0=d)&(USART_RX_BUF1=c)&(USART_RX_BUF2=b)&(USART_RX_BUF3=a) times+;if(times%50=0)LED0=!LED0;/LED,.delay_ms(10); if(times%300=0)GPIO_SetBits(GPIOB,GPIO_Pin_10);USART_RX_STA=0; 串口:#include sys.h#include led.h#include usart.h #if SYSTEM_SUPPORT_OS#include includes.h/ #endif #if 1#pragma import(_use_no_semihosting) struct _FILE int handle; ; FILE _stdout; _sys_exit(int x) x = x; int fputc(int ch, FILE *f) /while(USART1-SR&0X40)=0);/ USART1-DR = (u8) ch;while(USART2-SR&0X40)=0);/ USART2-DR = (u8) ch;/return ch;#endif / #if EN_USART1_RX / u8 USART_RX_BUFUSART_REC_LEN; /u16 USART_RX_STA=0; / void uart_init(u32 bound) GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; /PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/ GPIO_Init(GPIOA, &GPIO_InitStructure);/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;/PA3 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;/ GPIO_Init(GPIOA, &GPIO_InitStructure);/GPIOA.10 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;/NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;/NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/NVIC_Init(&NVIC_InitStructure);/ USART_InitStructure.USART_BaudRate = bound;/USART_InitStructure.USART_WordLength = USART_WordLength_8b;/USART_InitStructure.USART_StopBits = USART_StopBits_1;/USART_InitStructure.USART_Parity = USART_Parity_No;/USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;/USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;/ USART_Init(USART1, &USART_InitStructure); / USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);/ USART_Cmd(USART1, ENABLE); /void USART1_IRQHandler(void) /u8 Res;#if SYSTEM_SUPPORT_OS OSIntEnter(); #endifif(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) /Res =USART_ReceiveData(USART1);/if(USART_RX_STA&0x8000)=0)/if(USART_RX_STA&0x4000)/if(Res!=0x0a)USART_RX_STA=0;/else USART_RX_STA|=0x8000;/else /if(Res=0x0d)USART_RX_STA|=0x4000;elseUSART_RX_BUFUSART_RX_STA&0X3FFF=Res ;USART_RX_STA+;if(USART_RX_STA(USART_REC_LEN-1)USART_RX_STA=0;/ #if SYSTEM_SUPPORT_OS OSIntExit(); #endif #endif/#if EN_USART2_RX u8 USART2_RX_BUFUSART2_REC_LEN; u16 USART2_RX_STA=0; void uart2_init(u32 bound) GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); /USART1_TX GPIOA.2 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; /PA.2 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); /USART1_RX GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;/PA3 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); /Usart1 NVIC ?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论