当前位置: 首页 > news >正文

viple模拟器使用(四):unity模拟器中实现沿右墙迷宫算法

沿右墙迷宫算法

引导

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

目的

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

原理

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

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

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

总结

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

根据原理进行程序编写

主机

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

初始化

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

方式1:

方式2:

右方距离传感器

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

前方距离传感器

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

整体逻辑

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

测试

unity模拟器沿右墙迷宫算法

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

http://www.lryc.cn/news/249575.html

相关文章:

  • 面试送分题!“商品分类浏览”如何测试?
  • 在浏览器中直接打开PDF
  • docker集群的详解以及超详细搭建
  • 4进制思路。。。。。。。。
  • 解决ansible批量加入新IP涉及known_hosts报错的问题
  • vuepress----1、快速开始
  • C++ -- 每日选择题 -- Day2
  • 软件测评中心▏软件集成测试和功能测试之间的区别和联系简析
  • Selenium/webdriver介绍以及工作原理
  • HTML5+CSS3+JS小实例:九宫格图片鼠标移入移出方向感知特效
  • 在Rust中编写自动化测试
  • 羊大师提问,为什么吃得越咸越容易出现健康问题?
  • linux ld 链接器学习笔记
  • 栈模拟先序后序中序遍历(非递归遍历)
  • linux 内核软中断介绍
  • 软考:2024年软考高级:软件工程
  • Kubernetes(K8s)_15_CNI
  • python 生成器的作用
  • 第十五届蓝桥杯(Web 应用开发)模拟赛 2 期-大学组(详细分析解答)
  • 图解系列--HTTPS,认证
  • element plus中表格的合计属性和例子
  • 计网Lesson1笔记
  • 指针数组以及利用函数指针来实现简易计算器及typedef关键字(指针终篇)
  • josef JZ-7Y-33静态中间继电器 电压DC220V 板前接线
  • Java第二十章 ——多线程
  • 【超强笔记软件】Obsidian实现免费无限流量无套路云同步
  • 【Linux小项目】实现自己的bash
  • 客户案例:EDLP助力金融行业打造高效数据防泄露体系
  • 【JavaFX漏扫开发基础】stage窗口/模式/模态
  • MySQL进阶知识:锁