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

前言

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

这次带来的是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题-小车跟随系统

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode做题笔记83删除排序链表中的重复元素

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 输入:head [1,1,2] 输出:[1,2] 思路一:模拟题意 struct ListNode* deleteDuplicates(struct ListNode* head){i…

如何使用Python编写小游戏?

大家好,我是沐尘而生,如果你是一个热爱编程的小伙伴,又想尝试游戏开发,那么这篇文章一定能满足你的好奇心。不废话,让我们马上进入Python游戏开发的精彩世界吧! Python游戏开发的魅力 编写小游戏不仅仅是锻…

力扣:63. 不同路径 II(Python3)

题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那么从…

基于深度学习的指针式仪表倾斜校正方法——论文解读

中文论文题目:基于深度学习的指针式仪表倾斜校正方法 英文论文题目:Tilt Correction Method of Pointer Meter Based on Deep Learning 周登科、杨颖、朱杰、王库.基于深度学习的指针式仪表倾斜校正方法[J].计算机辅助设计与图形学学报, 2020, 32(12):9.DOI:10.3724…

[自学记录06|*百人计划]Gamma矫正与线性工作流

一、前言 Gamma矫正其实也属于我前面落下的一块内容,打算把它补上,其它的没补是因为我之前写的GAMES101笔记里已经涵盖了,而Gamma矫正在101里面确实没提到,于是打算把它补上,这块内容并不难,但是想通透的理…

使用 wxPython和ECharts生成和保存HTML图表

使用wxPython和ECharts库来生成和保存HTML图表。wxPython是一个基于wxWidgets的Python GUI库,而ECharts是一个用于数据可视化的JavaScript库。 C:\pythoncode\blog\echartshow.py 参考网址:https://echarts.apache.org/v4/examples/zh/index.html 安装…

2023最新水果编曲软件FL Studio 21.1.0.3267音频工作站电脑参考配置单及系统配置要求

音乐在人们心中的地位日益增高,近几年音乐选秀的节目更是层出不穷,喜爱音乐,创作音乐的朋友们也是越来越多,音乐的类型有很多,好比古典,流行,摇滚等等。对新手友好程度基本上在首位,…

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序…

解决内网GitLab 社区版 15.11.13项目拉取失败

问题描述 GitLab 社区版 发布不久,搭建在内网拉取项目报错,可能提示 unable to access https://github.comxxxxxxxxxxx: Failed to connect to xxxxxxxxxxxxxGit clone error - Invalid argument error:14077438:SSL routines:SSL23_GET_S 15.11.13ht…

ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) 二、CVE-2017-15031 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) Title 未初始化或保存/恢复PMCR_EL0可能会泄露安全世界的时间信息 CVE ID CVE-2017-1503…

支持https访问

文章目录 1. 打开自己的云服务器的 80 和 443 端口2. 安装 nginx3. 安装 snapd4. 安装 certbot5. 生成证书6. 拷贝生成的证书到项目工作目录7. 修改 main.go 程序如下8. 编译程序9. 启动程序10. 使用 https 和端口 8081 访问页面成功11. 下面修改程序,支持 https 和…

Rust软件外包开发语言的特点

Rust 是一种系统级编程语言,强调性能、安全性和并发性的编程语言,适用于广泛的应用领域,特别是那些需要高度可靠性和高性能的场景。下面和大家分享 Rust 语言的一些主要特点以及适用的场合,希望对大家有所帮助。北京木奇移动技术有…

分布式 - 消息队列Kafka:Kafka 消费者的消费位移

文章目录 01. Kafka 分区位移02. Kafka 消费位移03. kafka 消费位移的作用04. Kafka 消费位移的提交05. kafka 消费位移的存储位置06. Kafka 消费位移与消费者提交的位移07. kafka 消费位移的提交时机08. Kafka 维护消费状态跟踪的方法 01. Kafka 分区位移 对于Kafka中的分区而…

Linux系统安装Google Chrome

1.进入谷歌浏览器官网 Google Chrome - Download the Fast, Secure Browser from GoogleGet more done with the new Google Chrome. A more simple, secure, and faster web browser than ever, with Google’s smarts built-in. Download now.http://www.google.cn/intl/en_…

rust入门系列之Rust介绍及开发环境搭建

Rust教程 Rust基本介绍 网站: https://www.rust-lang.org/ rust是什么 开发rust语言的初衷是: 在软件发展速度跟不上硬件发展速度,无法在语言层面充分的利用硬件多核cpu不断提升的性能和 在系统界别软件开发上,C出生比较早,内…

零售行业供应链管理核心KPI指标(三)

完美订单满足率和退货率 完美订单满足率有三个方面的因素影响:订单按时、足量、无损交货。通常情况下零售企业追求线上订单履行周期慢慢达到行业平均水平,就是交付的速度变快了,这个肯定是一件好事情,趋势越来越好。 同时&#…

周期 角频率 频率 振幅 初相角

周期 角频率 频率 振幅 初相角 当我们谈论傅里叶级数或波形分析时,以下术语经常出现: 周期 T T T: 函数在其图形上重复的时间或空间的长度。周期的倒数是频率。 频率 f f f: 周期的倒数,即一秒内波形重复的次数。单位通常为赫兹&#xff…

【NLP】训练LLM的不同方式

一、说明 在大型语言模型(LLM)领域,有各种各样的 训练机制,具有不同的手段,要求和目标。由于它们服务于不同的目的,因此重要的是不要将它们相互混淆,并了解它们适用的不同场景。 在本文中&#…

JavaWeb-Listener监听器

目录 监听器Listener 1.功能 2.监听器分类 3.监听器的配置 4.ServletContext监听 5.HttpSession监听 6.ServletRequest监听 监听器Listener 1.功能 用于监听域对象ServletContext、HttpSession和ServletRequest的创建,与销毁事件监听一个对象的事件&#x…

智能数据建模软件DTEmpower 2023R2新版本功能介绍

DTEmpower是由天洑软件自主研发的一款通用的智能数据建模软件,致力于帮助工程师及工科专业学生,利用工业领域中的仿真、试验、测量等各类数据进行挖掘分析,建立高质量的数据模型,实现快速设计评估、实时仿真预测、系统参数预警、设…