2022电赛省一-小车跟随行驶系统(C题)


⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大二学生。
⏩前段时间参加了电赛的校赛、七校联赛和省赛,校赛和七校联赛都获得了三等奖,省赛上也是获得了一等奖的好成绩,本篇文章省赛做一个简单的总结。
⏩最近在学ros操作系统和tensorflow机器学习 。
⏩感谢你的阅读,不对的地方欢迎指正。
代码:
链接:https://pan.baidu.com/s/1vpK9hP-YOM9UhIMinyQH3A?pwd=6666
提取码:6666

一.题目

2022年TI杯大学生电子设计竞赛
小车跟随行驶系统(C题)
一、任务
设计一套小车跟随行驶系统,采用TI的MCU,由一辆领头小车和一辆跟随小车组成,要求小车具有循迹功能,且速度在0.3 ~ 1m/s可调,能在指定路径上完成行驶操作,行驶场地的路径如图1 所示。其中,路径上的A点为领头小车每次行驶的起始点和终点。当小车完成一次行驶到达终点,领头小车和跟随小车要发出声音提示。领头小车和跟随小车既可以沿着ABFDE圆角矩形( 简称为内圈 )路径行驶,也可以沿着ABCDE的圆角矩形( 简称为外圈 )路径行驶。当行驶在内圈BFD段时,小车要发出灯光指示。此外,在测试过程中,可以在路径上E点所在边的直线区域,由测试专家指定位置放上“等停指示”标识(见图1左侧),指示领头小车在此处须停车,等待5秒后再继续行驶。

2022电赛省一-小车跟随行驶系统(C题)_第1张图片

二、要求
1. 将领头小车放在路径的起始位置A点,跟随小车放在其后20cm处,设定领头小车速度为0.3m/s,沿着外圈路径行驶一圈停止,要求:(20分)
(1) 领头小车的平均速度误差不大于10%;
(2) 跟随小车能跟随领头小车行驶,全程不能发生小车碰撞;
(3) 完成一圈行驶后领头小车到达A点处停车,跟随小车应及时停止,停止时间差不超过1s,且与领头小车的间距为20cm,误差不大于6cm。
2. 将领小车放在路径轨迹的起始位置A点,跟随小车放在路径上E点所在边的直线区域,由测试专家指定的位置,设定领头小车速度为0.5m/s,沿着外圈路径行驶两圈停止,要求:(20分)
(1) 领头小车的平均速度误差不大于10%;
(2) 跟随小车能快速追上领头小车,然后按20cm间距跟随领头小车行驶,全程不能发生小车碰撞:
(3) 完成两圈行驶后领头小车达到A点停止,跟随小车应及时停止,两车停止的时间差不超过1s,且与领头小车的间距为20cm,误差不大于6cm。
3. 将领头小车放在路径的起始位置A点,跟随小车放在其后20cm处,领头小车和跟随小车连续完成三圈路径的行驶。第一圈领头小车和跟随小车都沿着外圈路径行驶。第二圈领头小车沿着外圈路径行驶,跟随小车沿着内圈路径行驶,实现超车领跑。第三圈跟随小车沿着外圈路径行驶,领头小车沿着内圈路径行驶,实现反超和再次领跑。要求:(30分)
(1) 全程两个小车行驶平稳,顺利完成两次超车,且不能发生小车碰撞;
(2) 完成三圈行驶后领头小车到达A点停止,跟随小车应及时停止,两车停止的时间差不超过1s,且与领头小车的间距为20cm,误差不大于6cm;
(3) 小车行驶速度可自主设定,但不得低于0.3m/s,且完成所规定的三圈轨迹行驶所需时间越短越好。
4. 由测试专家在路径的E点所在边的直线区域指定位置,放上“等停指示”标识。然后,将领头小车放在路径的起始位置A点,跟随小车放在其后20cm处,设定领头小车速度为1m/s,沿着外圈路径行驶一圈,行驶中两小车不得发生碰闯。要求:(20分)
(1) 领头小车的平均速度误差不大于10%;
(2) 领头小车达到“等停指示”点停车,停车位置准确,误差不大于5cm;
(3) 在“等停指示”处停车时间为5s,误差不超过1s。
5. 其他。(10分)
6. 设计报告。(20分)

