【ch05】选择结构程序设计机器人触须导航_第1页
【ch05】选择结构程序设计机器人触须导航_第2页
【ch05】选择结构程序设计机器人触须导航_第3页
【ch05】选择结构程序设计机器人触须导航_第4页
【ch05】选择结构程序设计机器人触须导航_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

机器人程序设计(C语言)新工科建设之路·机器人技术与应用系列选择结构程序设计机器人触须导航第五章安装并测试

机器人触须01安装并测试机器人触须编程让机器人通过触须导航前,必须先安装并测试触须。安装机器人触须所需的硬件元器件如图5-1所示,包括:①金属丝(触须),2根。②平头M3×5盘头螺钉,2个。③13mm铜螺柱,2个。④M3尼龙垫圈,2个。⑤3-pin公-公接头,2个。⑥220Ω电阻,2个。⑦10kQ电阻,2个。安装并测试机器人触须安装并测试机器人触须安装触须(1)拆掉连接主板到前支架的两颗螺钉。(2)参考图5-2,进行下面的操作。(3)23mm铜螺柱穿过主板上的圆孔,拧进主板下面的螺柱中,拧紧。(4)两个螺钉依次穿过M3尼龙垫圈拧进铜螺柱中。(5)把须状金属丝的其中一个勾在尼龙垫圈之上,另一个勾在尼龙垫圈之下,调整它们的位置,使它们横向交叉但不接触。(6)拧紧螺钉到铜螺柱上。(7)参考图5-3,搭建触须电路。安装并测试机器人触须安装触须安装并测试机器人触须测试触须观察图5-3所示的触须电路示意图,显然每条触须都是一个机械式的、接地(GND)常开的开关。触须接地是因为教学板外围的镀金孔都连接到GND。铜螺柱和螺钉给触须提供电气连接。安装并测试机器人触须测试触须上拉电阻上拉电阻就是与电源相连并起到拉高电平作用的电阻,还起到限流的作用。图5-3中的10kΩ电阻即为上拉电阻。其实,第3章单灯闪烁控制任务中就用到了上拉电阻,因为AT89S52的I/O接口驱动能力不够强,不能使LED点亮。安装并测试机器人触须位操作运算符位操作运算符用于对字节或字中的位(bit)进行测试、置位或移位处理,如表5-1所示。安装并测试机器人触须if语句if语句根据给定的条件进行判断,以决定执行某个分支程序段。if语句的基本形式为:if(表达式)语句1;else语句2;安装并测试机器人触须操作符?:C语言提供了一个可以代替某些“if-else”语句的简便易用的操作符“?:”。该操作符是三元的,其一般形式为:表达式1?表达式2:表达式3安装并测试机器人触须操作符?:在搞清楚整个程序的执行原理后,按照下面的步骤实际执行程序,对触须进行测试。(1)接通教学板和伺服电机的电源。(2)输入、保存并运行程序TestWhiskers.c。(3)这个例程要用到调试终端,所以当程序运行时要确保串口电缆已连接好。(4)检查图5-3所示电路,弄清楚哪条触须是左触须,哪条是右触须。(5)注意调试终端的显示值,此时显示为“右边触须的状态:1左边触须的状态:1”,如图5-6所示。安装并测试机器人触须操作符?:(6)按下右触须,使其接触到3-pin转接头上,显示为“右边触须的状态:0左边触须的状态:1”,如图5-7所示。(7)把左触须接到3-pin转接头上,显示为“右边触须的状态:1左边触须的状态:0”,如图5-8所示。(8)同时把两个触须接到各自的3-pin转接头上,显示为“右边触须的状态:0左边触须的状态:0”,如图5-9所示。(9)如果两个触须都通过测试,则继续下面的内容。否则检查程序或电路中存在的错误。安装并测试机器人触须操作符?:安装并测试机器人触须操作符?:通过触须导航02通过触须导航编程使机器人基于触须导航为了实现这些功能,需要编程让机器人来做出选择,此时要用到if语句的标准形式,即if-else-if形式,它可以进行多分支选择,其一般形式为:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;elseif(表达式n-1)语句n-1;语句n;通过触须导航关系与逻辑运算符关系与逻辑运算符概念如表5-2所示,关键是True(真)和Flase(假)。C语言中,非0为True;0为Flase。使用关系与逻辑运算符的表达式对Flase和True分别返回值0和1。通过触须导航关系与逻辑运算符通过触须导航关系与逻辑运算符赋值运算符“=”与关系运算符“==”赋值运算符“=”用来给变量赋值;关系运算符“==”判断两个值是否是相等的关系。逻辑与运算符“&&”相当于BASIC语言中的AND运算符。逻辑与的运算规则如下:/若A、B为真,则A&&B为真通过触须导航关系与逻辑运算符例程:RoamingWithWhiskers.c(1)打开主板和伺服电机的电源。(2)输入、保存并运行程序RoamingWithWhiskers.c。(3)尝试让机器人行走,当在其路线上遇到障碍物时,它将后退、旋转并转向另一个方向。#include<BoeBot.h>#include<uart.h>通过触须导航触须导航机器人怎样行走主程序中的语句首先检查触须的状态。如果两个触须都触动了,即PI_4state()和P2_3state()都为0,那么调用Backward(),紧接着调用Left_Turn()两次;如果只是右触须被触动,即只有P2_3state()=0,那么调用Backward(),再调用Left_Turn();如果左触须被触动,即只有P1_4state()=0,那么调用Backward(),再调用Right_Turn();如果两个触须都没有触动,那么在else中调用Forward()语句。机器人进入死区后的人工智能决策03机器人进入死区后的人工智能决策编程逃离墙角死区修改RoamingWithWhiskers.c,让机器人碰到上述问题时逃离死区,技巧是记下触须交替触动的总次数。其关键是程序必须记住每个触须的前一次触动状态,并与当前触动状态对比。如果状态相反,就在交替总数上加1。机器人进入死区后的人工智能决策编程逃离墙角死区条件成立(条件为真),那么检查包含于这个条件之内的另一个条件。下面是用伪代码说明条件嵌套语句的用法。if(condition1)commandsforcondition1if(condition2)机器人进入死区后的人工智能决策编程逃离墙角死区commandsforbothcondition2andconditionlelsecommandsforconditionlbutnotcondition2elsecommandsfornotcondition1机器人进入死区后的人工智能决策编程逃离墙角死区例程:EscapingCorners.c本例程使机器人在第4次或第5次交替探测到墙角后,完成一个U形拐弯,哪一个触须先被触动。(1)输入、保存并运行程序EscapingCorners.c。(2)在机器人行走时,轮流触动它的触须,测试该程序。机器人进入死区后的人工智能决策编程逃离墙角死区EscapingCorners.c是如何工作的由于该程序是经RoamingWithWhiskers.c修改而来的,下面只讨论与探测和逃离墙角相关的新特征。intcounter=1;intold2=1;intold3=0;机器人进入死区后的人工智能决策编程逃离墙角死区三个变量用于探测墙角。int型变量counter用来存储交替探测的次数。程序中设定的交替探测的最大值为4,int型变量old2、old3存储触须旧的状态值。机器人进入死区后的人工智能决策编程逃离墙角死区首先要检查的是,是否有且只有一根触须被触动。简单的方法就是询问“是否P1_4state()不等于P2_3state()",判断语句如下:

