视觉制导论文—机电一体化与机器人技术-机电动力试验平台.doc_第1页
视觉制导论文—机电一体化与机器人技术-机电动力试验平台.doc_第2页
视觉制导论文—机电一体化与机器人技术-机电动力试验平台.doc_第3页
视觉制导论文—机电一体化与机器人技术-机电动力试验平台.doc_第4页
视觉制导论文—机电一体化与机器人技术-机电动力试验平台.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

机电一体化与机器人技术 机电动力试验平台 机电一体化与机器人技术 论 文姓名: 石卓 学号: 02011310 同组成员: 郭亮、徐辉 完成日期: 2013年11月20日 目录一、硬件平台综述3机电一体化3二、方案论证6三、方案实现6四、完成情况6五、总结71、不足与反思72、个人的心得体会7六、附录71、 硬件平台综述1、机电一体化机电一体化系统一般由五大要素组成,分别是结构组成要素、动力组成要素、运动组成要素、感知组成要素、职能组成要素五大组成要素有机结合而成。机械本体(结构组成要素)是系统的所有功能要素的机械支持结构,一般包括有机身、框架、支撑、联接等。动力驱动部分(动力组成要素)依据系统控制要求,为系统提供能量和动力以使系统正常运行。测试传感部分(感知组成要素)对系统的运行所需要的本身和外部环境的各种参数和状态进行检测,并变成可识别的信号,传输给信息处理单元,经过分析、处理后产生相应的控制信息。控制及信息处理部分(职能组成要素)将来之测试传感部分的信息及外部直接输入的指令进行集中、存储、分析、加工处理后,按照信息处理结果和规定的程序与节奏发出相应的指令,控制整个系统有目的的运行。执行机构(运动组成要素)根据控制及信息处理部分发出的指令,完成规定的动作和功能。2、小车的整体组成小车主要由51单片机电路板和两个伺服舵机组成,并配有面包板方便连接电路。同时采用USB转串口连接线,方便烧录程序。同时,我们对小车进行了相应的改装,用三个光盘夹上轮毂,外围包上了一圈胎皮作为轮胎。由于轮毂是靠胶带粘在光盘上,为使得轴心不偏离光盘中心,我们特意用尺具精确,如此保证了轴转动的平稳性。小车整体由轮子当腿,51单片机电路板当大脑,两个伺服电机当驱动能量实现小车的运动。而决定其路径的是路况和对应的大脑里的程序指令。二、方案论证我们原本设想采用将红外发射和接受装置放置在车架下面,轮子较前面一点。这样来保证轮子能尽快随着路形拐弯行驶。但是,经过很多次的尝试,并没有达到预期效果,其主要原因是,小车在拐第二个弯的时候容易大幅度摆动,导致小车没来得及检测就已经跑出轨道了。经过分析原因之后,我们决定将红外发射装置及接收装置想前轮伸展,目的是让小车在遇到弯的时候可以以小幅度的转弯行驶,避免转弯摆动时跳出轨道的黑线。三、方案实现我们将红外发射与接收装置引伸到前轮后面的两个杆旁边,其中红外发射装置用黑胶带裹住(黑色吸收红外线),使得发射装置只向前发射。并且,让两装置正对地面又有一点前伸,调整好角度使得接收装置很好接收红外线。在方案实现过程中,组长徐辉主要负责程序的编写和调试,郭亮主要负责物品的采集和协助工作。我主要负责制作轮子、调整及检查元件和连接电路等。在检查电路时,我一向很认真细心,所以没怎么出现过电路错误。在调试过程中,由于探测装置没有固定在空中,导致不稳定。我们也决定利用适当的铁丝的来固定它们,并得到了很好的效果。四、完成情况在我们大家的共同努力下,终于将我们的小车改装完毕,并且在调试的过程中展现了良好的运行状态,虽然没有达到我们预期的良好效果,但基本还算满意。实现了让小车沿着黑胶带前行,并且可以转过很大的角度。我们会进一步调整转速,并对应的调试程序。有可能的话我们会进一步探测装置的位置,达到更好的效果。五、总结1、不足与反思我们虽然设计并采用了让支撑轮在前面,但是结果并不太理想。小车在前行的时候,特别容易后仰,而且,比赛时的赛道大多都是直角弯和陡弯,因此我们只好在前面加上一个小重物,从而使得小车在启动的时候不会大幅度的跳动,并且前行的时候不会后仰,保证了它的稳定性。然而,小车变重会使得工作电流变小,摩擦力也比较大。2、个人的心得体会课程虽然结束了,但通过这门课程,我对单片机产生了浓厚的兴趣,自己也在课后买来了单片机和小车进行研究。在对小车进行改装的过程中,我也收获了很多。我们曾有过很多失败,也曾想过要放弃,但最终我们都坚持了下来,并且取得了比较满意的成绩。在以后的学习实践中,我会着重对这方面进一步学习。六、附录附录-比赛程序#include #include #include#defineLeftEmitP1_3#defineLeftRecvP2_3#defineLeftLEDP3_3#defineRightEmitP1_6#defineRightRecvP2_6#defineRightLEDP3_6#define LpEmitP1_4#define LpRecvP2_4#define LpLEDP3_4#define RpEmitP1_5#define RpRecvP2_5#define RpLEDP3_5#define testP3_7#define LeftWheel(unsigned int)1490)#define RightWheel(unsigned int)1510)unsigned short Detect,PreDire,counter1,counter2,counter3;unsigned short state,runed;unsigned short velocity=200,velocityL=200,velocityR=200;short i;void IRLaunch(unsigned char IR) if(IR=L) for(i=0;i20;i+) LeftEmit=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); LeftEmit=0; _nop_(); _nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); if (IR=R) for(i=0;i20;i+) RightEmit=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); RightEmit=0; _nop_(); _nop_(); _nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); if(IR=K) for(i=0;i20;i+) LpEmit=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); LpEmit=0; _nop_(); _nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); if(IR=Q) for(i=0;i20;i+) RpEmit=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); RpEmit=0; _nop_(); _nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); void Forward(void) int duration1=RightWheel-velocity;int duration2=LeftWheel+velocity;P1_0=1;delay_nus(duration1);P1_0=0;P1_1=1;delay_nus(duration2);P1_1=0;delay_nms(17);void Turnleft(void) int duration1=RightWheel-200+5;int duration2=LeftWheel+velocity;P1_0=1;delay_nus(duration1);P1_0=0;P1_1=1;delay_nus(duration2);P1_1=0;delay_nms(17);void Turnright(void) int duration1=RightWheel-velocity+5;int duration2=LeftWheel+200;P1_0=1;delay_nus(duration1);P1_0=0;P1_1=1;delay_nus(duration2);P1_1=0;delay_nms(17);void TurnleftST(void) int duration1=RightWheel-velocity+10;int duration2=LeftWheel;P1_0=1;delay_nus(duration1);P1_0=0;P1_1=1;delay_nus(duration2);P1_1=0;delay_nms(17);void TurnrightST(void) int duration1=RightWheel+5;int duration2=LeftWheel+velocity;P1_0=1;delay_nus(duration1);P1_0=0;P1_1=1;delay_nus(duration2);P1_1=0;delay_nms(17);void move(void) int duration1=RightWheel-velocityR+5;int duration2=LeftWheel+velocityL;P1_0=1;delay_nus(duration1);P1_0=0;P1_1=1;delay_nus(duration2);P1_1=0;delay_nms(17);intmain(void)uart_Init();state=0;counter2=0;counter3=0;while(1) if (Detect&0x08) runed=1;state=3;i=0;PreDire=1;counter1=2;counter2=3;if (counter3=0) velocity=50;/else velocity-=25;while (Detect) if (velocity150&counter3=0) velocity+=25;TurnleftST();i+;IRLaunch(L);Detect=(LeftRecv?8:0);IRLaunch(R);Detect+=(RightRecv?64:0);P3=Detect;if (Detect=0x48) /i=Detect&0x08?2:1;while (Detect&0x40) velocity=75;Forward();IRLaunch(L);Detect=(LeftRecv?8:0);IRLaunch(R);Detect+=(RightRecv?64:0);P3=Detect;/if (Detect&0x08=0) i=1; else i=i=2?2:0; Detect=0;counter3=counter3?0:5;/if (i) TurnleftEX();if (Detect&0x40)&(runed=0) runed=1;state=4;i=0;PreDire=2;counter1=2;counter2=3;if (counter3=0) velocity=50;/else velocity-=25;while (Detect) if (velocity150&counter3=0) velocity+=25;TurnrightST();i+;IRLaunch(L);Detect=(LeftRecv?8:0);IRLaunch(R);Detect+=(RightRecv?64:0);P3=Detect;if (Detect=0x48) /i=2;while (Detect&0x08) velocity=75;Forward();IRLaunch(L);Detect=(LeftRecv?8:0);IRLaunch(R);Detect+=(RightRecv?64:0);P3=Detect;/if (Detect&0x40=0) i=1; else i=i=2?2:0; Detect=0;counter3=counter3?0:5;/if (i) TurnrightEX();if (Detect=0x00|Detect=0x30)&runed=0) runed=1;if (state=0) if (velocity200) velocity+=25;Forward();if (state=1) if (velocity200) velocity+=25;else state=0;Turnleft();if (state=2) if (velocity2) if (PreDire=1) if (counter2) counter2-;else state=0;/velocityL=0;/velocityR=50;/move();TurnleftST();if (PreDire=2) if (counter2) counter2-;else state=0;/velocityL=50;/velocityR=0;/move();TurnrightST();if (PreDire=0) if (counter2) counter2-;else state=0;/velocity=50;Forward();if (Detect=0x20&runed=0) if (counter2) counter2-;if (PreDire=1) veloc

温馨提示

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

评论

0/150

提交评论