三、说明

  1. 作品中的小车中尺寸不大于15cm(宽) 25cm(长)。小车尺寸包括小车本体、以及小车所安装的传感器等总体的尺寸大小。
  2. 行驶场地上铺设白纸,行驶路径用1cm宽的黑色引导线来标志,可以印刷或打印在白纸上,也可以用黑色胶带纸直接粘贴在白纸上。轨迹上的起始点A,用垂直贴在路径引导线的黑色标志线来标记,标志线为2cm宽、5cm长。“等停指示”用间隔5cm的两条2cm宽、10cm长的黑色平行标志线来标记,可以事先在一张小的纸片上打印好,测试时对接粘贴在行驶路径的引导线上即可。除题目要求的标记之外,行驶场地上不得有其他任何指示标记。
  3. 跟随小车的行驶完全由领头小车指挥控制,领头小车上有启动按键和设置按键,而跟随小车只有一个上电开关,不得有其他启动和操作按键。每一次行驶发车时,领头小车和跟随小车按照题目要求摆放在行驶路径的指定位置,跟随小车上电,处于等待接收领头小车指令的状态。领头小车一键启动行驶,直到整个行驶过程结束。
  4. 在两个小车跟随行驶过程中,除了两个小车间的相互通信外,不得有车外遥控和其他通信指令辅助。
  5. 在本题目要求4中,领头小车遇到“等停指示”需立即停车,停车后车身应在“等停指示”第二条横线以内,车头超出第二条横线的距离为停车位置误差。
  6. 为了便于测试,允许在制作行驶场地时,在路径的E点和A点的旁边画上刻度尺,如图2所示。
    2022电赛省一-小车跟随行驶系统(C题)_第2张图片

二.测试成果

完成题目前一二三问,速度控制准确

2.1 第一问:

主车停车时间:20.?s
从车停车时间20.?s(具体时间忘了【狗头保命】)
无碰撞
停车距离:21cm

2.2 第二问:

主车停车时间:23.?s
从车停车时间24.?s(具体时间忘了【狗头保命】)
无碰撞
停车距离:20.?cm

2.3 第三问:

主车停车时间:58.?s
从车停车时间58.?s(具体时间忘了【狗头保命】)、
在拐弯超车后有一点小刮蹭
停车距离:21.?cm

2.4 总结

根据赛道6m,算出0.3m/s的速度走外圈,标准时间是6/0.3 = 20s
以0.5m/s的速度走外圈,标准时间是6/0.5 = 12s
我们组的测试结果除了第三问有一点点小刮蹭其他全部完成
最后也是出乎意料的获得了一等奖

三.系统方案

3.1 小车跟随行驶的设计方案

整个系统分为主控模块、电机驱动模块、蓝牙通信模块、循迹模块、距离检测模块、电源模块、人机交互模块等组成。各模块的系统框图如图 1 所示。2022电赛省一-小车跟随行驶系统(C题)_第3张图片
两车之间通过蓝牙模块进行通信,主车(前车)启动时向副车发送数据包,副 车(后车)接受到数据包时驱动启动电机,两车同时开始运动。中途当主车的灰度传感器检测到停止线时立即停止,并向副车发送数据包,副车收到数据包,判断后立即停止。两车之间根据超声波测距模块返回的距离来调整速度的大小,进而调整跟随的距离。

3.2 模块选择

本系统主要由主控模块、电机驱动模块、显示模块、循迹模块、通信模块组成,
主控模块: stm32f103zt6开发板作
电机驱动模块: TB6600驱动器驱动42型二相步进电机
显示模块: 0.96寸OLED
循迹模块: 五路灰度传感器
通信模块: HC-05蓝牙模块
本来还有测距模块的,后面去掉了,原因后面说

四.程序设计

4.1 程序功能描述

根据设计要求,软件部分主要实现电机控制、自反馈循迹算法、小车间蓝牙通信、超声波距离监控、跟随行驶控制、人机交互与显示等功能。
(1) 电机控制部分:使用 PWM 输出方波,控制四相步进电机顺时针转动,当占空比为 0 时,步进电机停止转动。
(2) 自反馈循迹算法部分:通过五路灰度传感器控制小车运动的方向与循迹(3) 小车间蓝牙通信部分:实现两车间同步启停与通信
(4) 超声波距离监控部分:实时监控两车间的距离
(5) 跟随行驶控制部分:根据通信信号与距离控制小车的速度运动
(6) 人机交互与显示部分:显示速度、距离和模式等信息,按键选择运动模式

4.2 程序设计思路

(1) 电机控制部分:使用 PWM 输出方波,控制四相步进电机顺时针转动,当占空比为 0 时,步进电机停止转动。
(2) 自反馈循迹算法部分:当五路灰度最中间的传感器检测到黑线时,向右转,此时左边的轮子前进,右边轮子不动,超出黑线区域后,向左转,此时左边轮子不动,右边轮子前进,又回到黑线区域,如此往复。
(3) 小车间蓝牙通信部分:在自动连接工作模式下,主车为主角色,副车为从角色,进行通信。主车(前车)启动时向副车发送数据包,副车(后车)接受到数据包时驱动启动电机,两车同时开始运动。当主车的灰度传感器检测到停止线时立即停止,并向副车发送数据包,副车收到数据包后立即停
止。
(4) 超声波距离监控部分:首先给超声波模块输入高脉冲,发出 8 个 40KHz的方波,然后再遇到障碍物通过 ECHO 给单片机返回一个高电平,从触发 HC-SR04 工作开始计时,到 ECHO 返回高电平停止计时,根据这段时间与声音在空气中传播速度公式即可算出距离 s。
(5) 跟随行驶控制部分:从车收到主车启动信号时启动,超声波测距模块通过时间差测距法得出两车距离,从而反馈给主控系统进行相应速度控制,当两车距离大于上限阈值时后车加速,小于下限阈值时后车减速,从而实现距离控制。从车收到主车停止信号时制动停止。
(6) 人机交互与显示部分:主车打印当前速度、距离和模式等信息到 OLED屏幕上,两个按键按下时分别执行“下一步”与“确定”操作。共有 4 个运动模式,分别用来完成 4 道题目的要求。

