光机电一体化实验报告_第1页
光机电一体化实验报告_第2页
光机电一体化实验报告_第3页
光机电一体化实验报告_第4页
光机电一体化实验报告_第5页
全文预览已结束

下载本文档

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

文档简介

光机电一体化实验报告法学院张品2012301550041实训目的:1、接触型传感器作为输入反馈与C51单片机的编程实现。2、编程使机器人基于胡须导航,条件判断语句的嵌套与机器人的人工智能决策的编程使机器人逃离进入墙角死区。实验设备:胡须状金属丝2根;平头M3x22盘头螺钉2个13mm圆形立柱2个;M3尼龙垫圈2个;3-pin公-公接头2个;220Q电阻2个;10kQ电阻2个。工作原理:机器人前进,在前进过程中,如果碰到右障碍,机器人会先后退,再左转90°;如果碰到左障碍,机器人会先后退,再右转90°;如果两根胡须都碰到障碍,机器人会先后退,再左转180°。程序编制:机器人向前走的过程中,碰到障碍物,机器人用它的一根或者两根胡须探测障碍物,一旦胡须探测到障碍物,就调用导航子函数使机器人倒退或旋转,然后再重新向前行走,直到遇到另一个障碍物。#include<BoeBot.h>#include<uart.h>intP1_4state(void){return(P1&0x10)?1:0;}intP1_7state(void){return(P2&0x80)?1:0;}voidForward(void){P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);}voidLeft_Turn(void){inti;for(i=1;i<=19;i++){P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);}}voidRight_Turn(void){inti;for(i=1;i<=19;i++){P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);}}voidBackward(void){inti;for(i=1;i<=38;i++){P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);}}intmain(void){intcounter=1;intold2=1;intold3=0;uart_Init();printf("ProgramRunning!\n");while(1){if(P1_4state()!=P1_7state()){if((old2!=P1_4state())&&(old3!=P1_7state())){counter=counter+1;old2=P1_4state();old3=P1_7state();if(counter>4){counter=1;Backward。;//向后Left_Turn();//向左Left_Turn();//向左}}elsecounter=1;}if((P1_4state()==0)&&(P1_7state()==0))//两胡须同时碰到{Backward();//向后Left_Turn();//向左Left_Turn();//向左}elseif(P1_4state()==0)//右胡须碰到{Backward。;//向后Left_Turn();//向左}elseif(P1_7state()==0)//左胡须碰到{Backward。;//向后Right_Turn();//向右}else//胡须没有碰到Forward。;//向前}}思考题:逃离死区当机器人进入墙脚是如何动作?假设左胡须触墙,于是它右转。当小车再向前行走,右胡须触墙,于是左转。然后它前进又会碰到左墙,再次碰到右墙,这样小车会进入死循环。小车能在无人干预的情况下走出困境吗?在这种情况下,如果小车有记忆的能力,能够记住前面几次探测的情况,那么就可以判断是否进入死角了。可以修改RoamingWithWhiskers.c来解决这个问题。技巧是记下胡须交替触动的总次数。技巧重要的一点是程序必须记住每个胡须在上次触动时处于什么状态。它必须和当前触动时的状态对比。如果状态相反,就在总数上加一。如果这个总数超过了程序中预先给定的阀值,那么就该做一个U型转弯,并且把胡须交替计数器复位。ifondition1){cmmandsforcondition1:ifondition2){commandsforbothconditionandcondition:}else{commandsforcondition1butnotcondition2:}else{Commandsfornotcondition1:}If(p1_5state()!=p2_3state()){If((old2!=p1_5state())&&(old3!=p3_3state())){counter=counter+1:old2=p1_5state:ols3=p2_3state:if(counter>4){Counter=1:Backward。;//向后Left_Turn();//向左Left_Turn();//向左}}elseCounter=1}实验心得:我们小组一共是三个人,所以每个人的任务比较多。因为我对编程不熟悉,所以这个任务交给了其余两个人,我只负责机器人的组装和使用,其余两人负责编程和调试。虽然我们是按照书上的步骤来的,但实际中还是有很多问题,最明显的就是程序的调试,经常出现没有预想到的问题,仔细检查后才发现是编程时的不细心导致的。同时机器人也可能出现一些硬件问题,这个需要自己仔细检查。通过这次试验,让我了解到了智能机器人在现代社会中的意

温馨提示

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

评论

0/150

提交评论