智能车浅谈——17届极速越野篇

文章目录

    • 前言
    • 备赛准备
      • 车模
      • 硬件
      • 软件
    • 整车原理
      • 赛道信息获取及转向原理
        • GPS模块
        • 惯导模块
        • 转向原理
    • 代码部分
        • 惯导数据处理
        • 舵机误差值计算
        • 误差值的PID处理
    • 总结

前言

本期我们就来讲讲关于17届全国大学生智能汽车竞赛极速越野小车,之前智能车系列已经做了一个比较详细的解析,相信大家对如何让小车跑起来,小车如何实现舵机转向已经有了一定的了解,那么话不多说,我们直接从小车模块和运行控制系统开始讲解。

备赛准备

车模

关于车模的机械结构搭建可以去参考往届优秀队伍的技术报告,至于怎么找技术报告,比赛官网有,卓大博客也有。由于今年官方要求极速越野组必须使用L车模,这里我们就用龙邱科技的L车模来给大家展示一下:

智能车浅谈——17届极速越野篇_第1张图片

硬件

主控:越野车今年参赛要求是使用MM32SPN27主板来参赛,所以可以选购龙邱或者逐飞的MM32SPN27母版来作为主控:
电机驱动:对于有刷电机而言,我们可以选择比较常用的DRV8701,BTN7971驱动。无刷的话,从稳定性考虑,建议选择逐飞的无刷驱动和无刷电机。当然市面上也有很多不错的无刷电机,这需要大家自己去寻找了,这里我们建议先使用有刷,等小车成功完赛后再使用无刷提速。
电源:使用3s电池即可,建议使用格氏电池格式航模3s电池。
GPS模块:逐飞的GPS模块是一个不错的选择。
惯导模块:市面上的六轴九轴陀螺仪都可以使用,建议使用维特智能的HWT101陀螺仪,自带角度结算和无漂移,是一个非常不错的选择。

软件

编译环境:Keil uVision5 根据官方要求建议使用5.28及其以上版本。

整车原理

在准备好上面的硬件后,再来理一理整个小车的运行原理,小车要正常行驶在赛道上,必定是需要根据赛道的状态来调整车身的姿态的,那么,小车是怎么来获取赛道信息的呢,又是根据什么来转向的呢?

赛道信息获取及转向原理

GPS模块

越野车是通过GPS模块获取小车的实时位置信息(经纬度),在不同的位置我们可以通过对该位置的信息解析来获取不同的坐标点(经纬度信息),而根据两个不同的坐标点,我们可以得出两个坐标点之间的方位角和距离(注意,这里的角度是关于地球正北方向的角度,也就是0度即为正北方,范围:0~360度且距离的默认单位为m。)。这里我们将跑道的坐标点进行采集并保存起来(如下图,我们采集了8个点,分别为A,B,C,D,E,F,G,H,I,J),接下来我们只需要沿着每个坐标点前进,就可以实现按照跑道进行寻迹了。

智能车浅谈——17届极速越野篇_第2张图片

惯导模块

上面我们提到了小车通过GPS模块可以得到当前小车的位置信息和距离下一个坐标点的距离和角度,但此刻我们并不知道当前的车身姿态,不能确定小车车头的方向,当小车因为一些外部或硬件原因导致的轨迹误差,我们无法及时修正。所以我们需要使用陀螺仪来对小车的姿态进行一个实时的检测。这里我们需要用到的是陀螺仪Z轴航向角,来实现对小车整体的精准控制。我们以HWT101惯导模块为例,上位机软件设置6轴模式(仅6轴模式可进行Z轴置零)后,即可连接主板使用,此时惯导模块获取的角度数据为-180–0|| 0–180,惯导Z轴正方向左边为正,右边为负。上面提到的惯导置零则是改变惯导Z轴的0度位置。

智能车浅谈——17届极速越野篇_第3张图片

转向原理

上面我们已经提到关于GPS模块和惯导模块的信息获取,及其格式。此时我们就需要对获取的信息进行处理最终达到舵机正确打角的目的,第一步,对惯导数据处理使其数据格式和GPS一致,以便后面的数据处理。第二步,求GPS方位角和惯导航向角的差值,得出最后舵机打角的误差值,根据误差值我们可以进行PID处理或者是卡尔曼滤波处理。

代码部分

惯导数据处理

智能车浅谈——17届极速越野篇_第4张图片

舵机误差值计算

智能车浅谈——17届极速越野篇_第5张图片

误差值的PID处理

智能车浅谈——17届极速越野篇_第6张图片

总结

有关越野车的介绍就到此为止了,这篇文章主要是为刚刚接触越野的同学理一理思路,细节还需要去看笔者之前的文章,文章如有不足的地方,欢迎评论区指出,祝大家的小车可以拿到满意的成绩,笔者在评论区等待你们的赛后分享。谢谢大家。

你可能感兴趣的:(c语言)