迷宫搜索.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
迷宫搜索.doc

第六章 迷宫搜索 为了找到火焰,我们要让机器人做迷宫搜索,不管使用什么策略,左手法则和右手法则都是迷宫搜索的基础,我们至少要实现其中一种行走方法。在这里作者向大家推荐的方案是机器人左右手法则都会走,这样机器人灭火和回家的效率就比较高,在这里中间朝前的红外传感器是左右手法则共用的传感器。本章我们只是简单介绍一下迷宫算法,关于迷宫法则的深入讨论,作者把它放在第九章再作论述。 6.1 左手法则 所谓左手法则就是机器人把左边的障碍物看成是参照物,机器人贴迷宫左侧的墙壁实现行走。要实现左手法则需要用到红外避障传感器,最常见的是用两个或三个传感器的实现方法,两个传感器来实现左手法则调试最简单。三个传感器的实现方法调试比较难,三个以上传感器的用法行走速度不一定就快,传感器之间相互干扰很难解决,在这里我们不作介绍。一个传感器的实现方法稳定性低,实战中很少有人使用。 6.1.1 三个传感器实现左手法则的算法 三个传感器实现左手法则可以使用两个传感器类似的方法,就是“看到墙壁,往外走,看不到墙壁往里走。”在这里我们给出比较典型的算法,下面的算法调试比较难,调试得不好,机器人容易做出自向矛盾的微动作,表现为停步不前,或者在某处发抖。在这里提供的算法原理是:前面看到右转,左45度看到右转,左边看到前进,什么也没有看到转左弧。 图6-1 图6-1是三个传感器走左手常见的安装方法,根据调试经验,左传感器也向前偏转一定角度,这样设计,机器人走迷宫的速度会快一些。前红外传感器观察范围20cm左右 ,左传感器观察范围20cm左右,左45度传感器观察范围10cm左右,红外的观察范围、角度和下面面的马达参数一样,都需要调节以适应自己的机器人。假设纳英特机器人前面传感器接13口,左45度接12口,左红外接11口。具体参考代码如下: Void migong_left() { If (digital(13)==1)//前面看到,原地右转 { motor(0,40); Motor(1,-70); } elseIf (digital(12)==1)//左上角45度看到,原地右转 { motor(0,40); Motor(1,-70); } elseIf (digital(11)==1)//左边看到,前进 { motor(0,60); Motor(1,60); ) Else//什么也没有看到,转左弧 { motor(0,-80); Motor(1,80); motor(0, 80); Motor(1,80); } } 6.1.2 两个传感器实现左手法则的算法 不管你使用那个公司的产品,左手法则都可以用两个传感器实现,如图6-2是两个传感器走左手的常见安装方法。一个传感器在机器人前面中间位置,另一个装在机器人中间位置,朝左前45度偏转,观察距离10-15厘米。左手法则的基本原理是看到墙壁,往外走,看不到墙壁往里走。假设纳英特机器人前面传感器接13口,左45度接11口。则具体参考代码如下: 图6-2 Void migong_left() { If (digital(13)==1)//前面有墙原地右转。 { Motor(0,40);// //右转时间长,前面有墙壁不前进,否则要撞墙。 Motor(1,-100); Sleep(0.05); } Else If (digital(11)==1)//左边有墙原地右转并前进。 { Motor(0,40);//右转时间长。 Motor(1,-100); Sleep(0.05); Motor(0,70);//前进无延时,否则要撞墙。 Motor(1,70); } Else//什么也看不见,划左弧。 { Motor(0,-80); Motor(1, 80); Motor(0,80); Motor(1,80); } 上面我们给出了两个传感器实现左手法则的一种算法,给出这种算法是为了说明两个传感器走左手的原理,在第二章我们论述了把迷宫行走和地面检测结合起来的算法,为无火不进房间的实现提供了基础。 3 一个传感器实现左手法则的算法 一个传感器走左手法则的算法本身意义不大,我们在这里提供算法只想说明一个问题,就算是到了很困难的程度,我们也要有解决问题的信心。实现的原理和2个传感器一样,这里的算法我们把一个传感器当做两个来用,传感器安装在机器人前左45度角,接12号口, 红外的观察距离是10-15厘米左右。 图6-3 int m=0; void main()//主程序 { while(1) { migong_left(); } } void migong_left()//左手法则 { if (digital(12)==1)//如果传感器看到墙壁

您可能关注的文档

文档评论(0)

czy2014 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档