竞赛无人机搭积木式编程——以2022年TI电赛送货无人机一等奖复现为例学习(7月B题)
在学习本教程前,请确保已经学习了前4讲中无人机相关坐标系知识、基础飞行控制函数、激光雷达SLAM定位条件下的室内定点控制、自动飞行支持函数、导航控制函数等入门阶段的先导教程。
同时用户在做二次开发自定义的飞行任务时,可以参照第5讲中2021年国赛植保无人机G题中的编程思路,了解子线程执行过程几组关键变量的用法与实际作用效果。
了解了上述自主飞行任务设计关键要点后,下面我们以2022年全国大学生电子设计竞赛中B题送货无人机中题目要求为例,编写自动飞行任务函数完成比赛中的基础部分+发挥部分+创新部分等所有赛题要求。



根据赛题要求,我们可以将设计的软件部分拆解为以下三个部分:
机器视觉部分:需要识别底部目标的颜色和形状并通过SDK串口实现和飞控的数据交互;
飞控人机交互界面部分:按键、显示屏配合实现目标航点坐标的录入、学习到的目标特征录入、圆环的坐标与角度信息录入,将设置好的参数存储在飞控EEPROM内;
无人机自动飞行任务设计:完成自动起飞、根据现场录入或者学习到的航点目标进行作业(包括作业高度调整、自动投放/回收装置、蜂鸣器报警提示等)、执行完毕后自动返航。
2.1 机器视觉部分软件的设计
底部目标特征点的颜色为红色和蓝色,可以通过OPENMV机器视觉模组的寻找色块函数find_blob()对底部目标进行识别,我们可以判断识别到的色块的密度参数即blob.density(),可以很方便的区分出矩形、圆形、三角形。


2.2 飞控人机交互界面软件设计
依靠Tiva LaunchPad核心板上板载的两个独立按键SW1、SW2,同时配合OLED显示屏实现对赛题中相关参数的进行修改、存储,新加功能需要兼容原来按键的翻页切换的功能,就必须设置相应的菜单界面配合按键的长按、短按响应来予以实现。






TI电赛B题送货无人机通过按键、菜单对坐标、模板进行设置
https://www.bilibili.com/video/BV1PB4y1t7y9/?vd_source=fa3e626a57e95e09ecf1b8f1627e58ac
2.3 无人机自动飞行任务的软件设计
第一阶段——自动起飞到航巡高度
uint8_t Auto_Takeoff(float target)//自动起飞到某一高度



第二阶段——航点遍历作业任务
void Deliver_UAV_Basic(void)
第一步将高度期望设置成第一作业高度150cm,水平位置期望为初始起飞时候的水平位置,并设置激光笔为持续闪烁,便于裁判判断飞机机身中心在地面上的投影位置,起飞点上方悬停时间设置为5S。















这里需要注意的是程序在此处有一段特殊处理部分为SLAM建图复位指令,在之所以需要这么操作的原因是减小定位误差,NC360竞赛无人机平台使用的是2D激光雷达,理论上只适合平面运动机器人平台的SLAM建图,无人机在空中的线性运动为3维的,无人机在不同高度上,由于周围环境的陈设布置变化会造成一定的定位误差,通常在3~5cm以内,该误差范围能满足无人机在竞赛中的控制精度要求。对于不同高度空间环境变化较大的情况,可以采用本方案中的特殊处理形式,本特殊处理方式非必须,用户可以自己二次开发过程中根据实际情况来决策是否选用,同时对于末端降落过程,依然可以利用底部视觉特征精准对准的方法,实现精准降落。
针对创新+发挥部分的自动学习和穿越圆环部分内容,大体过程和本例程类似,差别在于坐标是通过现场识别到的模板特征录入的,这个处理过程主要工作量在于OPENMV部分,整个飞行任务执行过程和基础部分基本一样,同时对于穿越圆环部分,通过手动输入圆环的坐标和大致角度后,整个飞行过程就是航点遍历、机头对准圆环、穿越的过程,执行完毕后返航降落,整个过程相比前两项只是多了一个航向控制,相对来讲实现难度并没有拔高,仍然属于常规考察项,用户结合程序注释可以比较容易理解,故在这里不做展开。

2022年7月电赛B题送货无人机加装硬件介绍
2022年TI电赛B题—送货无人机开源方案
任意位置、角度自主飞行穿越圆框——2022年TI电赛飞行器B题送货无人机

2021年电赛G题植保无人机国奖标准方案学习样例

5_竞赛无人机搭积木式编程 ——以2021年电赛国奖标准完整复现为例学习

