https://srsc.gdedu.gov.cn/preview/onlinePreview?url=https://cdn-srsc.gdedu.gov.cn/srsc/upload/admininform/202103/inform0000004253-1614668126900-218.docx
先不聊什么就先看这个要求,为TT量身定做的比赛,而且我的大部分读者也是这个TT的使用者,所以文中的分析以及后文的demo实例都是使用TT作为讲解。
我们先看这个场地的样子
这个是其的布置方式
注意事项:
- 定位卡的数量(9张)
- 4个障碍物的位置抽签固定
- 巡线和交叉环不动
!!!在我的文章里面有一个假设就是我们上文里面的障碍物都是处于一条中线上面,以及障碍物的高度是一定的。如果失去了这个假设,下文的实用性会失去一半。另外注意的是,文章里面并不会对整个流程全部概述,而是就只躲避障碍物给出的解决办法:
图中红框部分
分开来讲就是躲避这些
A飞机的走法
B飞机的走法
以上两种就是方向的问题,我们先按照A飞机的走法来分析:
这里在注意评测成功的标准
这里是分数的部分
我们首先要完成穿越高低环的任务
先考虑,如果是人为的操控应该怎么做:
- 起飞
- 调整姿态(高度和横滚)
- 接着前进
- over
那我们自动控制的话也是这样的步骤、大家会说用机器视觉,前置的摄像头定位障碍物,然后调整姿态。
大概就是这样,瞄准就行
但是你要注意比赛的连贯性:
注意是是避障,巡线,拾取在同一个程序内。在我给出的方案里面是使用了下视的摄像头来巡线。以上避障如果用视觉的话,需要前置摄像头,所以需要切换两次,一是飞行过程中发送切换摄像头的指令并不是切换的那么流畅,需要稳定的图案至少要5s以上,这个过程中,飞机是无指令的状态。飞机这个时候会有小范围的漂移现象,这样一来需要加入视觉的校准模块,会加重程序的复杂度。而且图传耗电,很可能一套程序跑不下来就关机了。让我们来看看目前有什么问题:
- 切换摄像头带来程序卡顿问题
- 飞机静止状态带来的小距离偏移
- 偏移会让飞行器失去识别对象,需要编写校准模块
- 复杂系统带来的耗电问题
- 复杂系统的难维护性
针对以上的问题,我给出的方案是在避障阶段,使用基于序列的飞行方案。
首先我们的场地不是完全封闭的,是可以看到的
可以对场地参数化,完美的给我们提供了序列数据
识别卡带来的独立坐标系赋予了无人机校准功能
代码语言:javascript复制https://www.dji.com/cn/robomaster-tt/downloads
这个坐标的样子是这样的
我们可以看到我们要穿越的两个障碍的外观是这样的
我们这里分析一个障碍物怎么穿越,如果我们不考虑这个环,就考虑飞行的轨迹的话,
ABC是我们的三个挑战卡,A是我们的起点,我们的飞机飞一个弧线来穿越低环,接着再重复第一次的操作继续穿环,接着到达C。
这个过程中是飞行的弧线:
我们可以用go命令来进行控制,飞出弧线
接着运行m-2的命令,因为就是一个卡片。要快速的识别到
接着就是要停留一下进行机身的校准,使其机身指向下个圆环。
如果不飞弧形,我们可以使用直线飞行
起飞到定高->前进->识别卡片->校准机身->二次高度提升->前进->识别卡片->进行巡线序列->......
我们在编写的时候要测量场地,进行坐标系的拼接,保证飞机的飞行区域是可控的。
另外可以把指令和校准放在一起作为函数调用。
在下篇文章,会把其它几种情况简要分析,而且给出相应的飞行demo。