【ch06】选择结构程序设计-机器人红外导航_第1页
【ch06】选择结构程序设计-机器人红外导航_第2页
【ch06】选择结构程序设计-机器人红外导航_第3页
【ch06】选择结构程序设计-机器人红外导航_第4页
【ch06】选择结构程序设计-机器人红外导航_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

机器人程序设计(C语言)新工科建设之路·机器人技术与应用系列选择结构程序设计一机器人红外导航第六章使用红外发射器和接收器探测道路红外前灯在机器人上建立的红外探测物体系统在许多方面就像汽车的前灯系统。使用红外发射器和接收器探测道路红外二极管发射红外光,如果机器人前面有障碍物,红外光从物体反射回来,相当于机器人眼睛的红外检测(接收)器,检测到反射回的红外光,并发出信号来表明检测到从物体反射回红外光。机器人的大脑——单片机AT89S52基于该传感器的输入控制伺服电机。搭建并测试IR发射和探测器对01本任务将搭建并测试红外线发射和检测器对。本章需要用到的新部件如图6-2所示。搭建并测试IR发射和探测器对搭建并测试IR发射和探测器对元器件清单(1)红外检测器,2个。(2)IRLED(带套筒),2个。(3)470Ω电阻,2个。(4)连接线,若干。搭建并测试IR发射和探测器对搭建红外前灯电路板的每个角安装一个IR组(IRLED和检测器)。(1)断开主板和伺服系统的电源。(2)在教学板上建立如图6-3所示的电路,可参考实物连接图,如图6-4所示。搭建并测试IR发射和探测器对搭建红外前灯搭建并测试IR发射和探测器对搭建红外前灯测试红外检测器让每个IRLED探测器组工作的关键是发送1ms频率为38.5kHz的红外信号,然后立刻将IR探测器的输出存储到一个变量中。例如,它发送38.5kHz信号给连接到P1_3的IR发射器,然后用整型变量irDetectLeft存储连接到P1_2的IR探测器的输出上。搭建并测试IR发射和探测器对测试红外检测器for(counter=0;counter<38;counter++)P1_3=1;delay_nus(13);P1_3=0;delay_nus(13);irDetectLeft=P1_2state();搭建并测试IR发射和探测器对搭建并测试IR发射和探测器对例程:TestLeftlrPair.c(1)打开教学板的电源。(2)输入、保存并运行程序TestLeftIrPair.c。(3)保持机器人与通信电缆的连接,因为需用调试终端来测试IR组。(4)放一个物体,如手或一张纸,距离左侧IR组2~3cm处,见图6-1。搭建并测试IR发射和探测器对例程:TestLeftlrPair.c(5)验证:放一个物体在IR组前时,调试终端是否会显示“irDetecfLeft=0”?将物体移开时,它是否显示“irDetectLeft=1”(如图6-5所示)?(6)如果调试终端显示的是预料的值,没发现物体,则显示1;发现物体,则显示0,转到例程后的“该你了”部分。(7)如果调试终端显示的不是预料的值,试试按排错部分的步骤进行排错。搭建并测试IR发射和探测器对排错①如果调试终端显示的不是预料的值,检查电路和输入的程序。②如果总是得到0,甚至当没有物体在机器人前面时也是0,可能是附近的物体反射了红外光。③如果机器人前面没有物体时,绝大多数时间读数是1,但偶尔是0,这可能是附近的荧光灯的干扰。关掉附近的荧光灯,重新测试。搭建并测试IR发射和探测器对排错搭建并测试IR发射和探测器对函数延时的不精确性如果把KeiluVision4IDE安装在C盘,将在C:\ProgramFiles\Keil\C51\INC目录下发现头文件“INTRINS.H”。这个头文件中声明了一个空函数_nop_(void),它能准确延时一个机器周期,即约1μs。探测和避开障碍物02探测和避开障碍物有关IR检测器的趣事是它们的输出与触须的输出非常相像。没有检测到物体时,输出为高电平;检测到物体时,输出为低电平。本任务是更改程序RoamingWithWhiskers.c,使它适合IR检测器。探测和避开障碍物进行IR探测时要使用AT89S52的4个引脚:P1_2、P1_3、P3_5和P3_6。探测和避开障碍物宏定义宏定义的一般形式为:#define标识符字符串探测和避开障碍物改变触须程序,使其适合IR检测和躲避下一个例程与RoamingWithWhiskers.c相似:更改旁边的名称和描述,加入两个变量来存储IR检测器的状态。intirDetectLeftintirDetectRight探测和避开障碍物改变触须程序,使其适合IR检测和躲避下一个例程与RoamingWithWhiskers.c相似:更改旁边的名称和描述,加入两个变量来存储IR检测器的状态。intirDetectLeftintirDetectRight探测和避开障碍物改变触须程序,使其适合IR检测和躲避设计一个函数voidIRLaunch(unsignedcharIR)来进行红外发射。voidIRLaunch(unsignedcharIR)intcounter;if(IR=='L')//左边发射for(counter=0;counter<38;counter++)LeftLaunch=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_0;LeftLaunch=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();nop_(0);_nop_();_nop_();_nop_(0;_nop_();_nop_();探测和避开障碍物改变触须程序,使其适合IR检测和躲避if(IR=='R')//右边发射for(counter=0;counter<38;counter++)RightLaunch=1;_nop_();_nop_();_nop_();_nop_();nop_();_nop_();nop_();nop_();nop_();nop_();_nop_();_nop_();RightLaunch=0;_nop_(;_nop_();_nop_();_nop_();_nop_();_nop_(;nop_();_nop_();nop_();_nop_();_nop_();_nop_();探测和避开障碍物改变触须程序,使其适合IR检测和躲避例程:RoamingWithlr.c(1)打开教学板的电源。(2)保存并运行程序。(3)机器人的运动与运行程序RoamingWithWhiskers.c时相比,是不是除了不需接触,其他都非常像。高性能的IR导航03高性能的IR导航在每个脉冲之间采样,以避免碰撞探测障碍物很重要的一点是在机器人撞到它之前给机器人留有绕开它的空间。如果前方有障碍物,机器人会使用脉冲命令避开,然后探测,如果物体还在,再使用另一个脉冲来避开它。机器人能持续使用电机驱动脉冲和探测,直到它绕开障碍物,它会继续发送向前行走的脉冲。高性能的IR导航在每个脉冲之间采样,以避免碰撞例程:FastIrRoaming.c输入、保存并运行程序FastIrRoaming.c。高性能的IR导航在每个脉冲之间采样,以避免碰撞高性能的IR导航在每个脉冲之间采样,以避免碰撞高性能的IR导航在每个脉冲之间采样,以避免碰撞高性能的IR导航在每个脉冲之间采样,以避免碰撞高性能的IR导航FastIrRoaming.c是如何工作的这个程序使用稍微不同的方法来使用驱动脉冲。除了两个存储IR检测器输出的状态,它还使用两个整型变量来设置发送的脉冲持续时间。intpulseLeft,pulseRight;intirDetectLeft,irDetectRight;高性能的IR导航do...while语句在C语言中,直到型循环控制语句是“do...while”,它的一般形式为:do语句while(表达式);俯视的探测器04俯视的探测器到目前为止,当机器人探测到前面有障碍物时,主要使机器人做避让动作。也有一些场合,当没有检测到障碍物时,机器人也必须采取避让动作。(1)断开主板和伺服系统的电源。(2)使R组向外向下,如图6-6所示。俯视的探测器俯视的探测器(1)卷装黑色聚氯乙烯绝缘带,19mm宽。(2)一张白色招贴板,56cm×71cm。推荐材料俯视的探测器(1)如图6-7所示,建立一块有绝缘带边界的场地。使用至少3条绝缘带,绝缘带边之间连接紧密,没有白色露出来。(2)用1k2(或2kQ)电阻代替图6-3中的R3(R4),这样就减少了通过IRLED的电流,从而降低了发射功率,使机器人在本任务中看得近一些。用绝缘带模拟桌子的边沿俯视的探测器用绝缘带模拟桌子的边沿俯视的探测器边沿探测编程编程使机器人在桌面行走而不会走到桌边,只需修改程序FastfrRoaming.c中的if..else语句。主要的修改是,当iDetectLeft和irDetectRight的值都是0时,表明在桌子表面检测到物体(桌面),机器人向前行走。俯视的探测器边沿探测编程例程:AvoidTableEdge.c(1)打开程序FastIrRoaming.c并另存为AvoidTableEdge.c。(2)修改它使其与下面例程匹配。(3)打开主板与电机的电源。(4)在带绝缘带边框的场地上测试程序。俯视的探测器AvoidTableEdge.c是如何工作的在

温馨提示

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

评论

0/150

提交评论