上述方案的前三项基本都是基于单片机层面编程,以TI飞控为例,用户可以通过基本飞行支持保障函数与导航控制函数的配合使用去完成某一任务的航点飞行,前面讲的飞行任务实现是通过在飞控程序Developer_Mode.c、Subtask_Demo.c中编写相关任务函数,直接在单片机端编程实现的,还未了解的同学参照下方链接。
5_竞赛无人机搭积木式编程 ——以2021年电赛国奖标准完整复现为例学习 https://www.bilibili.com/read/cv15844252?spm_id_from=333.999.0.0单片机端编程还包括电赛早期在部分限定处理器的年份,市面上缺少像当下TI飞控这样提供用户SDK任务编程、二次开发高效且完全开源飞控可供学生选择。学生自己**去开发一套飞控费力耗时稳定性还得不到保障,最后迫不得已只能使用APM或者Pixhawk等国外开源飞控。这类飞控由于代码量大、封装层多、开发环境对新手不友好,最关键的一点是几乎没有任何售后技术支持,使得普通本/专科生一开始直接上手就去改飞控代码,实现具体飞行任务变得几乎不可能。
在这种情况下,学生为了完成飞行器赛题任务又需要满足赛题处理器限定,多采用组委会限定单片机(瑞萨/德州仪器)+开源飞控Pixhawk/APM的方式去比赛。学生不需要去管Pixhawk/APM飞控端代码,只需要在组委会限定单片机平台上,用单片机去编写程序实现模拟出遥控器控制信号PPM/PWM,模拟出的遥控器信号接到飞控遥控信号接口,进而去控制无人机飞行。前些年飞行器赛题内容相对比较简单,采用Pixhawk/APM这类飞控也能完成任务,本方案下文称作方案1。
更有甚者在19年工程机器人大赛无人机赛题中,对于第二、三项中需要无人机自主完成的任务,有一个队伍直接采用大疆Mavic无人机去参赛,然后在自己遥控器杆上加装了舵机等机械装置,可以实现通过程序设定去操作遥控器打杆,进而实现无人机的“自主”飞行,同时在无人机端装了视觉OPENMV和数传,用户利用自己加装的遥控器端的控制器去处理无限得到的视觉端处理数据,进而去决策无人机如何“自主”飞行,本方案下文称作方案2。
使用程序模拟遥控器PPM/PWM信号和舵机等机械装置改变遥控器信号本质上是一样的,都是通过改变飞控收到的遥控器数据,进而改变无人机的位置、速度、姿态期望实现自主飞行。上述打着插边球的参赛方案1和2显然不是组委会的出题初衷,但是人家也确实是满足当时竞赛赛题要求。正式鉴于此前不明确规则中存在的缺失,组委会在后面的无人机赛题中对限定赞助商MCU的处理具体内容部分逐步进行了明确,进而发展到当下放开机载计算机的限制,这一放开使得电赛飞行器向前迈了一大步。
机载计算机限制使用的放开使得依靠激光雷达/视觉SLAM等高精度定位手段在比赛中得以使用,实际2020年省赛中有少量队伍使用机载计算机平台、到了2021年国赛中基本已全面放开此限制,在无人机中使用机载计算机平台已经成为大势所趋,学生能够实现更加高效的二次开发,彻底告别“盲飞”。
附件含有2013年到2021年电赛飞行器赛题的要求和实现路线分析