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

        在学习本教程前,请确保已经学习了前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.mfbz.cn/a/872.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【uniapp小程序实战】—— 使用腾讯地图获取定位

文章目录🍍前言🍋正文1、首先看官网uni.getLocation(OBJECT)#注意2、腾讯位置服务平台申请密钥和下载SDK2.1 申请开发者秘钥2.2 开通webserviceAPI服务2.3 下载微信小程序JavaScriptSDK2.4 安全域名设置3、配置manifest.json文件4、示例代码展示4.1 引用…

面试重难点问题(C++)

持续更新!!!!! 网络部分 1.问,四次挥手的过程,和双方状态变化? 挥手这前,两边都是established状态,客户端发起断开请求,向服务器发送fin请求&…

Docker6种网络配置详解,网络模式应该这么选

文章目录一、Bridge网络模式二、Host网络模式三、Overlay网络模式四、None网络模式五、Macvlan网络模式六、Ipvlan网络模式七、网络模式选择在Docker中,网络配置是一个重要的主题,因为容器需要与其他容器或外部网络进行通信。Docker提供了多种网络模式和…

注意下C语言整形提升

C语言整形提升 C语言整形提升是指在表达式中使用多种类型的数据时,编译器会自动将较小的类型转换为较大的类型,以便进行运算。在C语言中,整型提升规则如下: 如果表达式中存在short类型,则将其自动转换为int类型。 如…

【JavaEE】初识线程

一、简述进程认识线程之前我们应该去学习一下“进程" 的概念,我们可以把一个运行起来的程序称之为进程,进程的调度,进程的管理是由我们的操作系统来管理的,创建一个进程,操作系统会为每一个进程创建一个 PCB&…

C++之深浅拷贝

一、浅拷贝 我们看下以下代码 Test.h 文件 #pragma once #include<iostream> using namespace std; class Student { public:Student(){}~Student(){if (m_Id ! nullptr){delete m_Id;m_Id nullptr;}}Student(int id, string strName){m_Id new int[id];m_strName s…

字符函数和字符串函数(上)-C语言详解

CSDN的各位友友们你们好,今天千泽为大家带来的是C语言中字符函数和字符串函数的详解,掌握了这些内容能够让我们更加灵活的运用字符串,接下来让我们一起走进今天的内容吧!写这篇文章需要在cplusplus.com上大量截图,十分不易!如果对您有帮助的话希望能够得到您的支持和帮助,我会持…

信号处理-小波变换4-DWT离散小波变换概念及离散小波变换实现滤波

连续小波变换的适用场景&#xff1a;能够获取某一段信号的瞬时信息、时频信息 缺点&#xff1a;计算量大&#xff0c;无法进行数据压缩- 针对连续小波存在的缺点提出离散小波变换 离散小波变换 离散小波变换 分解过程&#xff1a;&#xff08;离散2进正交&#xff09; cD1: …

数据结构与算法——栈和队列<也不过如此>

&#x1f3c6;作者主页&#xff1a;king&南星 &#x1f384;专栏链接&#xff1a;数据结构 &#x1f3c5;文章目录一、&#x1f947;栈1、&#x1f948;概念理解2、&#x1f948;链表头插头删实现栈1、&#x1f949;预备准备2、&#x1f949;创建结点函数3、&#x1f949;遍…

SPI读写SD卡速度有多快?

SD卡是一个嵌入式中非常常用的外设&#xff0c;可以用于存储一些大容量的数据。但用单片机读写SD卡速度一般都有限&#xff08;对于高速SD卡&#xff0c;主要是受限于单片机本身的接口速度&#xff09;&#xff0c;在高速、实时数据存储时可能会有影响。但具体速度可以达到多少…

vue2+高德地图web端开发使用

创建vue2项目我们创建一个vue2项目&#xff0c;创建vue2项目就不用再多说了吧&#xff0c;使用“vue create 项目名 ”创建即可注册高德地图高德地图官网地址&#xff1a;https://lbs.amap.com/如果是第一次使用&#xff0c;点击注册然后进入我们的控制台注册完之后进入控制台&…

<Linux>计算机体系结构和操作系统

计算机体系结构(冯 • 诺依曼体系)和操作系统&#xff08;Operator System&#xff09; 文章目录计算机体系结构(冯 • 诺依曼体系)和操作系统&#xff08;Operator System&#xff09;一、冯 • 诺依曼体系结构1.存储器&#xff08;内存&#xff09;2.运算器和控制器&#xff…

系统重装漏洞

zzcms系统重装漏洞 一、配置zzcms环境 1. 使用小皮搭建zzcms框架 2. 安装zzcms 按照下面的操作进行,傻瓜式操作即可 3. 打开网站 二、漏洞利用 在访问install目录的默认文件后,会出现zzcms安装向导 http://www.zzcms.com/install/index.php 但是会显示 “安装向导…

HTTPS,SSL(对称加密和非对称加密详解)

上一篇博客&#xff08;HTTP详解_徐憨憨&#xff01;的博客-CSDN博客&#xff09;详细讲解了关于HTTP的知识&#xff0c;了解到HTTP协议下的数据传输是一种明文传输&#xff0c;既然是明文传输&#xff0c;可能导致在传输过程中出现一些被篡改的情况&#xff0c;此时就需要对所…

MATLAB | 给热图整点花哨操作(三角,树状图,分组图)

前段时间写的特殊热图绘制函数迎来大更新&#xff0c;基础使用教程可以看看这一篇&#xff1a; https://slandarer.blog.csdn.net/article/details/129292679 原本的绘图代码几乎完全不变&#xff0c;主要是增添了很多新的功能&#xff01;&#xff01;&#xff01; 工具函数完…

【链表OJ题(六)】链表分割

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;数据结构 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录链表OJ题(六)1. 链表…

燕山大学-面向对象程序设计实验-实验三 类和对象—构造函数与析构函数-实验报告

CSDN的各位友友们你们好,今天千泽为大家带来的是燕山大学-面向对象程序设计实验-实验三 类和对象—构造函数与析构函数,接下来让我们一起进入c的神奇小世界吧,相信看完你也能写出自己的 实验报告!如果对您有帮助的话希望能够得到您的支持和帮助,我会持续更新的!&#x1f680;3.…

硬刚ChatGPT!文心一言能否为百度止颓?

引言&#xff1a;近年来&#xff0c;人工智能领域的发展突飞猛进&#xff0c;尤其是在自然语言处理&#xff08;NLP&#xff09;方面。OpenAI的ChatGPT无疑是这个领域的佼佼者[1]。那么&#xff0c;面对这样一款高度智能的AI模型&#xff0c;国内市场上是否有相应的产品能与之抗…

你是真的“C”——指针进阶知识分享【上篇】

你是真的“C”——指针进阶知识分享【上篇】&#x1f60e;前言&#x1f64c;指针初阶必备小知识~&#x1f60a;一. 字符指针&#x1f60a;二. 指针数组&#x1f60a;三、数组指针&#x1f60a;数组指针的定义&#x1f618;四、 &数组名VS数组名&#x1f60a;总结撒花&#…

【K8S系列】从零开始学习 k8s:入门指南(二)

目录 序言 前情提要&#xff1a; 4.K8S架构 4.1 声明式系统VS命令式系统 4.2 k8s-声明式系统 4.2.1 声明方式-yaml 4.3 Kubernetes的基本概念 1.集群 2.节点 3.容器 4.Pod 5.Service 6.Deployment 问题&#xff1a; 4.4 K8S核心组件 4.4.1 kube-apiserver 4.4…
最新文章