在学习本教程前,请确保已经学习了前4讲中无人机相关坐标系知识、基础飞行控制函数、激光雷达SLAM定位条件下的室内定点控制、自动飞行支持函数、导航控制函数等入门阶段的先导教程。

同时用户在做二次开发自定义的飞行任务时,可以参照第5讲中2021年国赛植保无人机G题中的编程思路,了解子线程执行过程几组关键变量的用法与实际作用效果。

了解了上述自主飞行任务设计关键要点后,下面我们以2022年全国大学生电子设计竞赛中B题送货无人机中题目要求为例,编写自动飞行任务函数完成比赛中的基础部分+发挥部分+创新部分等所有赛题要求。

根据赛题要求,我们可以将设计的软件部分拆解为以下三个部分:

  • 机器视觉部分:需要识别底部目标的颜色和形状并通过SDK串口实现和飞控的数据交互;
  • 飞控人机交互界面部分:按键、显示屏配合实现目标航点坐标的录入、学习到的目标特征录入、圆环的坐标与角度信息录入,将设置好的参数存储在飞控EEPROM内;
  • 无人机自动飞行任务设计:完成自动起飞、根据现场录入或者学习到的航点目标进行作业(包括作业高度调整、自动投放/回收装置、蜂鸣器报警提示等)、执行完毕后自动返航。

2.1 机器视觉部分软件的设计

底部目标特征点的颜色为红色和蓝色,可以通过OPENMV机器视觉模组的寻找色块函数find_blob()对底部目标进行识别,我们可以判断识别到的色块的密度参数即blob.density(),可以很方便的区分出矩形、圆形、三角形。

最后将识别到的色块坐标、色块形状等关键参数填入到目标类中,编码后通过串口发送到飞控SDK串口,飞控通过解析到的数据帧就能判断出目标点的形状和颜色用于控制决策。

2.2 飞控人机交互界面软件设计

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

菜单界面的包括换行参数选中、参数加减调整,由于按键功能复用的关系,操作起来相关比较繁琐,用户后期可以通过外接ADC按键的方式,用扩展按键实现本例中的按键操作功能,人机交互部分操作视频教程见下方链接。

TI电赛B题送货无人机通过按键、菜单对坐标、模板进行设置

https://www.bilibili.com/video/BV1PB4y1t7y9/?vd_source=fa3e626a57e95e09ecf1b8f1627e58ac

2.3 无人机自动飞行任务的软件设计

第一阶段——自动起飞到航巡高度

uint8_t Auto_Takeoff(float target)//自动起飞到某一高度

函数输入参数target为目标高度,自动起飞任务分为两个线程,第一步为记录当前3维位置信息,作为导航初始原点位置。并且通过导航控制函数设置期望目标高度位置。第二步为实时检测高度偏差值,连续2S满足位置偏差在10cm以内后,函数返回值置1后,自动起飞到目标高度任务完成,用法参照Developer_Mode.c开发者模式中case 11用法,自主起飞任务完成后会进入case 15/16/17执行航点遍历作业任务。

  1. 第二阶段——航点遍历作业任务

void Deliver_UAV_Basic(void)

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

起飞点上方悬停5S后,会将键盘输入的第一个作业点的水平坐标填入到期望的目标位置,随后飞机会执行从起飞点正上方飞向第一作业点的动作,在执行本任务中对水平位置误差进行实时检测,连续N次水平位置误差小于某一阈值,即可以认为到达第一作业点正上方附近,满足达到第一作业点条件后会将高度期望设置成第二作业高度,飞机高度会下降。

第三步是判断无人机是否到达第二作业高度,检测高度是否达到的原理和水平方向一样,同样是检测高度方向上位置误差持续N次满足某一阈值。

第四步飞机处于第一作业点正上方附件,并且高度已经调整为第二作业高度,此时由于定位传感器会存在一定位置误差,这个时候水平方向位置控制会引入OPENMV识别到的色块坐标信息,无人机会对水平位置进行二次修正,使得无人机中心投影处于色块的中心区域。相当于用SLAM定位提供的位置信息做粗对准,在接近作业点时使用机器视觉实现进一步地精确对准。

与此同时会执行吊舱下放动作指令,利用的是360度转动的舵机,以某一角速度执行一定时间予以实现,具体的时间角速度、时间参数和自己舵机选型、绞盘的半径有关,这两个参数在实际调试也比较容易确定。塔吊下方执行完毕后会驱动高分贝蜂鸣器进行报警提示,原地悬停5S之后抬升塔吊装置并恢复到第一作业高度

