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

news/2024/11/30 0:35:17/

        在学习本教程前,请确保已经学习了前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 秒内不能自行恢复飞行视为失败,失败前完成动作仍计分。平稳降落是指在降落过程中无明显的跌落、弹跳及着地后滑行等情况出现。


http://www.ppmy.cn/news/41655.html

相关文章

编程的核心目的:计算数据

编程的核心目的是通过程序设计实现对数据的计算。计算数据涉及到对数据的获取、变量类型的定义、算术和逻辑运算、条件和循环控制等广泛的计算机科学概念和技术。 对数据的获取可以通过硬编码、用户输入等方式实现。变量类型的定义则是程序中的数据类型、这些类型确保数据的安…

【软考备战·希赛网每日一练】2023年4月10日

文章目录一、今日成绩二、错题总结第一题第二题三、知识查缺题目及解析来源:2023年04月10日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 本题属于专业英语,大体了解意思即可。 题目大意: 第二题 解析&#xff1a…

java面试题-基础问题-如何理解Java中的多态?

如何理解Java中的多态?如何理解Java中的多态?典型回答扩展知识方法的重载与重写重载和重写的区别如何理解Java中的多态? 典型回答 多态的概念比较简单,就是同一操作作用于不同的对象,可以有不同的解释,产…

哪个网站的电子书最多?

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 随便找一个电子书导航,就会给你提供几十个电子书下载网站。 然而,当真正用到时会发现,质量层次不齐,在绝大多数时候试遍几十个网站都找不到自己想要的书…

分享初用Jmeter时可能遇到的一些问题

很多朋友在刚刚接触jmeter的时候会遇到各种各样感觉稀奇古怪的问题,明明请求对了却总是返回不如意的结果,jmeter功能强大,但没有postman那样的界面简洁易上手的特性,本文分享在最初接触jmeter时有可能会遇到的问题,让各…

MySQL架构

文章目录前言MySQL的架构1.连接层2.查询分析器3.优化器4.执行引擎5.存储引擎总结前言 MySQL是一个非常流行的关系型数据库管理系统,具有很好的可靠性和性能。然而,由于MySQL是一个多用户系统,因此必须使用并发控制来处理多个用户之间的并发访…

ROS系统的相关命令+订阅发布代码

1.5.2 ROS文件系统相关命令 1.增 catkin_create_pkg 自定义包名 依赖包 创建新的ROS功能包sudo apt install xxx 安装 ROS功能包2.删 sudo apt purge xxx 删除某个功能包3.查 rospack list 列出所有功能包rospack find 包名 查找某个功能包是否存在,如果存…

Java开发 - 配置中心初体验

目录 前言 配置中心介绍 什么是配置中心 Nacos配置中心 数据结构 命名空间 分组 服务 配置中心添加配置 读取配置 本地添加依赖 本地添加配置 测试 结语 前言 前文讲了ELK,ELK说简单也简单,说复杂也复杂,但说实话,微…