2022年电赛C题——小车跟随行驶系统——做题记录以及经验分享

news2024/11/16 7:22:06

前言

自己打算将做过的电赛真题,主要包含控制组的,近几年出现的小车控制题目,自己做过的真题以及在准备电赛期间刷真题出现的问题以及经验分享给大家

这次带来的是22年电赛C题——小车跟随行驶系统,这道题目指定使用的是TI的单片机,完成以下功能

采⽤ TI 的 MCU设计⼀套⼩⻋跟随⾏驶系统,由⼀辆领头⼩⻋和⼀辆跟随⼩⻋组成,要求⼩⻋具有循 迹功能,且速度在0.3 ~ 1m/s 可调,能在指定路径上完成⾏驶操作。

好了,废话不多说,开始


赛题分析

以下是赛题的任务部分,要求采用TI的MCU,双车跟随,且具有循迹功能,速度在0.3 ~ 1m/s内可调,能在指定路径上完成行驶操作

在这里插入图片描述

好,根据题目我们来分析,几个重要的点

1. 采用TI的MCU 2. 领头小车和跟随小车 3. 具有循迹功能 4. 速度在0.3m/s-1m/s内可调 5. 到达终点时要发出声光提示 6. 可沿内外圈行驶,且内外圈可控 7. 当专家在E端放下等停标志时,小车停车,等待5s后停止 8. 双车之间的通信 9. 具有跟随功能


1、领头小车和跟随小车车型选择

这道题目要求的是双车,要搭建两个小车

这道题目建议使用

三轮小车,前轮为万向轮或牛眼轮,后两轮为驱动轮

当然,四轮小车也是可以的,我在做这道题目的时候,采用过前轮为舵机转向,后两轮为驱动轮的方案,效果也相当不错

在B站中观摩到的很多UP,还采用的是四轮小车,这种效果看起来也还不错

但是三轮小车的控制程度比后两种的车型难度较低,很适合入门级别摸索

对三轮小车的控制差不多了,就可以往后进阶了,四轮小车也是一样的原理,只不过多加了一些些东西


2、TI的MCU

做这道题目的时候,没有采用TI的MCU,使用的是Stm32F103RCT6

TI单片机是后面才学的,后面学会了TI的MCU后,使用起来和32是一样的

这道题目在练习时不必纠结是何种MCU,我们要理解的是这道题目需要我们的什么知识点,使用不同的MCU只是换了一个方式去调用外设,其内部核心原理都是一样的

一般来说,定时器,串口,中断都是要频繁使用的资源


3、具有循迹功能

这道题目的一个基础功能就是循迹,一切都是在循迹的基础上进行的,根据题目可以看到是黑线,黑线循迹和之前21年送药小车循红线的思路其实是一样的

黑线还比红线多了几种选择

黑线可以采用红外对管来循迹,可以采用几路红外对管并排排列,分别放在小车的前部,小车在运动行驶的过程中,根据红外对管传回来的状态来实时修正小车的位置

放五个红外对管,根据不同的状态给不同的偏差值,然后根据偏差使用PID算法,始终使小车保持在正中位置,即可达到循迹功能

类似的还有OpenMv巡线,灰度巡线

相关可以参考这个链接,我的21年送药小车教程里讲过的,都是一个思路,大家熟悉后,循迹基本就搞定了

分享21年电赛F题-智能送药小车-做题记录以及经验分享


还有哦,调节转向PID提一个醒

转向PID只需要调节P和D就行了

因为这道题目的要求是,速度在0.3m/s-1m/s内可调,你初始调节的PID参数,当速度快起来之后,后面速度的转向,可能就转不过来,可能会偏离赛道,这个时候,建议将速度拉到最大,然后调节PID参数,将这个PID参数作为最终加载值,这样PID参数适用于最大速度以下的转向

多调试,一般先给个P,放车进赛道,走一段,到达最大弯道,即那四个最大拐角的时候,看现象,转不过去,就加P,加到能够快速转过最大拐角时,即是合理P

可以适当给D,增加快速响应


4、速度在0.3m/s-1m/s内可调

这个简单,只需要设置几个按键,按键1速度为0.3m/s,按键2速度为0.5m/s…依次类推

