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

news2024/11/23 12:07:21

沿右墙迷宫算法

引导

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

目的

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

原理

默认直行(优先级次之,为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.coloradmin.cn/o/1261116.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++学习之路(七)C++ 实现简单的Qt界面(消息弹框、按钮点击事件监听)- 示例代码拆分讲解

这个示例创建了一个主窗口,其中包含两个按钮。第一个按钮点击时会显示一个简单的消息框,第二个按钮点击时会执行一个特定的操作(在这个例子中,仅打印一条调试信息)。 功能描述: 创建窗口和布局:…

RT-DETR改进 | 2023小目标改进 | InnerEIoU、InnerSIoU、InnerWIoU、InnerDIoU等二十余种损失函数

论文地址:官方Inner-IoU论文地址点击即可跳转 官方代码地址:官方代码地址-官方只放出了两种结合方式CIoU、SIoU 本位改进地址: 文末提供完整代码块-包括InnerEIoU、InnerCIoU、InnerDIoU等七种结合方式和其AlphaIoU变种结合起来可以达到二十…

【大家的项目】Tran 简洁, 快速, 划词翻译

技术栈: rusttaurisolidjstypescript 欢迎萌新参与练手, 也欢迎大手子来魔改, ⭐star 当然是多多益善啦, ヾ(≧▽≦*)o Tran 简洁, 快速, 划词翻译 Keep it simple,stupid. 功能 划词翻译划过固定 划过关闭划过复制 快捷键: Alt X 构建 To \ FormZHJAZH…

中间件安全:Weblogic 漏洞.(使用工具可以利用多种类型漏洞)

中间件安全:Weblogic 漏洞.(使用工具可以利用多种类型漏洞) WebLogic 是美国 Oracle 公司出品的一个 application server,确切的说是一个基于 JAVA EE 架构的中间件,WebLogic 是用于开发、集成、部署和管理大型分布式…

【JAVA学习笔记】72 - 满汉楼 - 餐饮管理系统

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter26 一、需求说明 满汉楼项目功能多,界面复杂,涉及到复杂的awt和swing技术和事件编程,做如下调整: 1.去掉界面和事件处理(工作中使用很少),使…

OpenCvSharp从入门到实践-(03)像素

目录 像素 1、确定像素位置 2、获取像素的BGR值 3、修改像素的BGR值 像素 图像数字化是指用数字表示图像,每一幅数字图像都是有M行N列的像素组成的,其中每一个像素都存储一个像素值。计算机通常会把像素值处理为256个灰度级别,这256个灰…

小航助学题库蓝桥杯题库stem选拔赛(23年8月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSD…

Maven生命周期

Maven生命周期 通过IDEA工具的辅助,能很轻易看见Maven的九种生命周期命令,如下: 双击其中任何一个,都会执行相应的Maven构建动作,为啥IDEA能实现这个功能呢?道理很简单,因为IDEA封装了Maven提供…

C语言第三十五弹---打印九九乘法表

C语言打印九九乘法表 思路&#xff1a;观察每一行可以看出乘号右边的一行值都是相同的&#xff0c;而乘号左边不断变化&#xff0c;所以使用嵌套循环&#xff0c;控制好 乘号左右值变化的条件即可。 #include <stdio.h>int main() {for (int i 1; i < 9; i){for (in…

浏览器如何读取本地Excel表格

浏览器可以读取Excel表格数据吗&#xff1f; 答案是否定的&#xff0c;目前主流浏览器都无法打开本地Excel文档。 答案也是肯定的&#xff0c;这就来看看具体实现方法&#xff01;&#xff01;&#xff01; 首先准备一个Excel表格文件 保存在D:\\temp\测试表.xls…

每天五分钟计算机视觉:LeNet是最早用于数字识别的卷积神经网络

LeNet 假设你有一张 32321 的图片,然后使用 6 个 55的过滤器,步幅为 1,padding 为 0,输出结果为 28286。图像尺寸从 3232 缩小到 2828。 然后进行池化操作,使用平均池化,过滤器的宽度为 2,步幅为 2,图像的尺寸,高度和宽度都缩小了 2 倍,输出结果是一个14146 的图像。…

邮件违规拦截利用了什么技术丨如何拦截违规邮件

当今世界信息化速度加快&#xff0c;但随之而来的各种网络风险也增加。其中&#xff0c;对于邮件违规信息的拦截愈加引得人们关注。 我们先来看下邮件违规拦截的好处&#xff1a; 1、提高邮件发送效率&#xff1a;如果邮件发送到错误的收件人或被错误地拦截&#xff0c;会导致…

python计算概率分布

目录 1、泊松分布 2、卡方分布 3、正态分布 4、t分布 5、F分布 1、泊松分布 泊松分布是一种离散概率分布&#xff0c;描述了在固定时间或空间范围内&#xff0c;某个事件发生的次数的概率分布。该分布以法国数学家西蒙德尼泊松的名字命名&#xff0c;他在19世纪早期对这种…

北京劲松HPV诊疗中心专家解读:感染HPV18危害大吗?

小李&#xff0c;一个普通的中国女性&#xff0c;今年32岁&#xff0c;平日里忙碌于工作与家庭之间&#xff0c;生活充实而有序。然而&#xff0c;一年前的一次健康检查&#xff0c;却让她的生活陷入了一场无声的风暴。 去年&#xff0c;小李在公司的年度体检中&#xff0c;意…

AI - Crowd Simulation(集群模拟)

类似鱼群&#xff0c;鸟群这种群体运动模拟。 是Microscopic Models 微观模型&#xff0c;定义每一个个体的行为&#xff0c;然后合在一起。 主要是根据一定范围内族群其他对象的运动状态决定自己的运动状态 Cohesion 保证个体不会脱离群体 求物体一定半径范围内的其他临近物…

API协作管理工具:Apipost

在当今快速发展的数字化时代&#xff0c;API已成为企业与开发者实现数据互通、应用集成的重要桥梁。然而&#xff0c;随着API数量的不断增加&#xff0c;API开发、调试、测试、文档等工作也变得越来越复杂。为了解决这一痛点&#xff0c;一款名为Apipost的API协同研发工具应运而…

C_6微机原理

一、单项选择题&#xff08;本大题共 15小题&#xff0c;每小题3分&#xff0c;共45分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案&#xff0c;请将选定的答案填涂在答题纸的相应位置上。 n1 位有符号数 的补码表示范围为&#xff08;&#xff09; A. -2n&l…

【libGDX】加载G3DJ模型

1 前言 libGDX 提供了自己的 3D 格式模型文件&#xff0c;称为 G3D&#xff0c;包含 g3dj&#xff08;Json 格式&#xff09;和 g3db&#xff08;Binary 格式&#xff09;文件&#xff0c;官方介绍见 → importing-blender-models-in-libgdx。 对于 fbx 文件&#xff0c;libGDX…

pinia从入门到使用

pinia: 比vuex更适合vue3的状态管理工具&#xff0c;只保留了vuex 原有的 state, getters&#xff0c;actions 作用等同于 data computed methods&#xff0c;可以有多个 state 1.安装创建导入 安装&#xff1a;npm install pinia 或 yarn add pinia 创建stores/index.js inde…

0基础学习VR全景平台篇第123篇:VR视频航拍补天 - PR软件教程

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 嗨&#xff0c;大家好&#xff0c;今天我们来介绍【航拍VR视频补天】。之前已经教给了大家如何处理航拍图片的补天&#xff0c;肯定有很多小伙伴也在好奇&#xff0c;航拍的VR视频…