22年电赛B题——具有自动泊车功能的电动车——做题记录以及经验分享

news2024/11/24 13:48:42

前言

这道题目也是小车类电赛题目,十月份的电赛题,由于之前积累了一些经验,这道题目在做下来的感觉还行,但是我们看题目没有仔细审题,和题目要求有一些些偏差,但是基础大功能还是做出来辽,大家还是可以参考的

这道题目,就是我们日常生活中的科目二,倒车入库和侧方停车,要求使用前轮转向的四轮电动车,限制了车型,这是一点

但是没有限制MCU,即大家可以使用自己觉得容易上手和熟悉的MCU进行做题

这道题目我们采用的是TI的MCU,型号为TIM4C123G6HPM,就是下面这块小板子,除了引脚稍微少点,熟悉使用后和32差不多,能够很快上手

在这里插入图片描述

当时我们考虑到,如果今年电赛题目限制TI的MCU,所以这道题目采用的TI的MCU进行做题


赛题分析

我们首先来看这道题目的要求,基础要求就是,分别独立完成倒车入库和出库的,分别独立完成侧方入库和出库

一切都是在这个基础上进行的
在这里插入图片描述
在这里插入图片描述

根据题目,我们可知,就是倒车入库和侧方停车,不同题目要求就是邻库是否有车,是单步倒车入库或侧方停车还是连续进行

好,我们根据题目来分析

1. 车型选择
2. 沿库线边线循迹
3. 倒库停止准备倒车标志
4. 倒库操作or侧方入库操作
5. 邻库有车,小车进库和出库

这道题目主要最关键的还是车型的选择准备倒库倒车停止标志


1、车型的选择

这道题目,限制了车型,要求必须使用前轮转向的四轮小车

由于在跟随小车系统中使用过前轮舵机转向的四轮小车,所以这道题目我们采用的是前轮舵机转向,后轮为驱动轮的四轮小车

但是我们由于是练习,并未在小车的大小上仔细深究,还是把之前做跟随小车系统中的小车修改了一下结构,直接使用

而且注意,题目在小车的大小也做了限制,要求如下
在这里插入图片描述

所以这道题目不同于之前限长小于25,车型变大了,对于倒车入库和侧方停车还是有些难度的

建议大家根据题目要求来合理选择自己的车型

在赛前多准备几种车型,多留一手


2、沿库边循迹

题目要求小车右侧投影离库边线约为5cm

这道题目这里的要求我们忽略了,所以在做题时并不是距离库边线5cm,一丢丢小瑕疵

在这里插入图片描述
在这里插入图片描述

这个如何实现呢,基础的红外、灰度当然不能实现,因为库边线在小车右方,所以只能采用摄像头进行循迹

这里使用的是摄像头模拟灰度传感器的方式,根据小车的运动姿态,给出不同的偏差值,小车再根据传回来的偏差值err,对自身的姿态进行纠正,让小车始终处于巡线期望值前进

和前两期分享的知识点相同,这点就不做过多重复介绍了

大家可以去看前两期分享的博客,里面有详细的介绍,关于小车循迹的几种方法以及32端如何接收OpenMv传回来的偏差值进行PID计算


3、倒库停止准备倒车标志

小车的主要目的还是倒车入库or侧方停车,当小车循迹前进时,什么时候停车准备倒库呢

我们是将摄像头的右上部分,划分感兴趣区域,然后进行模板匹配的方式,进行匹配

因为大家可以看到无论是倒车入库还是侧方停车,第三个库的库角都和前两个的特征不同,根据这个特征就可以进行模板匹配

在这里插入图片描述
在这里插入图片描述

当摄像头匹配到库角标志时,发送标志位给小车,小车根据标志位进行停车,准备倒库


4、倒库操作or侧方入库操作

当小车识别到准备倒库标志后,后面的操作我基本上是写死的

  • 先往前走一段,打方向向后倒车,倒车到与车库平齐,方向回正,向后倒库

这里的切换时机是根据小车行进的距离进行判断,还有向后打方向倒车时,可以给后轮一个小小的差速,更加方便小车向后倒车

  • 进库后停止2s,准备出库,出库后继续巡线,直至侧方停车停止线的识别

侧方停车的步骤基本上和倒车入库相同