第五步是无人机执行完第一作业点任务并回到第一作业高度后,会想任务线程发布第二作业点的位置,与第一作业点类似无人机会到第二作业点正上方附近,随即下降高度高第二作业高度,执行视觉二次对准、下放/抬升塔吊、蜂鸣器报警,之后重新返回到第一作业高度,准备返航。

完成预设的两个作业送货后,无人机会执行返航动作,首先无人机飞到起飞点正上方,连续N次水平位置误差小于某一阈值即可认为达到起飞点正上方附近,满足水平抵达之后会执行原地降落至地面的任务,到达地面后无人机会满足地面检测条件自动上锁。

这里需要注意的是程序在此处有一段特殊处理部分为SLAM建图复位指令,在之所以需要这么操作的原因是减小定位误差,NC360竞赛无人机平台使用的是2D激光雷达,理论上只适合平面运动机器人平台的SLAM建图,无人机在空中的线性运动为3维的,无人机在不同高度上,由于周围环境的陈设布置变化会造成一定的定位误差,通常在3~5cm以内,该误差范围能满足无人机在竞赛中的控制精度要求。对于不同高度空间环境变化较大的情况,可以采用本方案中的特殊处理形式,本特殊处理方式非必须,用户可以自己二次开发过程中根据实际情况来决策是否选用,同时对于末端降落过程,依然可以利用底部视觉特征精准对准的方法,实现精准降落。

针对创新+发挥部分的自动学习和穿越圆环部分内容,大体过程和本例程类似,差别在于坐标是通过现场识别到的模板特征录入的,这个处理过程主要工作量在于OPENMV部分,整个飞行任务执行过程和基础部分基本一样,同时对于穿越圆环部分,通过手动输入圆环的坐标和大致角度后,整个飞行过程就是航点遍历、机头对准圆环、穿越的过程,执行完毕后返航降落,整个过程相比前两项只是多了一个航向控制,相对来讲实现难度并没有拔高,仍然属于常规考察项,用户结合程序注释可以比较容易理解,故在这里不做展开。

2022年7月电赛B题送货无人机加装硬件介绍

2022年7月电赛B题送货无人机加装硬件介绍—NC360深度开源竞赛无人机开发平台_哔哩哔哩_bilibili

2022年TI电赛B题—送货无人机开源方案

2022年TI电赛B题—送货无人机开源方案NC360深度开源竞赛无人机开发平台_哔哩哔哩_bilibili

任意位置、角度自主飞行穿越圆框——2022年TI电赛飞行器B题送货无人机

任意位置、角度自主飞行穿越圆框——2022年TI电赛飞行器B题送货无人机_哔哩哔哩_bilibili

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

电赛G题植保无人机国奖标准方案学习样例——NC360深度开源竞赛无人机开发平台_哔哩哔哩_bilibili

2021年电赛G题—植保无人机实现例程—NC360深度开源竞赛无人机开发平台_哔哩哔哩_bilibili

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

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

