论文《基于现实迷宫地形的电脑鼠设计》深度分析——智能车驱动算法

论文概述

      《基于现实迷宫地形的电脑鼠设计》是由吴润强、庹忠曜、刘文杰、项璟晨、孙科学等人于2023年发表的一篇优秀期刊论文。其针对现阶段电脑鼠计算量庞大且不适用于现实迷宫地形的问题,特基于超声波测距与传统迷宫算法原理,设计出一款可在现实迷宫地形下自动寻找出口的电脑鼠。该电脑鼠适用于岔路数量与道路宽度不定、多死路弯道并且相对较大的迷宫地形,具有适应性强、计算量小、兼容性和可塑性强等优点,对于现实迷宫地形下的自动应用具有一定研究价值。

        关键词  电脑鼠;超声波测距;迷宫算法;自动应用

        该论文内容相对较多,特对其进行拆开分析,本文特围绕智能车驱动算法进行展开分析。

一、中线判断与中线对齐

        中线判断即根据超声波探测所得到的L与R,判断出道路的中心直线,记此线为中线。基于之间超声波探头位于电脑鼠最中部并且可用于其近似代表电脑鼠位置的理论,当超声波探头沿着中线前进时,可认为电脑鼠沿着中线前进,此时电脑鼠距离左右的障碍物均足够远,可保证其在行驶过程中不会与障碍物相撞。

        中线对齐即根据L、R与已知的两驱动轮间距D,计算出相关数据,判断出小车位于中线的左侧还是右侧。其中以小车位于中线右侧为例,先保持左驱动轮不动,右驱动轮向前行驶一定时间,致使车辆左进行偏转;再以相同的保持右驱动轮不动,驱动左驱动轮使车辆向右偏转相同角度,从而使得车辆中心恰好对齐中线位置,见图9。

b56e9d500bf24fa4850f31a51d2a22eb.png

图9 中线对齐示意图

1.理论分析

6008768f620c4de1bed89b209b14deb4.png

2.实际应用

3a448a487afe4d35a28f9b7e958832b5.png

二、转弯判断与车辆转向

        转弯判断与车辆转向均是基于超声波探测与迷宫算法下进行完成的,其具体流程图见图10。

9c6e6ba501be44e8a2d180ef86556551.png

图10 转弯判断流程图

        根据超声波测量的路口情况进行迷宫算法判断,若并不需要转弯则保持正常行驶,反之则将舵机转向需要转弯的方向,通过不断的超声波测距,根据是否有极大值的出现判断其是否到达路口。

        以图9的情况为例,电脑鼠前往右侧的路口,则将转向舵机向右旋转九十度。同时车辆保持匀速前进,在前进的过程中不断进行超声波测距,而当车辆行驶图中路口时,其测量的数据便存在了极大值。此时小车停止运动,对路口再次进行超声波测量,根据路口判断原理分析该路口是否为死路。

        为死路则将舵机转回前进方向,正常行驶;不为死路则停止右电机转动,单独工作左电机T时间,使小车向右旋转90度,进入新路口行驶。

        根据此时情况将90度公式(19)计算可得:

eq?T%3D%5Cfrac%7BD%7D%7B2*f*d%7D

        对于大多数迷宫而言,车辆转向所需要的时间为一个定值。

三、车辆掉头

        在智能的小车的避障研究中,若前方道路为死路则直接向后行驶或以一个轮胎为圆点旋转180度进行掉头。这不仅不适用我们的设计方案同时面对狭窄的现实道路时,也可能会出现车辆的掉头而使得车辆与障碍物相碰,见图11。

c68284e6887b44e4a26816670455017f.png

图11 掉头碰撞示意图

        为使电脑鼠可以在道路宽度小于2D的狭窄情况进行掉头,特基于上述的中线对齐、车辆转向理论与公式(21)对掉头驱动进行改进,其运动情况见图12。

75dbef988df740a6bc737bb10c5fc46e.png

图12 车辆掉头示意图

        当电脑鼠所前进的方向1为死路时,可先使其以L1为圆心,关闭左电机,单独工作右电机T时间,驱动右车轮从R1到达R2;同理以R2为圆心,关闭右电机,单独工作左电机T时间,驱动左车轮从L1到达L2。

        此时的前进方向便从方向1改为了方向2,且电脑鼠在转向过程中不会与障碍物发生碰撞,完成转向后依然对齐中线行驶,在保证安全行驶的同时节省了二次中线对齐的时间损耗。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法日记 26-27day 贪心算法

接下来的题目有些地方比较相似。需要注意多个条件。 题目:分发糖果 135. 分发糖果 - 力扣(LeetCode) n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每…

vue3点击按钮el-dialog对话框不显示问题

vue3弹框不显示问题,控制台也没报错 把 append-to-body:visible.sync"previewDialogOpen" 改为 append-to-bodyv-model"previewDialogOpen" 就好了。

wordpress使用相关

这里写目录标题 遇到的相关问题WordPress安装插件过程中遇到需要ftp出现确实XMLReader 插件的提示cURL Support Missing(curl 缺失) 遇到的相关问题 WordPress安装插件过程中遇到需要ftp 一般在这个位置 出现确实XMLReader 插件的提示 解决&#xff1a…

21.3D surface

3D surface """ File : 05-decoding-Major Name : 3d_surface.py Author : lyq Date : 2024/11/16 23:10 Envi : PyCharm Description: files details """ import numpy as np import matplotlib.pyplot as plt# 设置全局默认字体…