不同的速度如何设置呢?

我们使用的是速度环,PID调节的期望速度,我们只需要给期望速度,这就是我们的小车行驶的速度

按下按键,速度在0.3m/s,期望速度为0.3m/s


5、到达终点发出声光提示

这个如何实现呢,摄像头识别到停止线后,小车停止

蜂鸣器响,灯光亮


6、可沿内外圈行驶,且内外圈可控

内外圈可控,是这道题的难点之一,题目要求小车要实现内圈超车的功能
,这就要求小车能准确拐到内圈中,并实施超车

如何实现内外圈切换呢?

  1. 在做题时,起初是MV端实现,当小车在跑第二圈的时候,识别到停止线两次后,对外圈的线进行屏蔽,摄像头上就只对左边内圈线感兴趣,此时,巡线偏差修改,小车根据PID算法,拐到内圈轨道行驶

后面,发现这种方法不太稳定,可能会出现,识别停止线错误,从而造成拐入内圈时机不正确,于是舍弃了这种方案

  1. 于是在32端实现,当摄像头识别到停止线两次后,左右轮给一个差速,左轮速度比右轮速度小,小车进而有一个向左偏移,然后根据传回来的巡线偏差,迅速调节小车姿态,从而拐入内圈行驶

这种方案经测试,效果较好,成功率也挺高的,从而实现内外圈可控


7、当专家在E端放下等停标志时,小车停车,等待5s后停止

这个就是MV端的任务嘞,当识别到等停标志后,根据MV传回来的标志位进行判断,等待5s后再继续进行行驶

这一小问要求的是速度为1m/s,1m/s在这个小赛道上速度是超快的了,我们在调试的时候,发现,速度一快之后,摄像头识别准确性大大降低,当时好像采取的是模板匹配还是神经网络,效果还是不理想

后面就没咋调了,主要是摄像头方面,需要多调节一下


8、双车之间的通信

根据说明,全程所有的操作,只有在领头小车上完成,有启动按键和设置按键,跟随小车只有一个上电开关
在这里插入图片描述

这也就是说,领头小车是通信主机,跟随小车是通信从机,主机始终发数据,从机始终接收主机发过来的数据

这里我们采用的是蓝牙模块HC-05,蓝牙还是很好用的,配置好后,每次用的时候直接用就行嘞,区分好主机和从机就行

说一下具体思路,主车设置按键,按下按键设置速度和题目模式,此时按下按键后,通过蓝牙主机发送数据给从机,告诉从机此时的行驶速度和题目模式,按下确认键后,两小车开始行进


9、具有跟随功能

这也是一个小难点,跟随小车要和领头小车保持20cm的间距,全程都不能发生小车碰撞
在这里插入图片描述

这里呢,我们采用HC-SR04超声波模块根据超声波探测前方小车的距离,实时改变小车的速度,从而达到控制间距的目的

这里呢,我们一开始使用的是,当小于某个距离阈值时,小车速度–,大于某个阈值时,小车速度++,始终保持20cm

这样嘞,经过调试,发现效果不咋好,勉勉强强可以跟随哈哈哈,也能加速和减速,总的来说就是程序的鲁棒性不行

理想情况是,离前方小车比较远,加速,离得非常近,减速,然后保持一段距离,离得非常近,马上往后

后面经过改进,知道了,其实可以根据超声波模块的距离变化,使用PID算法,输入为期望的跟随距离/小车当前得跟随距离输出的小车的速度

这种,跟随效果就非常好嘞,但是在源代码中并未添加,大家可以尝试一下,我所了解到得一种跟随得较好方案


调试经验分享

这道题目看起来,不就是寻黑线吗,简简单单

但是在做得时候还是发现了很多问题的

下面分享一下调试经验

1、速度的计算

我所计算的速度,都是以RPM为单位的根据小车转一圈的脉冲数和小车当前读取的脉冲数进行计算,大家可以参考我之前写过的这篇文章的评论区查找如何将小车的脉冲数转换为RPM

Stm32-使用TB6612驱动电机及编码器测速