大家要找到合适的时机以及合适的舵机方向(即PWM),然后衔接起来

就完成了倒库或者侧方停车

当然,我在B站上,也看到很多大佬的入库非常丝滑,很值得学习
无名小哥的教程就起初给了我很大的启发
大家 可以多逛逛B站,发掘一下自己的灵感


5、邻库有车,小车进库和出库

这一点我们发现,如果采用上述说过的方法,有很大可能识别不到准备倒库停止标志,因为可能邻库的车把库角挡住了,然后摄像头识别不到或者是识别的概率大大降低

这一点我们还未解决,这也是瑕疵之一,有概率识别不到,小车就直接跑了,倒库失败

由于时间紧迫,我们这道题目就做了个大概,基础倒库和侧方均可实现,但是有瑕疵,但是程序逻辑和基础思路大家还是可以参考学习的


调试经验分享

其实这道题目如果只做倒库或者侧方的话,基本的调试可能更多的在摄像头那边,因为要保证停车标志的准确性

剩下的就都是小车这边的逻辑书写了,还有调试最多的估计就是各种状态的切换,比如打角打多少角度,后退前进多少距离,巡线的调试

再就没啥了

邻库有车还是有概率识别不到倒库停止标志,待改进


还有一点,就是要注意仔细阅读题目,使用笔来画出题目的各种要求,仔细审题,不然正式比赛的话,可能因为一时的疏忽,造成颗粒无收


总结

这是关于自己刷真题时,做题的记录和经验分享,都是自己经过实际测试和调试后得出的方案,将这些给大家分享,希望能够帮助到大家

在做这道题目后
我总结出了,适合自己的一套程序流程代码,非常好用,如各种状态切换等

同样,我也开源出了这道题目的代码,大家可以参考学习


开源链接

大家可以参考学习

大家可以自行访问,进行下载

下方为gitee开源链接,请大家点一个star,谢谢

oufen / 2022年电赛B题-自动泊车系统

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

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

相关文章

SASS 学习笔记 II

SASS 学习笔记 II 上篇笔记,SASS 学习笔记 中包含: 配置 变量 嵌套 这里加一个扩展,嵌套中有一个 & 的用法,使用 & 可以指代当前 block 中的 selector,后面可以追加其他的选择器。如当前的 scope 是 form&a…

zotero在不同系统的安装(win/linux)

1 window系统安装 zotero 官网: https://www.zotero.org/ 官方文档 :https://www.zotero.org/support/ (官方)推荐常用的插件: https://www.zotero.org/support/plugins 入门视频推荐: Zotero 文献管理与知识整理最佳实践 点击 exe文件自…

30.Netty源码服务端启动主要流程

highlight: arduino-light 服务端启动主要流程 •创建 selector •创建 server socket channel •初始化 server socket channel •给 server socket channel 从 boss group 中选择一个 NioEventLoop •将 server socket channel 注册到选择的 NioEventLoop 的 selector •…

如何利用 ChatGPT 进行自动数据清理和预处理

推荐:使用 NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 ChatGPT 已经成为一把可用于多种应用的瑞士军刀,并且有大量的空间将 ChatGPT 集成到数据科学工作流程中。 如果您曾经在真实数据集上训练过机器学习模型,您就会知道数据清理和预…

Linux debian12解压和压缩.rar文件教程

一、Debian12安装rar命令 sudo apt install rar二、使用rar软件 1.解压文件 命令格式: rar x 文件名.rar实力测试: [rootdoudou tmp]# rar x test.rar2.压缩文件 test是一个文件夹 命令格式: rar a 文件名.rar 文件夹名实例测试&#x…

Java的AQS框架是如何支撑起整个并发库的

如何设计一个抽象队列同步器 引言AQS需要解决哪些场景下的问题互斥模式获取锁抢锁失败入队 释放锁小总结 共享模式获取共享资源释放共享资源唤醒丢失问题 小总结 混合模式获取写锁释放写锁获取读锁读锁是否应该阻塞 释放读锁小总结 栅栏模式等待递减计数 条件变量模式等待条件成…

如何将图片应用于所有的PPT页面?

问题:如何快速将图片应用到所有PPT页面? 解答:有两种方法可以解决这个问题。第一种用母板。第二种用PPT背景功能。 解决有时候汇报的时候,ppt中背景图片修改不了以及不知道如何查找,今天按照逆向过程进行操作 方法1…

