viple模拟器使用(二):Web 2D模拟器中实现沿右墙迷宫算法

news2024/11/24 20:53:15

沿右墙迷宫算法原理

  1. 默认直行;
  2. 右侧有路,则右转;
  3. 前方无路,则左转。

使用了2个传感器,分别是:机器人右侧的距离传感器 、前方的触觉传感器。

按照逻辑,程序中需要左转(Left90)、右转(Right90)模块,其次,默认直行(前进),需要初始化(Init)、左转或者右转后需要继续直行(ResetState),由于前方使用的触觉传感器,此时,机器人和障碍物已经撞上了,硬转弯的话,效果不好,可以选择先退一段距离(后退),再进行左转。经过分析,粗体部分需要设置为自定义活动进行封装。

前进(Forward)

能使得机器人前进,左右轮的功率值相等,且为正数即可。如果不相等,则会出现转弯,也就是本来应该走直线,效果却是走不直。

后退(Backward)

与前进的原理类似,能使得机器人前进,左右轮的功率值相等,且为负数即可。如果不相等,则会出现后退转弯现象,即:无法直行倒退。

注意:

  • 驱动器的左右轮端口号分别是3和4。前行使用的端口是哪两个,后面无论是后退还是左右转弯,都要设置为一致。
  • 后退应该将左右轮的驱动功率值设置为-0.5。也可以为其他数,为了和前进速度一致,退的时候,也选择0.5。
  • 退的时候,需要设置一个定时器,时长不宜过大,这是因为右侧无路且前方无路时,想要做左转操作,但是,此时使用的是触觉传感器,碰上了再强制左转,是转不过去的,所以,需要先后退一点,再左转。所以,退的时候,要给一个时间,设置太大,则会退很长一段距离,设置过小,又会转不过去,所以,要观察程序出现的现象,适当调整。

左转(Left90)

要使得机器人左转,则需要设置左轮速度慢,右轮速度快,为了能转到90度,所以,设置左轮的功率值为-0.5,右轮设置为0.5。左转完成后,暂停一下,确保完成90度的转弯,后面再直行的时候,确保走的是直线。

右转(Right90)

同样的道理,设置右转,只需要将左转的两个轮子的驱动值交换即可。

初始化(Init)

恢复直行状态(ResetState)

Main主程序

设置一个内建事件,使得程序运行在Web 2D模拟器上后,不要直接运行,需要用户按键后,才直行。故,需要按键后进行初始化。紧接着机器人右侧的距离传感器和前侧的触觉传感器进行检测判断,右侧有路则右转,前方无路则左转。

由于使用到了两个传感器,均需要配置端口号,前面轮子已经使用了3和4,传感器就不能再使用3和4了。距离传感器的端口号设置为1,触觉传感器的端口号设置为2(后面会用到)。编写逻辑。右侧传感器比较容易理解,检测在直行过程中,满足测量值大于设定的危险值,则认为右侧有路,随即修改状态,再右转,右转完成后,机器人是暂停状态,为了走出迷宫,所以,后面还要接上一个重置状态,使得机器人继续直行,并且,还要将右转状态改为直行。

前方触觉传感器要反复检测机器人是否为直行状态,如果是直行状态,机器人会往前方移动,无需处理。如果不是直行状态,说明,机器人触碰到障碍物了,根据前方无路则左转,所以,此时机器人想要左转,但是触碰到了障碍物,转不过去,于是,先退一点,再左转,左转完成后,机器人暂停了,所以,还是需要在后面再接上一个重置状态,使得机器人转完后继续直行。

从而来使得按下w键后,机器人才能自动根据传感器的监测,按照沿着强的右侧走出迷宫。

机器人主机配置

使用Web 2D模拟器,只需要配置主机的端口号即可。端口号设置为8124(必须设置为8124,其他端口不可以)

运行到Web 2D模拟器步骤

首先,运行viple程序,窗口不要关闭

其次,点击viple中的“运行”,选择到“启动Web 2D模拟器”,进行传感器的配置,并进行更新,再连接到viple程序。

连接成功后,会弹出对应的提示:

此时机器人不会自主运动,需要用户按下w键,才能观察运行效果

效果展示

Web 2D沿右墙迷宫算法效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1258194.html

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

相关文章

ESXi 添加新网络 配置ubuntu虚拟机双网卡

基本概念 在ESXi的虚拟机之间确保正常通信的基础是网络服务,通常在物理网络中需要使用不同的物理设备进行连接才能组建出高效的网络服务,而在虚拟网络中,需要不同的虚拟设备为其提供服务。 ESXi的网络类型: 1、物理网络&#xf…

(七)上市企业实施IPD成功案例分享之——波音

有数据统计,早在疫情前的2019年,全球民用航空运输的旅客数量就已经达到了45亿人的峰值。其中,中国民航总计运输6.6亿人次。而只要出行坐飞机,就会发现机型大都是波音。事实上,波音公司垄断了全球几近一半的民航大飞机&…

Sass 安装

文章目录 前言SASS的系统要求安装Ruby例子后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Sass和Less 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误&…

排序篇(六)----排序小结(不用三连,混流量券)

排序篇(六)----排序小结 排序算法复杂度及稳定性分析 直接插入排序的算法复杂度: 最好情况下,当数组已经有序时,直接插入排序的时间复杂度为O(n),其中n是数组的大小。最坏情况下,当数组逆序排列时,直接插…

