沿右墙迷宫算法

引导

线控模拟可以使得通过用户手动操作实现机器人模拟环境下在迷宫中行走(即:运动),算法可以使得机器人按照一定的策略自动行走,沿右墙迷宫算法就是其中的一种策略

目的

运行程序后,使得机器人自动根据算法原理走出迷宫(或者运行程序后,通过按键事件,让机器人自动走出迷宫

原理

默认直行(优先级次之,为2):右侧无路情况下,前方测量大于设定值,说明前方有路

右侧有路则右转(优先级最高,为1):只要检测右侧有路,即右方测量大于设定值,则右转

前方无路则左转(优先级最低,为3):右侧无路且前方无路的情况下,只能往左转。

总结

使用两个传感器右侧距离传感器、前方距离传感器对应端口号分别是1、2,分别用于测量距离。(注意:Web 2D模拟器实现沿右墙迷宫算法右侧使用的是距离传感器,前方使用的是触觉传感器

根据原理进行程序编写

主机

由于使用的是unity模拟器,那么,主机的配置,和线控模拟中的配置一致。

初始化

有两种方案:一种是运行程序后,直接运行;另一种是运行程序后,按键再运行。(个人推荐后者,原因unity模拟器中,需要运行模拟器viple存在界面切换,第二种需要用户按键后才开始出现运行效果,即,用户可以看到完整的运行,即使算法缺陷,都更容易去观察现象,再进行DeBug

方式1:

方式2:

右方距离传感器

右侧距离传感器测量大于设定的值,则表示右侧有路,然后右转。小技巧:右转完成后,先直行一段时间,避免右转完成后,立即检测右方是否有路,万一满足条件,就会出现来回行走的问题

前方距离传感器

前方距离传感器测量大于设定值,则表示前方有路,此时保持直行即可,由于默认就是直行,所以,无需写程序。只需要判断测量值小于设定值,此时前方无路,左转即可。左转完成后,保持直行。

整体逻辑

设置isBusy变量用来表示是否在转弯,在转弯,值为true没有在转弯,值为false,所以需要进行标记,由于布尔类型变量默认初始化的值是false,所以,无需写初始化程序都可以(如果您是初学者,可以一个数据活动和一个变量活动来进行初始化)。

测试

如果按照逻辑写出来的程序出现按键后,机器人连续右转,造成了右转转圈的情况,说明右侧传感器测量值一直都是大于设定值,所有造成了连续右转,为了避免这种情况,你就要破坏右转成立的条件,首先,传感器只能读取数据,不能修改数据,所以,只能修改设定值,此时,测量值大于设定值造成了连续右转,测量值不能改,那就只能改设定值,需要思考设置值是大了还是小了,当测量值为20,设定值为10,就满足右转条件,测量值不能更改,设定值要如何改,才能让条件不成立?显然就是设定值小了,需要改大一些,假如改为30,那么,20>30不成立,就实现了破坏右转条件,避免了连续右转问题。

原文地址:https://blog.csdn.net/songxiaolingbaobao/article/details/134478719

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_34200.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注