【第十六届全国大学生智能车竞赛回顾——华东赛区单车拉力组(全国二等奖)】

一.简述

1. 车模介绍

单车拉力组是本届大赛新加入的组别,使用的车模也是新设计的K车模

可能有不少同学看过稚晖君大佬的作品:我把自行车做成了 自 动 驾 驶 !! 抛开AI识别和路径规划等技术,稚晖君在这个作品中设计的自行车主体,是使用动量轮进行的平衡。这种平衡方式比较稳定,可以实现自行车的原地直立,在淘宝的平衡小车之家中也有类似的学习套件。

但是卓大大为了加大本组别的难度,在规则中明确要求了:不允许使用动量轮或质量快等实现平衡。那么,这个小摩托想要实现平衡行进就困难了不少。所以,K车模中并未设计安装额外平衡装置的位置。(具体实现方式后续说明)

★车模设计的后轮固定结构更是有趣,由于制造上的误差,每台车模都有属于自己的特色。电机转动后,车轮或左右晃动,或上下晃动。调平衡难度进一步加大。

上面有关车模设计上的问题,在第一批车模上尤其突出,后面一批车模有一定改善,但仍然存在。(两批车模我都使用过)

2. 单车拉力组规则简介(具体规则参考卓大大的文章,规定使用STC的芯片)

单车拉力组与AI电磁越野组使用的赛道基本类似,只是做了部分简化。包含的元素有,直线、折线弯、十字、坡道、直角弯(直角弯难度较大,在赛区比赛中未添加)。

在各赛区的比赛中,基本都使用了下面这个赛道:(其中,蓝色部分为单车拉力组的实际赛道,灰色部分为原AI电磁越野组赛道,红色线段部分放置了一个坡道,红色圆圈放置锥桶,绿色部分为发车点

4. 小摩托的硬件电路设计

★姿态角的获取采用了龙邱提供的MPU6050+DMP实现。

★为了消除电感值的一些噪声干扰,可以采用滑动平均滤波的方法。

★STC8H系列单片机使用MPU6050获取姿态角时,只有一阶互补滤波有效,二阶互补滤波和卡尔曼滤波会出现延时(严重的阻尼现象),移植的DMP也会有较大的过冲(暂未解决)。因此推荐使用STC16,并直接使用龙邱移植好的未开源DMP库。

★在小摩托本身硬件没有大变动的情况下, 直立环的参数是固定的,调节好后,可以一直保持稳定,不需要经常调。

★虽然舵机对电感值有干扰,但是相对于电感值的变化幅度来说,是可以忽略的。经过测试,电感靠近和远离电磁线时,数值变化的幅度可达2000~3000。而舵机的干扰始终在30以内。经过滤波和归一化后,可以基本消除干扰

★Keil251的编译器经常会出现许多奇奇怪怪的问题。比如:1.写的某些函数会导致程序卡死,无论是否调用;2.某些变量定义的顺序会影响程序的正常运行;3.一条语句中定义多个变量也会影响程序运行;

★★★PID直立环:此环的参数与行驶的速度有很大的关联,因为速度和直立环会同时影响小摩托的平衡。整体来说是:速度越大,直立环的P和D越小。
在保证角度中值准确,速度适当且恒定的前提下:
☆先调节P和D并添加固定的系数I(0.1左右),当小摩托可以简单直立后,增加P和D。
☆如果出现直线行驶时,前轮左右晃动幅度过大的情况,可以降低P,略微增大D;
☆如果用手突然改变前进方向,小摩托出现明显的左右震荡,需要降低D。
☆给与小车一定的倾斜角度,使其绕圈行驶,通过上位机观察。如果实际角度始终与目标角度有较大的误差,需要适当增加I。

★★★模糊P+定值D转向环:这个环主要是通过电感归一化后的值,经过差比和得到的偏差,来计算出需要的倾斜角度,从而实现转弯。实际使用时,定值D比模糊D效果更好,且节省资源。

☆P的模糊表和相应的系数需要自行设计。此环的系数主要通过实际循迹时进行调整。
☆当寻直线时,如果发现小摩托在线上左右摆动,不贴线,可以增加D进行抑制。
☆当发现小摩托转向不灵敏时,可以适当增大P来提高灵敏度。

四.总结

★文章如有错误,欢迎指正。

【第十六届全国大学生智能车竞赛回顾——华东赛区单车拉力组(全国二等奖)】
开源资料链接:第十六届单车拉力组开源资料

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月17日
下一篇 2021年6月17日

相关推荐