有哪些可信的SSL证书颁发机构?

目前市面上所显示的SSL证书颁发机构可所谓不计其数,类型也是多样,就好比我们同样是买一件T恤,却有百家不同类型的店铺一个道理。根据CA里面看似很多,但能拿到99%浏览器及设备信任度的寥寥无几,下面小编整理出几家靠谱可…

基于SWT的图书管理系统设计

功能说明 用SWT做一个图书管理系统,要求实现如下功能: 用户从登录窗口登录。用户身份有3种:高级管理员,普通管理员,普通用户。权限如下: 高级管理员具有所有权限,包括增、删、改、查书籍和用户,借书和还书,设置借阅数量限制,查看所有人的借阅记录; 普通管理员只…

京东平台上API接口的接入|获取京东工业商品详情数据

京东获得JD商品详情 API 返回值说明 item_get-获得JD商品详情 onebound.jd.item_get 公共参数 请求地址:申请KEY调用测试 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称&#x…

Redis基础——入门数据类型常用命令Java中操作Redis

这里写目录标题 1. 前言1.1 什么是Redis1.2 使用Redis能做什么 2. Redis入门2.1 Redis简介2.2 Redis下载与安装2.2.1 Redis下载2.2.2 Redis安装 2.3 Redis服务启动与停止2.4 Redis配置文件 3. Redis数据类型3.1 介绍3.2 Redis 5种常用数据类型 4. Redis常用命令4.1 字符串strin…

NX二次开发UF_CURVE_create_arc_center_radius 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_arc_center_radius Defined in: uf_curve.h int UF_CURVE_create_arc_center_radius(tag_t center, double radius, tag_t help_point, UF_CURVE_limit_p_t limit_p…

LeetCode(34)有效的数独【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 36. 有效的数独 1.题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗…

iOS蓝牙应用的后台处理,iOS蓝牙弹窗“xxx配件想要打开APP”

CBConnectPeripheralOptionNotifyOnConnectionKey: 在应用挂起后,与指定的peripheral成功建立连接,则发出通知 CBConnectPeripheralOptionNotifyOnDisconnectionKey: 在应用挂起后,如果与指定的peripheral断开连接,则发出通知 CBC…

亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证

近日,亚信科技AntDB数据库与苏州库瀚信息科技有限公司自主研发的RISC-V数据库存储解决方案进行了产品兼容测试。经过双方团队的严格测试,亚信科技AntDB数据库与库瀚数据库存储解决方案完全兼容、运行稳定。除高可用性测试外,双方进一步开展TP…

主播之客户停留与转粉

主播的客户停留可以通过以下方法提升: 1.打造舒适吸引人的直播间,灯光和色彩要重视起来。直播间的灯光作用是根据直播间的大小、色温、角度、照射亮度等,不同的条件都有不同的摆放,而且不同的摆放组合都会带来不同的效果,主播可以根据自己的…

马蹄集第33周

题目一 无重复字串的最长字串 解题思路: 双指针:设置两个指针L,R,分别指向traget的开头和结尾,并且使用一个哈希表存储char到int的映射,然后R,当出现重复的字符,那么要在对应的哈希表里面--。…

借力互联网,民营医院探索互联网医疗服务的发展方向

民营医院互联网医疗服务是指利用互联网技术和平台,为患者提供更加便捷、高效的医疗服务。在当前数字化时代,互联网医疗服务正逐渐成为医疗行业的新趋势,也为民营医院开拓了更广阔的发展空间。下面将围绕这一主题进行讨论: 首先&a…

如何避免光模块接口受到污染?

光模块作为光通信领域一个重要的配件,实现光电和电光的转换,和光纤连接,承载了数据流量的快速转换与传输。因而在整个网络体系中,起着至关重要的作用。虽然光模块在使用过程中,不像交换机和服务器等网络设备一样需要经…

【插件、图表】7种图表漂亮丰富uniCharts(附精选源码32套,涵盖商城团购等)

使用unicharts实现折线图、区域图、柱状图、饼状图、雷达图、环形图、可拖动折线图 <template><view class"content"><view tap"gotoPage(line)" class"list-item"><text>折线图</text></view><view ta…

Lazada测评怎么做?

国内电商行业的发展日趋激烈&#xff0c;卖家想要脱颖而出非常困难&#xff0c;许多卖家选择入驻跨境电商平台开店&#xff0c; 跨境电商平台吸引了许多卖家入驻&#xff0c;而最近有很多朋友在私信问我关于Lazada测评的一些事情 Lazada产品测评流程步骤 怎么测评 这个怎么测…

ZYNQ PL 中断请求

1 中断概念 中断学习 2 ZYNQ 中断框图 上图为 zynq 中断分布框图。可以看到部分 PL 到 PS 部分的中断&#xff0c;经过中断控制分配器&#xff08;ICD&#xff09;&#xff0c; 同时进入 CPU1 和 CPU0。查询下面表格&#xff0c;可以看到 PL 到 PS 部分一共有 20 个中断可以使…

计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(订单和AOP)

计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现&#xff08;订单和AOP&#xff09; 该项目分析着重于设计和实现基于SpringBootMyBatis框架的电脑商城。首先&#xff0c;通过深入分析项目所需数据&#xff0c;包括用户、商品、商品类别、收藏、订单、购物车…