2020年全国大学生电子设计大赛C题----OpenMV线性回归巡线小车(MSP430F5529)(有代码)

文章目录

  • 前言
  • 一、比赛题目的具体要求
  • 二、各个部分的具体分析
    • 1.循迹部分
    • 2.定时部分
    • 3.自适应坡度的部分


前言

去年因为个人赛前没有准备MSP430F5529的部分,导致我在看到C题规定要用430/432作为主控的要求时,本能的有一些恐惧,所以最后就没有选择做C题,转去做F题了,算是一个遗憾吧。今年电赛的赛前准备时间,第一个想到的就是去把这道题做了,发现确实是可以做完的,没有我想象得那么难。

先看一下我们的调试视频(注:视频中没有加上定时部分,后面解释原因):

2020年全国大学生电子设计大赛C题

一、比赛题目的具体要求

2020年全国大学生电子设计大赛C题----OpenMV线性回归巡线小车(MSP430F5529)(有代码)_第1张图片
2020年全国大学生电子设计大赛C题----OpenMV线性回归巡线小车(MSP430F5529)(有代码)_第2张图片

这个比赛的要求简单得来说就是要求小车能够后沿着网格线在规定的时间到达终点并停止下来,其中时间误差不能超过1S,距离误差不能超过2cm.

从第二个图中的具体要求中又可以提炼出完成这个的题三个具体任务:
1、能够实现循迹
2、能够实现定时
3、能够适应任意坡度的赛道
后面将从这三个部分具体分析。

二、各个部分的具体分析

1.循迹部分

循迹部分我们觉得首选方案应该是用光电传感器,因为光电传感器可以返回数字量读熟稳定,同时光电传感器对环境的适应性更强。但是为了挑战一下自己我们选择了之前没有做过的OpenMV做为循迹的传感器。
利用Openmv自带的例程进行稍微的改进,我们可以很简单得识别出赛道,如下图:

2020年全国大学生电子设计大赛C题----OpenMV线性回归巡线小车(MSP430F5529)(有代码)_第3张图片
2020年全国大学生电子设计大赛C题----OpenMV线性回归巡线小车(MSP430F5529)(有代码)_第4张图片
利用斜线部分分析:因为OpenMV可以返回出斜线的两个顶点的坐标(X1,Y1)、(X2,Y2),于是就可以利用这两个坐标构成反馈,进而利用PID进行调节。

位置环PID:利用两端点坐标找出直线中点的横坐标并返回给单片机,以像素的中点的横坐标为目标值构成反馈

转向环PID:利用两端点坐标可以很容以算出斜线的斜率,进而推断出斜线的倾斜角,以90度为目标值构成反馈

OpenMV程序可以在下面链接下载:
OpenMV线性回归

2.定时部分

2020年全国大学生电子设计大赛C题----OpenMV线性回归巡线小车(MSP430F5529)(有代码)_第5张图片
因为轨道的总长度是确定的,即是:路程确定,所以要实现定时实际上是能够完成速度的自设定,找到时间和速度的关系,当设定的时间确定时,就确定了速度,这样就可以保证小车在规定的时间行驶到终点。
由于这次我们的小车是在程序设计之前搭好的,所以我们就没有考虑电机是否需要带上编码器,最后因为无法测速,所以这部分就没有做了

3.自适应坡度的部分

2020年全国大学生电子设计大赛C题----OpenMV线性回归巡线小车(MSP430F5529)(有代码)_第6张图片
作为这道题最大的一个难点恐怕就是匀速爬坡了。因为在垂直上坡时,重力作为阻力作用在小车竖直方向,对小车的速度有着直接的影响;但是在坡上横向行驶时,重力作为阻力作用在小车的横向,对小车的速度没有影响。这样就导致了如果单片机给一个恒定的PWM波时会导致小车在爬坡时速度较慢,在横向行驶时速度较快,而且不同坡度对小车的影响不一样,这时候不管是定时还是循迹都会受到影响。

这时最好的解决方法是:构成速度闭环,进行实时的速度调节,保证速度恒定在目标值。这样当坡度较大时,转速降低时,因为反馈,单片机输出更大的占空比的PWM,从而使输出功率增大来抵消重力的影响;坡度较小时同理。

如果有同学需要代码,可以在下面链接下载:OpenMV线性回归小车代码

你可能感兴趣的:(单片机,目标跟踪)