NC360深度开源竞赛无人机开发平台

  1. 送货无人机(7 月份 B 

设计一基于多旋翼飞行器的送货无人机,能够根据不同的要求,向指定的目标地点运送货物。图 2 为作业区域示意图,有起飞降落点和多个具有不同特征的目标地点。

送货无人机上需安装一可升降吊舱,吊舱重量 50±5g,升降范围 60±10cm;起飞、飞行过程中,吊舱紧贴无人机机腹;到达目标地点上方,无人机下降悬停,并将吊舱降至距离地面一定高度,送货操作完成后恢复到巡航高度飞行。无人机上需安装扬声器,可播放语音提示信息;无人机安装垂直向下的激光笔,用以标识航迹。

图 2 送货无人机作业区示意图

  1. 无人机可按照现场设置的目标位置信息,对 2 个指定位置的目标地点完成送货作业。目标地点位置信息坐标可用无人机上携带的键盘设置。
  2. 无人机在“十”字起降点垂直起飞,升空至 150±10cm 的巡航高度;(5 分)
  3. 根据现场设置的送货目标,先后依次飞行抵达目标地点上方,无人机降低飞行高度到 80±10cm;(16 分)
  4. 无人机放出吊舱,吊舱降至距地面 20±5cm 高度,并保持稳定悬停 5 秒,完成送货作业,期间播放 提醒目标点收货的语音;悬停期间,标识无人机位置的激光笔光斑落在以目标中心为圆心、半径 15cm 的圆内;(20 分)
  5. 作业完成后飞行到起降点稳定准确降落,无人机几何中心点与起降点中心距离偏差不大于±10cm;(4 分)
  6. 送货过程必须要在 180 秒内完成,用时越少越好。(5 分)
  1. 无人机在作业区外学习识别某一种指定目标特征(颜色、形状),然后寻找具有此特征的两个目标地点,完成送货作业。
  2. 无人机从起降点起飞到 150cm 巡航高度,先后寻找 2 个上述已识别的目标,飞行抵达目标地点上方,降低飞行高度到 80±10cm 左右;(20 分)
  3. 放出下降吊舱至距地面 20±5cm 左右高度,稳定保持悬停 5 秒完成送货作业,期间播放提醒目标点收货的语音;送货期间,标识无人机位置的激光笔光斑落在以目标中心为圆心、半径 15cm 的圆内;送货完成即恢复巡航高度;(10 分)
  4. 送货作业完成后无人机降落到起降点;送货过程用时越少越好,需在 270 秒内完成;(5 分)
    1. 无人机找到放置在A 附近区域的红色圆框,并从圆框中穿越而过。(10 分)

      1. 设计报告
      2. 其他自主发挥。(5 分)

 

主要内容

满分

系统方案

技术路线、系统结构,方案描述、比较与选择

3

设计与计算

控制方法描述及参数计算

5

电路与程序设计

系统组成,原理框图与各部分电路图

系统软件设计与流程图

7

测试方案与测试结果

测试方案及测试条件;测试结果完整性;测试结果

分析

3

设计报告结构及规范性

摘要、报告正文结构、公式、图表的完整性和规范

2

小计

20

  1. 送货作业现场说明

    1. 作业区域中标志“A”所在附近区域可放置供无人机穿越的圆框,见图 3,圆框可采用外径约 110cm
    2. 送货目标中的数字并非给无人机识别用,仅为了描述、记录方便,颜色与目标底色相近。
    3. 测评将现场准备图 1 所示 6 种送货目标的特征样板,如“红色三角形”、“蓝色正方形”等,以备给无人机识别。
    4. 送货作业区域铺设亚光喷绘布为淡灰色(R-240、G-240、B-240),目标地点的形状有三种(圆、正方形、三角形,最大边长或直径为 25cm),颜色有红、蓝两种(红 R-255、G-0、B-0,蓝 R-0、G-0、B- 255);作业区上、右两侧有 1.8cm 宽黑色标志线;应考虑到材料及颜料导致颜色存在差异的可能性。
    5. 参赛队在赛区提供的场地测试,不得擅自改变测试环境条件。的红色呼啦圈,呼啦圈固定在地面支架上,圆心高度约 150cm,支架为黑色。

图 3 圆框示意图

  1. 400cm×500cm 作业区四周及顶部设置安全网,安全网支架在安全网外。

    1. 测试现场避免阳光直射,但不排除顶部照明灯及窗外环境光照射,参赛队应考虑到测试现场会受到外界光照或室内照明不均等影响因素;测试时不得提出光照条件要求。
    2. 飞行器要求
  2. 参赛队使用无人机时应遵守中国民用航空局的相关管理规定。
  3. 无人机最大轴间距不大于 45cm。
  4. 无人机桨叶必须全防护,否则不得测试。
  5. 无人机上的激光笔垂直向下安装,不得移动、转动。
  6. 起飞前,无人机可手动放置到起降点;可手动一键启动后起飞,起飞后整个飞行过程中不得人为干预;若采用无人机以外的启动或急停操作装置,一键启动起飞操作后必须立刻将装置交给工作人员。
  7. 调试及测试时必须佩戴防护眼镜,穿戴防护手套。
    1. 测试要求与说明
  8. 吊舱可用软线悬吊 50g 砝码来模仿。
  9. 提醒目标点收货的语音可自行设定,时长 1~3 秒。
  10. 要求 1 送货前,可连续输入两个目标地点的位置信息;如,若以起降点为原点,编号 11 号目标的位置可为(200,275);目标的位置信息格式可自己定义。
  11. 在要求 2 送货前,将现场指定形状及颜色的样板(如“红色三角形”),在场外手持给无人机学习识别将要送货的目标特征。
  12. 要求 1 的送货过程必须在 180 秒内完成,超时不得分。
  13. 要求 2 的送货过程必须在 270 秒内完成,超时不得分。
  14. 要求 1 的(1)~(4)必须连续完成,期间不得人为干预;要求 2 的(1)~(3)必须连续完成,期间不得人为干预。
  15. 每次测试全过程中不得更换电池;两次测试之间允许更换电池,更换电池时间不大于 2 分钟。
  16. 飞行期间,无人机触及地面后自行恢复飞行的,扣 5 分;触地后 5 秒内不能自行恢复飞行视为失败,失败前完成动作仍计分。平稳降落是指在降落过程中无明显的跌落、弹跳及着地后滑行等情况出现。

竞赛无人机搭积木式编程——以2022年TI电赛送货无人机一等奖复现为例学习(7月B题)相关推荐

  1. 竞赛无人机搭积木式编程(三)---用户自定义航点自动飞行功能(全局定位,指哪打哪)

    竞赛无人机搭积木式编程(三)---用户自定义航点自动飞行功能(全局定位,指哪打哪) 无名小哥 2023年6月10日 用户通过对前面两讲中全国大学生电子设计竞赛真题植保无人机(2021).送货无人机(2 ...

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

    竞赛无人机搭积木式编程 --以2021年电赛G题植保无人机国奖标准完整复现为例学习 首先我们需要了解下自动飞行任务执行过程几组关键变量的用法与实际作用效果: flight_subtask_cnt用于控 ...

  3. 2_竞赛无人机基础飞行控制函数——零基础学习竞赛无人机搭积木式编程

    竞赛无人机基础飞行控制函数 无人机的在空中的基本飞行包括姿态控制(角度.角速度)与高度控制(位置.速度.加速度)两个部分. 姿态控制是无人机按照飞行控制指令姿态保持水平或者以某一倾斜角度飞行,同时结合 ...

  4. 4_竞赛无人机基本自动飞行支持函数与导航控制函数解析——零基础学习竞赛无人机搭积木式编程

    竞赛无人机基本自动飞行支持函数与导航控制函数解析 基本自动飞行支持函数 void basic_auto_flight_support(void) 根据前面几讲的介绍,要想实现无人机的自动飞行,单依靠姿 ...

  5. python的积木式编程

    edu.codemao.cn https://wood.codemao.cn/ https://static.codemao.cn/wood_docs/web/code/Control.html 编程 ...

  6. 积木式编程——自制app点灯

    技术:51单片机.串口.蓝牙.积木式编程 概述 这里简单入门了积木式编程,做了个简易APP用来开灯关灯,当然你可以继续添加内容,可以做智能家居.遥控汽车和环境监控等等. 详细 代码下载:http:// ...

  7. Vue实现图形化积木式编程(十二)

    执行Blockly生成代码 路由 下一篇 历史回顾 Babylon.js部分 Blockly部分 前言 最终实现效果 本文内容 实现思路 问题分析 问题 原因 不优雅解决 优雅解决 完整代码 后续计划 ...

  8. Vue实现图形化积木式编程(十三)

    步骤运行代码块高亮 路由 历史回顾 Babylon.js部分 Blockly部分 前言 最终实现效果 本文内容 实现 1. 安装依赖 2. 简化语法 3. 引入js解析器 4. 运行代码 5. 加入高 ...

  9. Vue实现图形化积木式编程(十)

    Blockly自定义块 路由 下一篇 历史回顾 Babylon.js部分 Blockly部分 前言 最终实现效果 本文实现效果 完整代码 代码分解 0.代码块前置知识 0.1 汉化 0.2 预置块 0 ...

最新文章

  1. you need to build uWSGI with SSL support to use the websocket handshake api function !!!
  2. review——C# (6)虚方法和覆写方法
  3. Linux 格式化扩展分区(Extended)
  4. QT判断操作系统版本
  5. 上机考试系统 commons-fileupload 上传与下载 压缩为 zip 文件 删除文件夹下所有内容...
  6. ul 响应式 布局_HTML5中响应式布局怎么弄??
  7. BarTender的集成小结
  8. 多媒体计算机的信息类型,多媒体信息主要有几种类型
  9. linux 查看进程存在时间
  10. Kettle下载和安装
  11. echarts设置地图大小比例,大小设置
  12. python tkinter 窗口最大化
  13. 情侣博客源码php,分享SEO WordPress的标题Title
  14. 配置文件加密 HikariDataSource
  15. 公共数据库介绍~ProPublica
  16. Python发送多附件邮件的方法
  17. http.Request
  18. 计算机应用能力提升,大学生计算机应用能力提升路径
  19. CookieSession会话技术
  20. 电脑重装系统傻瓜式教程详解

热门文章

  1. 系统部署在服务器,windows部署服务器的架设
  2. 实习四 6-1 Two Stacks In One Array (20 分)
  3. Project Anarchy 版权商标等问题说明
  4. 巧用set集合的intersection(交集)和difference(差集)
  5. 一些学习用到的单词《在线收集》
  6. 从微软转战奔驰,杨昱讲述“增长思维”之下传统的营销模式该如何破冰
  7. 移动互联网时代:如何用手机精细化管理企业?
  8. python初学者适合学什么舞蹈_女孩学什么舞蹈比较好 哪种最适合
  9. 信息贩卖黑色产业链猖獗,大数据时代谁给隐私上锁!
  10. Windows server 2012 新建域时本地administrator账户密码不符合具体解决方案