这里推荐轮趣的MG310电机,这个电机,最高转速为500转,小小一个电机,经过测试还是可以勉强跑到1m/s的

至少前几问绝对够用了,大家还可以选择其他电机


2、主要程序逻辑

这道题目的主要程序逻辑还是挺简单的,按下按键设置速度和模式,按下确认键下小车开始行驶

后面就是一些模式的函数的书写,根据按键按下的模式选择,选择响应的模式函数,遇到停止线停止


3、内外圈的切换

这个估计一下子调不好,内外圈当时卡了我们好久

你们看,当识别到停止线两次后,还要往前走一段,才是内外圈交点,这个时候才开始内外圈交换,所以这个距离可以采取记脉冲的方式,也可以采用延时的方式来进行解决,当脉冲数达到后,或者是延时时间到后,立马给个差速,小车就拐到内圈去了

这个距离或者是延时时间需要好好把握一下


4、通信

这个也不多说了,初次建议首先使用串口,连接两个蓝牙,分别插到电脑,打开上位机,互相发送数据,成功后,就说明蓝牙配置完成

在这里插入图片描述

如果后面出问题的话,就是程序的问题,从程序内部寻找原因,硬件原因排除

下方是蓝牙的配对步骤
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


5、跟随功能

这个呢,上述说过的超声波PID跟随,是后面了解到的,还未调试,但是我觉得是一个非常好的方案,跟随效果应该会非常好

具体大家还可以参考其他大佬的教程,讲的挺好的


总结

这道题目看起来简单,但是有好几个难点,不只是简简单单循个迹,有很多小细节

大家可以根据我上方的经验分享以及赛题分析进行参考,做出自己的第一辆小车

经过这道题目后,多磨磨,将会对以下几种知识点熟练运用并掌握嘞

  • 常见循迹方案
  • 超声波的基本使用
  • 无线通信模块的使用
  • 电赛经验get, 经验值+1

希望我的分享对你有帮助,同样,我也开源了自己做这道题的代码,大家可以参考学习


开源链接

大家可以参考学习

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

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

oufen / 2022年电赛C题-小车跟随系统

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

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

相关文章

uniapp微信小程序区分正式版,开发版,体验版

小程序代码区分是正式版,开发版,还是体验版 通常正式和开发环境需要调用不同域名接口,发布时需要手动更换 或者有些东西不想在正式版显示,只在开发版体验版中显示,也需要去手动隐藏 官方没有明确给出判断环境的方法&a…

web实现酷炫的canvas粒子动画背景

文章目录 前言一、particle-bg1. git地址:2. 安装3. 使用4. 完整demo 二、tsParticles1. 源码地址:2. 安装3. 引入4. 使用5. 几个例子5.1 ts粒子五彩纸屑烟花5.2 多粒子产卵器-用tsParticles制作5.3 ts粒子鼠标吸引力5.4 粒子烟花 源码地址完结 前言 粒…

C++--深入类和对象(上)

引言: 本篇博客将深入探究C中的类和对象。我们将从普通高校教学点开始,逐步介绍类的定义、对象的创建和使用,以及类与对象之间的关系。通过详细讲解访问控制和成员函数,我们将揭示封装的重要性以及如何实现数据的隐藏和安全性。 目…

Docker容器:docker基础概述、安装、网络及资源控制

文章目录 一.docker容器概述1.什么是容器2. docker与虚拟机的区别2.1 docker虚拟化产品有哪些及其对比2.2 Docker与虚拟机的区别 3.Docker容器的使用场景4.Docker容器的优点5.Docker 的底层运行原理6.namespace的六项隔离7.Docker核心概念 二.Docker安装 及管理1.安装 Docker1.…

图数据库_Neo4j基于docker服务版安装_Neo4j Desktop桌面版安装---Neo4j图数据库工作笔记0004

然后我们来看看如何用docker来安装Neo4j community server 首先去执行docker pull neo4j:3.5.22-community 去拉取镜像 然后执行命令就可以安装了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下访问一下这个时候,要用IP地址了注意 然后再来看一下安装Desktop 去下…

如何在前端实现WebSocket发送和接收UDP消息(多线程模式)