if(P1_4state()!=P2_3state())机器人进入死区后的人工智能决策编程逃离墙角死区如果发现触须连续4次被触动,那么计数值置1,并且进行U形拐弯。if(counter>4)counter=1;Backward();LeftTurn();Left_Turn();机器人行进过程中的碰撞保护程序04机器人行进过程中的碰撞保护程序continue语句continue的一般形式为:continue;其作用是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。机器人行进过程中的碰撞保护程序continue语句利用continue语句编写的机器人运动函数如下:voidMoveWithProtect(intcounter,intPC1_pulseWide,intPC0_pulseWide)inti=0;while(i<counter)if(P1_4state()==0)||(P2_3state()==0))continue;P1_1=1;delay_nus(PCl_pulseWide);P1_1=0;P1_0=1;delay_nus(PCO_pulseWide);P1_0=0;delay_nms(20);i++;}机器人行进过程中的碰撞保护程序工程素质和技能归纳本章涉及的主要技能①接触型传感器作为输入反馈与C51单片机的编程实现。②C51单片机并行I/O口的特殊功能寄存器的概念和使用。③C语言条件判断语句的使用。④C语言各种运算符的使用,包括位运算符、关系运算符、逻辑运算符及操作符?等。机器人行进过程中的碰撞保护程序工程素质和技能归纳本章涉及的主要技能⑤机器人的触觉导航策略的实现。⑥条件判断语句的嵌套与机器人的智能决策等。⑦循环内continue语句的使用。机器人行进过程中的碰撞保护程序工程素质和技能归纳在一个逻辑表达式中如果有多个逻辑运算符,甚至有关系运算符和算术运算时,则优先次序如下:i.逻辑非的优先级最高,逻辑与次之,逻辑或最低。ii.逻辑与和逻辑或低于关系运算符,逻辑非高于算术运算符,即按照优先级从高到低的顺序是逻辑非高于算术运算符,算术运算符高于关系运算符,关系运算符高于逻辑与和

温馨提示

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

评论

0/150

提交评论