我的战队
【RM2019-全方位开源】哈尔滨工程大学
慢慢开坑,不定时更新。本人2019年创梦之翼队长以及电控组长(因为某些人员问题,我自己全责)以及研发组长。现战队技术指导,编外人员,就不挂队旗了。

水平有限,很可能有错误,欢迎大家多多指教!多交流!

0.前言



重点:
(0)属实觉得论坛这个写长帖子的编辑方式不方便(小声哔哔)(1)非视觉识别贴不讨论如何识别、如何提高帧率以及识别率,本贴是电控向的帖子,只关于自瞄应用于嵌入式控制(个人不太习惯将电控称为嵌入式,既然都这样分组了那就这样吧)部分。
(2)我们去年使用的是卡尔曼滤波器做的自瞄的预测。
(3)正好毕设也是做的运动参数的预测和滤波,做了点儿简单的研究,技术水平有限,如有错误欢迎大家指正!
(4)我们队的控制采用了云台底盘两个板子进行控制,预测代码放在云台上,和陀螺仪数据一起处理的。
参考开源:【哈尔滨工程大学】创梦之翼战队RM19全方位开源汇总贴 https://bbs.robomaster.com/article/6398
(5)代码是去年为了复活赛赶出来的,全套步兵代码只花了不到一周的时间就写完了,在命名以及有些逻辑细节上可能存在一些BUG,望谅解~(代码还没有上传,有时间整理整理就上传)
(6)前言就写一写废话吧,可直接跳到第一节(也可以直接参考官方的知乎专栏的内容,但是其后附的代码不能直接使用。对于一点儿都不懂卡尔曼的人比较很困难,至少我第一次看这个的时候是这个感觉https://zhuanlan.zhihu.com/p/38745950


16年大一的时候先是去了学校的的飞卡学做硬件,后来大一下才到了RM团队。在团队一直负责无人机,后来队伍人员出了点问题加上本来因为队伍人就少,就负责了无人机的机械、电控(本来是还得弄视觉的,学了一周视觉,因为实在是不能一周速成就让研究生学长帮了忙。所以在队伍管理的时候我基本上每个方向的评审都有我的影子,这个也造成了19年分区赛的方案太过于保守,我全责)。顺便说一下,我女朋友并不是打比赛打掉的。也就是在17年深圳比赛的时候认识了哈工大的某个设计工程车的人,也就是某位队长(手动滑稽,不说是谁了,怕某人来哈工程找我)。也就是那一年让我坚定入坑,这一晃就快4年了。这几年有大一17年分区赛的时候凭借自己的操作还有运气极好的分组打进国赛的兴奋和力挽狂澜的舒畅;也有大一分区赛因为自己失误面对东北大学的失利;还有大二因为整个队只有3个有技术的人导致各样失利的无奈。我因为经常打比赛(我们学校科创体质比较特殊,除了RM外我还打了10来个其他比赛)假期回家的时间很短,所以有些时候父母不太能理解。但是在19年暑假的时候我父母来到深圳看了我打比赛,也是通过这次机会才了解到我为了什么在付出。我也希望后来的朋友们能够继续做下去这个比赛。我马上本科毕业了,保研去了另外的一所已经不做RM的学校读研,而且以后研究方向也不是控制向了,所以想留一点儿资料给自家队伍,结果留了一些资料队内没人一起讨论,所以就在论坛开出来大家一起交流一下。本来是准备计划是准备把一些论坛上没有的一些资料给补一补,讲一讲我自认为的“原理”。但是时间有限(还有好多论文要看,头秃),我尽力。
大概规划一下以后要讲的,计划讲完这个将一下姿态解算、两个控制板的构成(一个大板做底盘和动作处理部分,一个小板复杂陀螺仪解算、滤波和云台控制,之前有一个队伍之前问过我这个,虽然我觉得挺好理解,但有时间也还是讲一讲)、还有我们队云台用的效果很好的巴特沃斯低通滤波器、超级电容(这个水平真有限,不一定将的明白)。还有什么我们队大家看的上的都可以留言,在不侵犯现在队伍核心利益的情况下进行适当开源。


1.自瞄方案
自瞄方案在我的认知里面一共两种,一是用PID的方法进行处理。二是用卡尔曼或者其他的方式进行预测。
下面我说说我认为各存在什么问题。
1.1 PID算法
(1)对于PID的方案的话对于我们队伍来说是问题不大的,因为我们的摄像头是330帧的,处理也只花的了3ms左右(视觉组那边的数据),相对于我们队云台采用1kHz的控制频率来说是问题不大的,平滑度勉强可以接受。我觉得平滑度问题是一个对于个别队伍来说比较棘手的问题,大家不都是某些6、70W经费的队伍,在氪金买土豪电脑方面存在一些小小的困难。因为如果电脑的处理频率较为低的情况下对发送指令间断的话会出一耸一耸的情况,有些指令可见图1。
(2)PID算法还有一个比较致命的缺点,那就是它是以误差驱动的控制器,没有误差是输出不变化的,如果误差变化频率较快,如sin这种跟随起来是比较困难的。还有就是当别人距离你较远的时候,你子弹的飞行时间是不能忽略不计的,这个时候你枪口只能勉强跟上,不能提前发射,这个时候是很致命的。顺便提一下,我们队用PID算法在330帧中距离的情况下对陀螺车命中率其实挺高的,操作手体验据说是很不错的(19年我们队机械能干活的几乎全部跑完了,只剩了一个熟练工。大法师一个人设计完了步兵、英雄、工程底盘,这里向大法师致敬。我们队历来都属于典型机械不够电控视觉来凑的队伍)。
1.2 卡尔曼滤波器
(1)对于前面提到的平滑问题来说,卡尔曼是具有补帧的功能的,这个我在测试的时候我是感受到了,330帧硬生生的补到了1KHz。但是具体为什么卡尔曼能够补的原理我不是很明白,我觉得我的理解可能有错误,希望有大佬能够解答。
(2)对于误差问题卡尔曼滤波器就完全没有问题,毕竟状态转移部分状态更新就是对状态进行预估的,后面会讲到。
(3)要说卡尔曼滤波器有什么缺点,我觉得就是在数据处理这儿可能有一些瑕疵。比如数据得转换坐标等(你也可以不转换,带着坐标转换做扩或者无迹变换,手动滑稽),这个函数构建可能比较麻烦,有些矩阵运算还得调DSP库运算,我当时DSP玩了半个下午才用明白。有人可能会说计算能力会不会不够,经过我的测试(使用FreeRTOS,STM32F405RGT6芯片,矩阵运算采用DSP库,任务优先级在所有任务中最高),在坐标转换、云台控制以及陀螺仪解算在同一任务在1kHz进行,是没有问题的。
1.3 总结
小结一下,在方案审定来看的话,卡尔曼滤波器肯定是各项性能优于PID跟踪的。唯一缺点就是麻烦,就像好东西肯定贵一个道理(AMD,YES!除外嗷)。
小弟水平有限,如有错误,多多指教。
今天就暂时更到这儿,改天继续~2020.3.18To be continued...







QQ截图20200318231307.jpg

请问这篇文章对你有用吗?
【RM2019-全方位开源】哈尔滨工程大学
所有评论
暂无更多
关于作者
RichJ
RichJ
0 关注Ta
0 文章
1 经验值
0 获赞