五.比赛经历以及比赛分析

5.1 题目难点分析和方案选择

我们组在早上讨论好之后决定用灰度、超声波、直流电机来完成这道题,一开始想确实非常简单。
主要就分成了双车通信、循迹、测距和调试这几个难点。
我们一开始想的是灰度循迹、超声波控制距离、蓝牙控制从车跑,最后再调试就ok了,事实证明我们想的太简单了。

5.1 搞定双蓝牙通信

要求:跟随小车的行驶完全由领头小车指挥控制,领头小车上有启动按键和设置按键,而跟随小车只有一个上电开关,不得有其他启动和操作按键。每一次行驶发车时,领头小车和跟随小车按照题目要求摆放在行驶路径的指定位置,跟随小车上电,处于等待接收领头小车指令的状态。领头小车一键启动行驶,直到整个行驶过程结束。
实现:我们给两个车装上蓝牙互相绑定,我们用按键控制主车的模式,主车开始跑模式一,从车也跑模式一,主车跑模式二从车也跑模式二,也就是从车只接受主车的模式命令。
第一天上午我就把这个搞好了,因为前面两次电赛都用到了蓝牙模块,所以这个也是没有花多长时间的。
如果需要程序文章开头自提

5.2 循迹

循迹是我们队长做的,他试过很多方法,一开始用五路灰度,写PID去跑它,结果没有成功,因为它的线太窄了,它很容易就跑出去了。
然后我们队长再加上了一个五路灰度,继续调,调了很长时间也没有成功。
我们队长佣金所用方法,甚至把直流电机换成了步进电机。。。
其他队伍也是试了很多方法都没有成功,差点就准备用摄像头了。。。
一直拖到第二天下午、、、、
大家开始摆烂,准备结束这个可恶的比赛。。。
第三天早上我们听到老师们的建议,使用了一路灰度循迹,额贼,没想到居然成功了,而且效果非常非常好,然后我们开始打起精神,继续战斗哈哈哈哈哈。
直到晚上我们用的步进电机搭好了两辆车,并且完成了它们的通信和循迹。

5.3 最后二十个小时的调试

记得非常清楚,当时0点了,我们开始了最后的调试。
在别人都睡了,都开始放送了的时候,我们队三个人一起调试,调代码。
当时也是遇到了其他队遇到的问题,用了超声波模块的话,它的采样时间很长,大概50ms,和灰度传感器的几微妙差距非常大,只要他一采样,车就很容易跑偏,我们想了很多方法,比如间隔的测距、或者测距的时候停下来等等方法,最后我们弃用了超声波,我们想的是用的步进电机,可以直接调好速度控制时间,简单点说就是硬调。
直到早上7点,我们调好了第一题跑的非常好,停的也非常准,可惜没有录视频。
这个点我们休息了两个小时,然后继续战斗。
我也忘了一些细节了,因为当时脑子确实很乱,一直在调。
到了下午四五点已经调的差不多了,前三个题目都能跑了,
6点我们已经准备打胶封箱了,然后给电池充电。
最后小心翼翼的去交上我们的作品。

六.总结

一开始想着能拿个奖就不错了,没想到混了省一哈哈哈哈哈哈,真的出乎意料。
还是比较感谢队友,最后的搭车和调试都在一起做的,20个小时就休息了两个小时,尤其是我们队长,前面也一直在熬夜。
还是遇到了很多的困难的,但是最后都解决了,最后搭车非常简单,只用了板子、电机、蓝牙和OLED,结构算是非常的简单了。
我们一开始循迹寻不好,后来控制不了距离,调试非常的辛苦,搞得我好几天腰酸背痛(缺少锻炼。。。)。
本次电赛省赛收获还是比较多的,我们经历了两个周的备赛(我去实习了一个周【狗头保命】),四天三夜的折磨(下次绝对不参加了),最终取得了好成绩嘿嘿。
如果对源码有需要,或者是双蓝牙通信的代码文章开头自提。

你可能感兴趣的:(比赛经历,单片机,嵌入式硬件)