9922|9

2万

帖子

340

TA的资源

版主

楼主
 

2020电赛C题解析:99分坡道小车的实现过程 [复制链接]

 
本帖最后由 qwqwqw2088 于 2020-10-30 08:59 编辑

        白天训练,熬夜做题,在TI杯比赛中拿到99分(满分120分),来自西安某工程大学某学院的C题参赛队伍(党旭东 谢斌 李文齐)分享了他们的参赛过程、C题的总结以及他们小车的代码。

我们的小车在测试过程中,得分99分,很遗憾因为扣了一分所以没法继续进行剩下20分的附加题。我们的小车设计加了一个旋翼上用的螺旋桨,结果听说有个大佬更绝,直接用涵道做了可以吸顶的车,属实佩服。


01
先给大家说说我们作品的实现过程:

硬件部分:小车使用MSP430F149作为主控核心,由其输出两路PWM波分别控制左右两个后轮的减速电机,同时进行前轮编码器的正交解码、车顶下压风扇的控制、三个前置光电对管的采样、与车前OPENMV进行通讯(备选方案未使用)。

前轮被动差速与2048线编码器
        小车使用恩智浦杯比赛车队用过的B车模和两个减速电机制成的底盘,整车投影短而宽,我们认为这样能够更加稳地抓地和转向,同时B车模自带被动差速连接编码器可使得小车测速精准不受转向和打滑的影响。车中部是一组3S3300mah的航模动力电池作为整车电源,其输出分别接入双路H桥电机驱动模块、DC-DC稳压模块、无刷电机电调(串继电器),其中DC-DC稳压模块输出5V分别向MSP430、OPENMV、继电器、编码器、光电对管供电。在车的前部装了100g的配重块,因为我们在最后一天联调时发现小车爬50度坡时会翘头,所以加装配重块并控制在了1.49kg(要求不超过1.5kg)。

                                                  

        软件部分:由于我一直用的都是STM32+HAL库+freeRTOS做一些小项目,这个MSP430F149是之前一时兴起买来玩的(没有stm32香所以就吃灰了,结果比赛又翻出来)。之前刚入手的时候就是尝试了定时器中断控制流水灯,所以比赛第一天我都拿来学MSP430了,在三天内逐步实现了GPIO控制、编码器正交解码、PWM输出、定时器中断主程序循环、串口通信、SPI屏幕显示等等。
        第二天,做硬件的队友也制作出了差速模型和阿克曼舵机转向单电机模型,我们选定了差速模型后便开始调速度PID,因为我们的编码器装在前轮所以测速精确,于是打算使用控制速度的方式来控制最终的到达时间,为了方便调试我写了一个简单的界面,利用MSP430上自带的两个按钮和前轮编码器进行调参,在调好了速度PID后小车已经可以在各种平面保持匀速了,并且通过PID中积分项还可以达到很好的打滑后的补偿效果。


在前期版本中,老师建议我们使用openmv,所以我写了openmv的巡线程序并且通过串口和MSP430通信,实测效果良好,就是可惜位置太靠前导致转向过于提前,所以后来我们换了三个光电对管的方案。在算法的优化以及PI控制下,可以实现平滑巡线和出线的自恢复效果,可以稳定完成45度不压线爬坡和50度压线爬坡,在发车两秒左右启动无刷风扇进行下压,风压力大概在200g,完成比赛的时间误差控制在0.1s左右。

蜂鸣器和三个光电对管循迹模块
如何启动下压增强无刷风扇?
使用航模电调,需要在第一次使用时完成油门校准,其后每次启动需要保证其在上电前输入5%占空比的PWM波,所以我们使用单片机控制5v继电器控制12v继电器来启动电调,实测效果良好,启动延时和警示可以提醒我们在电调带电时远离螺旋桨。下压风力大约200g还是略微令人失望的,不过在风扇开启后能明显发现小车在爬45度的坡时不打滑了。

前轮编码器的使用:在研究了题目后,发现其时间控制精度要求在1s内,所以我们设计了后轮差速驱动,前轮测速的方案,并且使用了2048线高精度AB相编码器,为精确控制速度打下了良好的基础。
在测试了5组时间后,进行4参数曲线拟合发现拟合度在0.998,可以说PID发挥了重要的作用。程序在上电后默认是设置调参界面,按下第一项后才是运行模式,所以我把设置模式时的编码器用来调参,发现效果十分好,在此强烈向大家推荐这种小车调参方法!


光电对管算法:和我们一起做c题的另外一组一开始就使用了光电对管方案,但是他们用了九个光电对管,十分有排面,但是我考虑了一下(懒),还是使用了3个光电对管的方案。
在程序中虚拟了一个offset变量,中间检测到线时赋0,左边-100,右边100,然后用这个当作误差来进行PI转向控制,实测P参数可以将车保持居中,I参数可以在小车出线后加速回转来重新找到线,效果比OPENMV方案要好很多。

此帖出自电子竞赛论坛

最新回复

[attach]718307[/attach]   这真是我见过最生猛的代码,估计为了联调很多东西都写在一个文件里了,要是我的话,会分模块,定义头文件,全部封装起来   详情 回复 发表于 2023-7-27 11:38
点赞(1) 关注(1)
 
 