Intelij IDEA 配置Tomcat解决Application Server不显示的问题

今天搭建war工程时部署项目发现,IDEA的控制台没有Application Servers,在网上查了一下,总结几个比较好的解决方法,为了方便自己和其他人以后碰到相同的问题,不再浪费时间再次寻找解决办法。 Intelij IDEA 配置Tomcat时…

PyMuPDF`库实现PDF旋转功能

本文介绍了一个简单的Python应用程序,用于将PDF文件转换为旋转90度的PDF文件。主要用于csdn网站中导出的博客pdf是横向的,看起来不是很方便,才想到用python编制一个将pdf从横向转为纵向的功能。 功能 该PDF转换工具具有以下功能&#xff1a…

pdf转word最简单方法~

pdf转word最简单方法!pdf转word最简单方法我们都知道,PDF文件是一种只读文件格式,无法按照需求对PDF文件进行更改与编辑,从而影响到了PDF文件的使用。所以,我们需要将PDF文件转换为word文档,以此来保证文件…

js 小程序限流函数 return闭包函数执行不了

问题: 调用限流 ,没走闭包的函数: checkBalanceReq() loadsh.js // 限流 const throttle (fn, context, interval) > {console.log(">>>>cmm throttle", context, interval)let canRun…

Webgl 存储限定符attribute、gl.getAttribLocation、gl.vertexAttrib3f及其同族函数和矢量版本的介绍

目录 attribute变量规范 获取attribute变量的存储位置 gl.getAttribLocation()函数的规范: 向attribute变量赋值 gl.vertexAttrib3f()的规范。 gl.vertexAttrib3f()的同族函数 示例代码…

达梦数据库8用户管理以及忘记sysdba密码修改办法

达梦数据库8用户管理&达梦数据库v8忘记sysdba密码,修改办法。 达梦数据库8用户管理1.创建用户的语法:2.锁定/解锁用户3.修改用户的密码(同样要符合密码策略PWD_POLICY)4.修改用户默认表空间5.删除用户6.同样地可以使用DM管理工具进行创建…

基于docker搭建pytest自动化测试环境(docker+pytest+jenkins+allure)

pytest搭建自动化测试环境(dockerpytestjenkinsallure) 这里我以ubuntu18为例 如果有docker环境,可以直接拉取我打包好的镜像docker pull ziyigun/jenkins:v1.0 1 搭建Docker 1.1 安装docker # 配置docker安装环境 sudo apt-get install ap…

js 闭包和 垃圾回收机制

js 闭包和 垃圾回收机制 闭包里面的变量 是局部变量 但是 由于一直使用,引用,没有被回收 所以相当于 全局变量

Docker案例分析:创建并运行一个Redis容器

步骤一:到DockerHub搜索Redis镜像 步骤二:查看Redis镜像文档中的帮助信息 步骤三:利用docker run命令运行一个Redis容器 可以看到第二行的命令是支持数据持久化的创建容器命令,但是我们使用的命令如下: docker run -…

Vue3 使用json编辑器

安装 npm install json-editor-vue3 main中引入 main.js 中加入下面代码 import "jsoneditor";不然会有报错&#xff0c;如jsoneditor does not provide an export named ‘default’。 图片信息来源-github 代码示例 <template><json-editor-vue class…

ssm+vue校园美食交流系统源码

ssmvue校园美食交流系统源码和论文026 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多商…

Stable Diffusion入门修炼手册

简介 作为新入门的新手&#xff0c;通常安装完Stable Diffusion之后&#xff0c;一打开界面&#xff0c;在文生图输入girl或者dog&#xff0c;结果出来的画面比较糟糕&#xff0c;看起来像素很低&#xff0c;画面不清晰&#xff0c;人物也不怎么美&#xff0c;等等其他问题&am…

tomcat中的BIO与NIO发展

tomcat中的NIO发展 前言 Tomcat目前支持BIO&#xff08;阻塞 I/O&#xff09;、NIO&#xff08;非阻塞 I/O&#xff09;、AIO&#xff08;异步非阻塞式IO&#xff0c;NIO的升级版&#xff09;、APR&#xff08;Apache可移植运行库&#xff09;模型&#xff0c;本文主要介绍NI…