一.对于工训赛的见解
相信很多小伙伴在大学中对于一些智能车的比赛很了解,这个工训赛也是其中之一,难度系数也还是挺高的,特别是像我一个仅仅刚上大二没有什么比赛经验的来说更是这样,突然接到这个比赛一时间还有一种无从下手的感觉,其实这个时候不要觉得自己就做不了,因为,就算是一个很有经验的学长或者其他对于这些方面很有造诣的人遇到一个新项目也会从新去找思路,不难发现在慢慢去熟悉这个比赛或者项目时会发现有很多原理性的问题都是以前接触过或者用过的,只是使用的角度不一样而已。所以,当大家看到我这篇文章的时候希望你们能相信自己能很好完成这个项目,不要开始就认为它很难。
二.对于赛道整体任务的理解
1.首先是给大家这个比赛的赛道,可能近年赛道是会有些变化的,但是基本用到的东西还是一样,所以可以先按这个去分析就可以了。
如上的比赛赛道可以看到,我们的智能车要从蓝区(出发区)开始向二维码版方向去扫描二维码,二维码信息就是第一次抓的顺序加第二次抓的顺序,这里,我举例我扫到的数为321123,也就是321+123,这时,我们得到抓取顺序就要将其显示到我们智能车的OLED(其他的显示期间也可以)上,我要显示的也就是321+123,然后再显示的同时我们要让车跑的原料区,按321的顺序(这里的数字代表物料颜色,可以根据比赛要求去11对应)去抓取物料将其放到车身上放置物料的地方,放置妥当完成就跑到粗加工区,按照颜色将物料放置到粗加工去,此时,裁判会根据放置距离中心的误差给出成绩,随后,放置完会在将其按第一次的顺序夹起物料放到放到车身,在跑的半成品区重复粗加工区的操作,然后,小车继续跑到原料区,去夹取底层的物料重复第一次的操作,当小车将第二次的物料运送到半成品区,最后跑到返回取。比赛结束。
三.模块采用方案
1.主控芯片
我采用的主控芯片是STM32F4的一款芯片,用它作为主控芯片的目的是由于它相较于其他芯片比较稳定并且价格也适中,所以成为首选芯片。并且开发也用库函数开发,减小了开发难度。
2.光敏模块
这个模块是为了检测赛场的黑线的,用这个可以确定小车的大概位置,或者去纠正小车位置,比如可以遇见黑线就定义一个变量加1,最后根据变量的值去确定小车位置。
3.陀螺仪模块
这个模块想必大家都有所耳闻,或者用它做过一些东西,将它加在车上并且与STM32通信,它可以实时返回小车的实时姿态,像是小车在平面上运动时,它的偏航角是很重要的,也就是下图中的摆动平面,我们通过得到的现在小车处在的角度上通过PID算法处理,通过STM32输出处理过的数据对应的PWM再到小车的四个轮子上,这样就可以很好地让小车跑的很直,不会使小车随着时间变化就跑歪。这里陀螺仪的其他返回值也可以应用,只是大多是用于联级PID上。
4.麦克纳姆轮
选择这种轮其实是由于它与其他轮比起来更灵活,最突出的是它可以使小车横着运动,这也使比赛时走的路线更灵活,可以自行规划出最好的运动路线。
5.视觉模块
这里视觉模块的选择其实有两类一个是K210,另一个是OpenMV,这两个模块各有优势但是相差不太大,只是K210在用的时候可能更方便一些。用视觉模块的作用是既可以识别物料颜色还可以使的它通过一些计算操作机械臂使物料放置更精准,还可以用它与STM32进行串口通信很方便。还有就是开头的二维码扫描得到物料顺序也依靠它完成,当然扫码也可以用一个专门的扫码模块,因为视觉模块在机械臂上,想要去扫码必须要使机械臂摆到准确的位置,然后在夹取物料时还要摆到夹取物料的位置,这样如果扫码之后机械臂位置处理不当会使后续夹取物料出现问题。
6.舵机控制模块和机械臂组
这里如果想要更容易控制机械臂做出准确的动作,建议是用一些偏贵一些的控制板,这样就可以在电脑上相当于图形化的去记住全部机械臂的动作组,这样就减轻了主控板的代码量和运算,但是也不是非要用贵一些的,如果用普通的I2C通信的舵机控制板也可以达到一样的效果,只是你靠一次一次的试每个舵机的角度数值会比较繁琐。机械臂组如果条件允许可以用3D打印机打印更适合比赛的爪子,还有如果机械臂不够长,也可以定制碳纤维板来给它加到合适的长度。
7.车体材质
在车体材质上底盘最好用玻璃纤维等的坚硬材质,以防车体过重时间长使车底盘有弯曲,这样车运动精准度会受到极大影响。上层可以随意选择。
在这里我只是先给大家说明了比赛的任务和需要用的模块以及为什么用这个模块,由于博主时间比较紧所以在一些更细微的问题上我会在下篇文章中继续说明。