回复
举报

2万

帖子

340

TA的资源

版主

沙发
 
本帖最后由 qwqwqw2088 于 2020-10-30 08:48 编辑

再分享下我们小车的前期方案论证:

02

      小车主要由控制模块,电源模块,电机驱动模块,光电对管模块和显示模块等组成,下面分别论证这几个模块的选择。
1)控制模块的选择:我们现有的MSP430模块有中景园MSP430F149和Launchpad-MSP430G2,综合对比两种主控芯片,由于中景园MSP430F149设计更加便于操作连接,并且有可以直接使用的屏幕排线接口,最终我们选择使用中景园的主控芯片。
2)电源以及稳压模块:2S电池虽常见且重量小,但电池输出电压不高,提供的动力不是特别足,并且续航效果不够好。如果用18650电池自组电源配合稳压模块,优点是灵活程度高,电压大小以及续航效果都可以自己调节。但18650电池自组电源能量密度不如2S电池和3S电池。


      所以最后采用一块3S电池作为电源,配合稳压模块输出稳定的直流电源。该方案优点是电压大,并且航模用3S电池可输出电流高,可以提供很大的动力,续航效果好于2S电池。缺点是3S电池重量比2S电池重,可能会导致小车负重大甚至超出负重限制。
3)电机驱动模块:采用差速控制方式进行转向,区别在于前轮使用机械差速齿轮,后轮采用减速电机的二驱控制方式。该方案优点在于减速电机体积小,转速快,功耗低,噪声小。并且差速控制转向的转向角可以很小,甚至原地转向,后轮采用减速电机控制可以比较容易实现题目停在标定点的要求;缺点在于后轮差速控制时小车会产生机械抖动,对程序控制要求较高。


4)循迹模块:使用多个光电对管安装于车头部分,这种方法优点是操作简单,对于标记线黑白间隔的高低电平变化明显、灵敏,缺点是在识别标记线的过程中,光电对管相互之间会有一定的干扰,而且光电对管安装高度与地面的距离有比较严格的要求。
也有考虑用OpenMV进行循迹,OpenMV不易判断循迹结束的标志,容易将结束标识(标定点)识别为另一个方向上的标定线从而导致不停车,在使用OpenMV时,车头相邻处的标定线不容易识别,所以被抛弃了。

此帖出自电子竞赛论坛
 
 
 

2万

帖子

340

TA的资源

版主

板凳
 

03
比赛心得:

经过四天三夜的努力,最终按照要求实现题目所有功能并实现优化与创新。
        在此次系统的设计和实现当中,小组数次陷入困境,尤其是PID调节和差速控制转向方面,由于题目要求转弯半径并不确定,所以在PID调节上遇到了不小的困难。大家通过查阅资料,恶补理论上的不足最终将误差控制在了比较理想的范围内。
在进行角度测试的时候,由于题目要求不得使用履带小车以及带刺轮胎,轮胎的材质应当是橡胶或者塑料等柔性材料并且不能涂抹粘性物质,所以在测试的时候,为了克服轮胎的打滑现象,我们进行了更换轮胎,使用不同直径轮胎,使用宽轮胎等一系列尝试,最终确定了一个比较合适的方案,圆满完成了题目要求。
        最终的联调过程中,由于大家分工不同,代码组合的难度超乎寻常的高,但是最终通过一个通宵的努力,我们还是克服了这一系列困难。通过这次的比赛,我们小组深刻体会到了队员之间交流和默契配合以及团队精神的重要性,如果相互之间没有配合,不交流,即使自己能力很强,完成该任务也不是一件简单的事情;如果没有团队精神,贪图安逸,最终得到的结果也不一定是自己满意的结果。

此帖出自电子竞赛论坛
 
 
 

2万

帖子

340

TA的资源

版主

4
 

小车的代码

climbCar-master.zip (603.88 KB, 下载次数: 84)

 

此帖出自电子竞赛论坛
 
 
 

回复

1万

帖子

2853

TA的资源

管理员

5
 

这个很赞啊。谢谢分享

此帖出自电子竞赛论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

1662

帖子

0

TA的资源

五彩晶圆(初级)

6
 

看着这些用飞线和轧带捆起来的小车,真担心跑起来突然那里出点故障就失控了

此帖出自电子竞赛论坛

点评

担心有点道理 但把电路做好,要提前验证试验的  详情 回复 发表于 2021-3-18 14:08
 
 
 

回复

2万

帖子

340

TA的资源

版主

7
 
se7ens 发表于 2021-3-18 13:34 看着这些用飞线和轧带捆起来的小车,真担心跑起来突然那里出点故障就失控了

担心有点道理

但把电路做好,要提前验证试验的

此帖出自电子竞赛论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢分享
此帖出自电子竞赛论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 

厉害

此帖出自电子竞赛论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 

楼主,编码器的A相,B相怎么设置的啊?怎么得到速度的?

此帖出自电子竞赛论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

11
 

很好的资料,非常感谢分享,楼主辛苦了,很受用!

此帖出自电子竞赛论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

12
 

 

这真是我见过最生猛的代码,估计为了联调很多东西都写在一个文件里了,要是我的话,会分模块,定义头文件,全部封装起来

此帖出自电子竞赛论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表