目录 简介:步骤1:创建WebSocket连接步骤2:创建Web Workers步骤3:发送和接收UDP消息(多线程模式)结束语: 简介: 本文将继续介绍如何在前端应用中利用WebSocket技术发送和接收UDP消息…

数学建模的概念和学习方法(什么是数学建模)

一、初步认识数学建模 数学建模是将数学方法和技巧应用于实际问题的过程。它涉及使用数学模型来描述和分析现实世界中的现象、系统或过程,并通过数学分析和计算来预测、优化或解决问题。数学建模可以应用于各种领域,包括自然科学、工程、经济学、环境科学…

Effective C++学习笔记(8)

目录 条款49:了解new-handler的行为条款50:了解new和delete的合理替换时机条款51:编写new和delete时需固守常规条款52:写了placement new也要写placement delete条款53:不要轻忽编译器的警告条款54:让自己熟…

XenDesktop5.6如何连接数据库

Citrix在数据库的连接方式上一直不统一,但是也还是有迹可循的。 经过了好长时间的下载以后,今天终于有时间来测试一下最新版本的XenDesktop 5 SP1,由于结合了其他组件和环境的需要,所以,选择了独立部署数据库&#xf…

Microsoft 图像BERT,基于大规模图文数据的跨模态预训练

视觉语言任务是当今自然语言处理(NLP)和计算机视觉领域的热门话题。大多数现有方法都基于预训练模型,这些模型使用后期融合方法融合下游任务的多模态输入。然而,这种方法通常需要在训练期间进行特定的数据注释,并且对于…

[JavaWeb]【一】入门JavaWeb开发总概及HTML、CSS、JavaScript

目录 一 特色 二 收获​编辑 三 什么是web? 四 网站的工作流程 五 web网站的开发模式​编辑 六 web开发课程学习安排 七、初始web前端 八 HTML、CSS 8.1 什么是HTNL\CSS(w3cschool) 8.2 HTML快速入门 8.3 VS Code开发工具 8.3.1 插件 8.3.2 主题(改变颜色&…

vue组件封装——类似bootstraptable的模糊搜索功能,支持语音搜索

插件地址 懒得写了,直接上插件地址去看吧

后端返回图片资源错误404,前端使用默认图片

后端返回的图片资源可能会因为各种原因(后台误删,地址更改未及时更新,损毁)出现无法展示的情况,比如这种报错 就会导致图片资源错误,页面出现这种情况 用户体验很不好,为了改善这种情况&#xf…

从视觉装备到智能驾驶,天准科技能否打造第二增长极?

智能网联汽车已经成为了上市公司跨界布局的热门赛道。 天准科技是工业视觉智能装备领域的龙头企业,主要客户包括苹果、三星等企业。招股说明书显示,2016年至2018年,天准科技来源于苹果公司及其供应商的收入合计占比达到49.98%、67.99%及76.0…

角色入门01----MetaHuman创建角色

创建网址Epic Games 创建完成后,可以在bridge里边下载自己的模型,导入他。我们想用小白人控制他,还要导入第三人称游戏包,把小白人蓝图拿出来。 把小白人的蓝图复制到自己新建的文件夹,把下载好的metaHunmen的骨骼全部…

微服务概述-7

Shiro 框架 Shiro 是一个用于 Java 应用程序的安全框架。它提供了身份验证、授权、加密和会话管理等功能,可以帮助开发人员构建安全可靠的应用程序。 Java 中针对权限管理常见的有 2 个著名的框架:spring security 和 shiro shiro 基本概念 credentia…

ABAP 新语法--Data Processing

1. String Template 新语法引入了字符串模板,用于处理字符串连接以及格式转换 字符串模板在 | … | 之间定义,主要分为两部分,固定文本和变量 其中,变量只能在 { … } 内使用,大括号之外的所有字符均作为固定文本使用…

windows以管理员的身份运行CMD

电脑在装系统的时候,我的用户不是最高权限的管理员。 今天在工作的时候,使用CMD。运行失败,提示我需要使用管理员的身份运行CMD才可以。 使用右键点击左下角的windows图标 选择红框标注的那项。 以普通身份运行: 以管理员身份运行…