ARM(安谋) China处理器

0 Preface/Foreword 0.1 参考博客 Cortex-M23/M33与STAR-MC1星辰处理器 ARM China,2018年4月established,独立运行。 1 处理器类型 1.1 周易AIPU 1.2 STAR-MC1(星辰处理器) STAT-MC1,主要为满足AIOT应用性能、功…

windows C#-异步编程概述(二)

不要阻塞,而要等待 上述代码演示了一种不好的做法:构建同步代码来执行异步操作。正如所写,此代码会阻止执行它的线程执行任何其他工作。在任何任务正在进行时,它都不会被中断。这就像你把面包放进去后盯着烤面包机一样。你会忽略…

【Android原生问题分析】夸克、抖音划动无响应问题【Android14】

1 问题描述 偶现问题,用户打开夸克、抖音后,在界面上划动无响应,但是没有ANR。回到Launcher后再次打开夸克/抖音,发现App的界面发生了变化,但是仍然是划不动的。 2 log初分析 复现问题附近的log为: 用户…

【STM32】MPU6050简介

文章目录 MPU6050简介MPU6050关键块带有16位ADC和信号调理的三轴MEMS陀螺仪具有16位ADC和信号调理的三轴MEMS加速度计I2C串行通信接口 MPU6050对应的数据手册:MPU6050 陀螺仪加速度计 链接: https://pan.baidu.com/s/13nwEhGvsfxx0euR2hMHsyw?pwdv2i6 提取码: v2i6…

【软件测试】设计测试用例的万能公式

文章目录 概念设计测试用例的万能公式常规思考逆向思维发散性思维万能公式水杯测试弱网测试如何进行弱网测试 安装卸载测试 概念 什么是测试用例? 测试⽤例(Test Case)是为了实施测试⽽向被测试的系统提供的⼀组集合,这组集合包…

使用 TensorFlow 实现 ZFNet 进行 MNIST 图像分类

ZFNet(ZF-Net)是由 Matthew Zeiler 和 Rob Fergus 提出的卷积神经网络架构,它在图像分类任务中取得了显著的效果。它在标准卷积神经网络(CNN)的基础上做了一些创新,例如优化了卷积核大小和池化策略&#xf…

如何让手机ip变成动态

在数字化浪潮中,手机已成为我们日常生活中不可或缺的一部分。无论是浏览网页、使用社交媒体还是进行在线购物,手机都扮演着举足轻重的角色。然而,在享受网络带来的便利时,我们也需要关注网络安全和隐私保护。静态IP地址可能让手机…

前端三大组件之CSS,三大选择器,游戏网页仿写

回顾 full stack全栈 Web前端三大组件 结构(html) 样式(css) 动作/交互(js) --- 》 框架vue&#xff0c;安哥拉 div 常用的标签 扩展标签 列表 ul/ol order——有序号 unordered——没序号的黑点 <!DOCTYPE html> <html><head><meta charset"…

CPU执行指令的过程

通过前面两篇文章的介绍&#xff0c;我们已经认识到了&#xff1a;可执行程序通过作业调度装入内存&#xff0c;操作系统为进程创建虚拟地址空间&#xff0c;分配物理内存&#xff0c;建立页表&#xff08;映射关系&#xff09;&#xff0c;申请并初始化PCB&#xff0c;开始调度…

【MySQL】InnoDB内存结构

目录 InnoDB内存结构 主要组成 缓冲池 缓冲池的作用 缓冲池的结构 缓冲池中页与页之间连接方式分析 缓冲池如何组织数据 控制块初始化 页面初始化 缓冲池中页的管理 缓冲区淘汰策略 查看缓冲池信息 总结 变更缓冲区-Chang Buffer 变更缓冲区的作用 主要配置选项…

论文笔记 SuDORMRF:EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION

SUDORMRF: EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION 人的精神寄托可以是音乐&#xff0c;可以是书籍&#xff0c;可以是运动&#xff0c;可以是工作&#xff0c;可以是山川湖海&#xff0c;唯独不可以是人。 Depthwise Separable Convolution 深度分离卷积&a…

SpringBoot+React养老院管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.入住合同文件上传2.添加和修改套餐的代码3.查看入住记录代码 一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SpringBootReact框架开发的养老院管理系统。首先…

w039基于Web足球青训俱乐部管理后台系统开发

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

Go 语言已立足主流,编程语言排行榜24 年 11 月

Go语言概述 Go语言&#xff0c;简称Golang&#xff0c;是由Google的Robert Griesemer、Rob Pike和Ken Thompson在2007年设计&#xff0c;并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标&#xff0c;…

【java】链表:判断链表是否成环

问题&#xff1a; 分析&#xff1a; 这里我们还是定义快慢双指针 。 如果有环&#xff0c;快慢指针一定会相遇。 // 构建成环链表public void makeCircle(){Node node1new Node(1);Node node2new Node(2);Node node3new Node(5);Node node4new Node(6);Node node5new …

基于视觉智能的时间序列基础模型

GitHub链接&#xff1a;ViTime: A Visual Intelligence-Based Foundation Model for Time Series Forecasting 论文链接&#xff1a;https://github.com/IkeYang/ViTime 前言 作者是来自西安理工大学&#xff0c;西北工业大学&#xff0c;以色列理工大学以及香港城市大学的研…