竞赛无人机搭积木式编程(四)---2023年TI电赛G题空地协同智能消防系统(无人机部分)

竞赛无人机搭积木式编程(

---2023年TI电赛G题空地协同智能消防系统(无人机部分)

无名小哥 2023年9月15日

  1. 赛题分析与解题思路综述

        飞控用户在学习了TI电赛往届真题开源方案以及用户自定义航点自动飞行功能方案讲解后,能基于二次开发模式中已有的飞行控制API函数,即自动飞行支持函数和导航控制函数去实现特定赛题飞行动作、轨迹、航点等任务,上述内容是学生在备赛阶段学习无人机二次开发时的必备技能,对这部分不熟悉的可以回顾下前几讲的教程。

 

 

        针对2023年TI电赛的无人机赛题“空地协同智能消防系统”这一具体任务,简单可以分为以下三个部分的设计:

  1. 无人机自主飞行任务设计
  2. 消防车自动运行与灭火任务设计
  3. 模拟火源的任务设计

  • 无人机自主飞行任务设计概述

        在无人机自主飞行任务设计中,关于实现基础部分飞行功能,用户可以无需编写自主飞行任务代码,直接利用程序中已有的用户自定义航点飞行功能,去通过按键或者地面站设置航点坐标即可完成基础部分飞行任务,有且仅需要做的工作是写IO控制去驱动激光笔点亮、串口通讯用数传去实时发送位置等信息给小车平台就可以,基础部分的无人机飞行任务设计只需要做很少的工作量就可以把分数拿满。

        发挥部分无人机自主飞行任务设计分为航点遍历、底部视觉色块跟踪对准、驱动舵机实现投放动作,同样这三个元素在往届的赛题中均有涉及,躺赢者PRO飞控有与之配套的相关代码接口可以直接调用,如果用户在平常的训练中有跟着教程一路扎扎实实学习下来,自己编程去实现特定任务组合的任务代码应该也是驾轻就熟,对于熟练掌握的学生来讲就是用模块化的代码去搭积木的工作。

  • 消防车自动运行与灭火任务设计概述

        消防车自动运行与灭火任务的设计中,要求小车在行驶达到火源的过程中不得碾压街区边界线,这点需要小车事先规划好从出发点G0前往火源G处的中间路径点。小车平台上可搭载机载计算机通过激光雷达/深度相机实现全局定位,需要做的工作是实现航点遍历+视觉识别后激光笔对准,可加以云台辅助控制激光笔,实现在某一范围内激光笔动作,目的是实现快速的灭灯,具体云台单轴还是双轴需要根据实际做的模拟火源光敏电阻分布情况来。也可以不需要云台直接让视觉传感器和激光笔同轴安装,小车在视觉对准火源的过程中照射到光敏电阻就可以使得火源熄灭。

  • 模拟火源任务的设计

        自制模拟火源中要求用电池供电的红色光源去作为模拟火源,模拟火源的亮灭可以用激光笔持续照射去控制,持续照射2秒左右开启,再持续照射2秒左右关闭,同时对模拟火源的尺寸和形状有一定的要求。

        参赛学生可以通过自己熟练的任意一款单片机,简单设计基于灰度传感器、光敏传感器分压电路,加上MOS管驱动电路,编写AD电压采集、IO驱动程序,去实现这一任务,这部分代码量非常小,只要是学过单片机、懂基础的电路硬件知识的同学都能实现。设计虽然简单但是也有一些设计细节要点需要注意:

  1. 红色光源的强度要足够,确保能满足无人机在不同环境光线下都能稳定识别。如果无人机检测火源不可靠,意味着发挥部分的无人机释放灭火包、消防车运行部分的得分会全部丢掉,即使你的无人机和小车运行的又快又稳。相当于仅可拿到基础部分的分数,从实际比赛来看,很有些队伍出现了现场火源检测不到,只拿到了基础分数。由于国测现场无人机有部分队伍现场出现炸机情况,国测现场基本只要你飞机能跑完基础部分就是国一,虽然在奖项上来看都是一等奖,但是为了不给自己留遗憾,完全可以通过合理设计光源信息避免。针对23年电赛无人机赛题中只需要检测单一火源信息的情况,可以采用红色光源+红外光源结合的设计,机器视觉模组加上红外截止滤光片能保证稳定检测识别。
  2. 遮光罩的材质与遮光罩的尺寸影响无人机和消防车对模拟火源的识别,为了增加红色LED灯作为光源时的发光面积和聚光效果,通常采用聚光环或者手工折叠锡箔纸去实现灯罩的设计,所以灯罩需要有一定高度并且不透光。同时发光灯珠是在灯罩底部,使得消防车上安装的摄像头从侧面上就难以看得到模拟光源灯珠发出来的光,故而消防车上的激光笔对模拟火源的照射也无法实现。实际比赛中看到有些学校采用的透光的灯罩或者将灯罩外侧单独涂红色便于小车去检测模拟火源
  3. 模拟火源上光敏电阻容易对无人机上激光笔照射做出错误响应,题目中要求的是消防车照射火源时,火源才允许熄灭,但是实际赛题中在无人机识别到火源后,也需要用激光笔去照射模拟火源区并进行投放灭火包的这一动作。为了防止无人机激光笔照射到光敏电阻时,模拟火源的提前熄灭,通常需要让灯罩截面足够大,俯视投影能覆盖底下整个电路板部分,防止无人机激光笔的直射造成的误触发。或者直接将光敏电阻朝下能有效避免无人机激光笔的影响,通过调整消防车激光笔的到同一安装高度去实现稳定照射并检测。
  4. 光敏电阻组成的分压电路稳态电压输出值受到环境光线影响需要现场标定,由于不同环境光线下光敏输出阻抗存在差异,因此程序里面检测阈值需要现场标定,实际可以采用按键或者电位器进行现场标定。当然如果在光敏电阻朝下并且底板为深色的情况下,可无需标定。
  5. 激光笔的光斑比较小,需要多个光敏电阻均匀分布才能确保激光笔照射到后实现灭火,由于没办法保证激光笔光斑能严格对准某一区域的光敏电阻,往往需要依靠灯罩、电路板的间接反射才能照射到光敏电阻,并且题目要求要持续不间断照射2S才行,实际小车很难做到这一点,故可以设计两组检测回路,比如单独用一路灰度传感器去作为2S持续照射的去点亮或者关闭,另外一路光敏回路作为消防车灭火时用,只要有激光笔照射到光敏上就可以触发光源熄灭条件。

        综上所述,学生在实现2023年TI电赛空地协同智能消防系统中,针对无人机自主飞行任务设计,对于平时有积累并有掌握往届真题、案例demo的同学难度基本可以忽略,只需要把通过无线数传传输无人机状态给小车,小车发送ADC按键键值去无线操控无人机解锁、上锁、SDK、降落后,基本无人机部分的工作量就能完成。消防车如果搭载有机载计算机全局定位的情况下航点遍历、视觉对准、舵机云台控制等这些属于常规项,用通用的SLAM小车套件实现难度也不大,当然没有SLAM定位情况下,单靠IMU+编码器组成的里程计系统,在选取摩擦力大的轮胎情况下也同样可以完成。最后单看模拟火源部分工作量也很少,除了上面说的一些细节要注意,对于普通电子信息相关专业学生能高效率完成。模拟火源熄灭的评分只占很少一部分,消防车能视觉对准火源照射,火源没有熄灭也不会影响学生去拿国奖。毕竟有些省份的无人机赛题只要发挥部分小车能动起来就能推优综测,综测过了,无人机国测基础部分能飞现场不炸机基本就是稳拿国一。

        虽然赛题实现拆分来看每一项的工作量都不算大,单独某一项的难度可能还比不上大三大四学年的一个专业相关课程设计,但是这些都是建立在训练备赛阶段熟练掌握的已有资源的前提下。由于涉及的三个部分需要独立设计方案综合考量,并且彼此之间需要联合调试,整体上的工作量会很大,比赛阶段时间上会非常赶,特别是在自己实验室只有一组无人机队伍参赛的情况下,三个人能做好分工的情况下时间都显得捉襟见肘

        来年备战比赛的学生可以看看实际每个省无人机国赛出线或者省奖排名靠前的队伍,能取得好成绩的很多都是该校有安排多组无人机参赛队伍,像西交、上大(SHU)、东大(SEU)、重大、北邮、桂电、山大(SDU)、哈工大、南工程、杭电等这样的无人机赛题方向传统强队,多年实力霸榜垄断该省份的无人机出线名额。同赛题多组参赛队伍的好处是彼此硬件方案接近,学校资源一致,虽然电赛要求每组队伍独立参赛,但是实际很难避免实验室为了确保出线名额,其它队伍参考种子队伍的方案去比赛。这种情况下就有更多的人手去做类似消防车、模拟火源基础服务的工作,比如一个实验室有三组队伍,这就相当9个人做了3个人的活,碰到今年每项都比较基础只是总工作量大的赛题,多组队伍参赛的学校想不出线都难。无人机赛题多组队伍参赛的结果好处就是能分担工作量,学生有更多的时间去做优化,做的好的情况下就是集体出线,完全不给同省其它高校无人机参赛队伍任何机会。

        单看控制方向题目,由于无人机赛题相对小车或其它控制赛题经费开销巨大,一台搭载机载计算机支持激光雷达SLAM/T265定位的无人机外加上备用件耗材基本都要到1w往上走,外加当下经费吃紧、报销流程复杂,综合来看有实力组织多组参赛队伍去做无人机赛题的高校并不多。往往需要持续多年的人员经费投入才能取得好的成绩,当然也有一些首年使用NC360竞赛无人机开发平台就获得国奖、省一的同学,这部分相对比较少,每年都只有典型的几组,更多的是需要做好传承帮带,积累资源、持续投入迭代,这样自己的学校才会在电赛无人机赛题上有一席之地。

        另外纵观这么多年的电赛无人机赛题得奖情况,还有一个现象就是有些省份出线和排名靠前的队伍并不一定是该省的头部985、211高校,有些省份双非、普通二本、民办独立高校的无人机获得国奖、省一的也很多,特别是在西北、西南和部分南方省份更为明显,经过以往调查来看这些学校往往有着较为充裕的经费支持,持续的供应能让这些学校的学生能用上更为可靠的硬件平台、定位方案、机载计算机平台,平时能做多套方案验证去高效率的学习,不会因为一时的炸机而畏手畏脚进展缓慢,在备战电赛无人机也更有底气,平常处理的问题多,比赛阶段团队协作运用综合能力,选择合适方法去高效率的解决实际问题就会更得心应手

        学生的能力固然重要,但是没有学校、实验室、指导老师的持续的支持和经费投入,单凭学生的一腔热血很难持久。没有学校支持顶多就是某届某个学生能力出众凭个人能力拿个一等奖,没有持续的经费支持,后面没人接手,青黄不接后就很难再拿好名次了,特别是在前几年口罩期间这种传承断代、设备长期吃灰、临时抱佛脚、仓促应战的情况就更为明显。

 

  1. 无人机自动飞行任务的软件设计
  1. 第一阶段——自动起飞到航巡高度

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

         函数输入参数target为目标高度,自动起飞任务分为两个线程,第一步为记录当前3维位置信息,作为导航初始原点位置。并且通过导航控制函数设置期望目标高度位置。第二步为实时检测高度偏差值,连续1S满足位置偏差在10cm以内后,函数返回值置1后,自动起飞到目标高度任务完成,当前的mode会加上task_select_cnt进而实现自主起飞任务完成后,会进入case 21/22执行航点遍历作业任务,其中task_select_cnt可以通过遥控器调节,方便现场执行不同的sdk任务。

 

  1. 基础部分——航点遍历作业任务

void Air_Ground_Extinguish_Fire_System_Basic(void)

 

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

 

        起飞点上方悬停1S后,会将键盘输入的第一个航点A点的水平坐标填入到期望的目标位置,随后飞机会执行从起飞点正上方飞向第一个航点A点的动作,在执行本任务中对水平位置误差进行实时检测,连续N次水平位置误差小于某一阈值,即可以认为到达A点正上方附近,满足达到A点条件后会将航点计数器flight_global_cnt2[n]自加,flight_subtask_cnt[n]置1,飞机会继续执行flight_subtask_cnt[n]==1中的任务,即刷新下一航点位置后再进入flight_subtask_cnt[n]==2中实时检测水平位置偏差,依次判断是否到达B、C、F、E、D航点。 

         当满足航点计数器flight_global_cnt2[n]>=block_navpoint_num_basic时表示所有区块都已经巡逻完毕,结束航点遍历后无人机继续执行返航降落。

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

  1. 发挥部分——航点遍历+色块对准+投放动作任务

void Air_Ground_Extinguish_Fire_System_Innovation(void)

 

        第一步将高度期望设置成第巡逻高度180cm,水平位置期望为初始起飞时候的水平位置,并设置激光笔为持续闪烁,便于裁判判断飞机机身中心在地面上的投影位置,起飞点上方悬停时间设置为1S,同时驱动排针PWM的预留PWM2对舵机进行控制实现夹住灭火包。在起飞点上方悬停完毕后会设置A点为目标航点,无人机会飞向A点。 

        达到A点之后的航点遍历过程,无人机会实时判断底部OPENMV视觉模拟火源情况,如果识别到了模拟火源,无人机会中止航点遍历的过程,进入色块对准模式。

        线程计数器flight_subtask_cnt[n]赋值为5进入色块对准模式,为了避免初始识别到火源时位置偏差太大,调整过激,这里有对未知色块位置-速度控制器输出进行了限幅度。 

        色块对准的结束条件有两个,分别为时间约束和色块位置约束,无人机值执行色块对准的过程中,色块位置误差会逐渐收敛到0,如果连续N次满足色块位置误差比较小会提前结束色块对准过程。

        结束色块对准后,无人机会记录当前的水平位置供后续消防车使用,之后无人机会调节高度到100cm。下降完毕后会原地悬停3S后驱动舵机投放灭火包。

        投放完毕后更新火源信息,相关的坐标信息会通过串口数传发送给消防车。 

 

        最后会恢复到180cm巡逻高度,抵达后会继续识别到火源信息前的航点遍过程。 

        在巡逻完毕A、B、C、F、E、D后,会继续执行返航降落,这部分和基础部分代码一样,即flight_subtask_cnt为1~3的内容,故不再赘述,可参考基础部分解释。

        最后给出小车无线发送ADC按键键盘AD值,消防车控制无人机解锁、上锁、SDK、自动降落的代码以及无人机发送三维位置、航程、模拟火源信息的代码段。

 

无线ADC按键使用相关操作教程方法见下方链接

小车上的ADC按键实现对无人机的控制与飞控发送航点/火情数据给小车平台的演示_哔哩哔哩_bilibili

        由于本节内容过多,基于盘古TI MCU的多功能控制器实现的消防车的教程和制作模拟火源的教程单独作为一节给出。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/150505.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

「专题速递」回声消除算法、低功耗音频、座舱音频系统、智能音频技术、低延时音效算法、手机外放增强算法...

随着多媒体和通信网络技术的持续升级,以及新型音视频应用场景的不断涌现,音频处理技术正朝着更加智能化和沉浸化的方向迅猛发展。人们对音频听觉体验的要求也逐渐提高,无论是在何种场景下,都期望获得更加清晰的声音,并…

DVWA -xss

什么是XSS 跨站点脚本(Cross Site Scripting,XSS)是指客户端代码注入攻击,攻击者可以在合法网站或Web应用程序中执行恶意脚本。当wb应用程序在其生成的输出中使用未经验证或未编码的用户输入时,就会发生XSS。 跨站脚本攻击,XSS(Cross Site S…

多线程 - 定时器

多线程 - 定时器 定时器的背景知识 定时器 ~~ (就类似于定闹钟) 平时的闹钟,有两种风格: 指定特定时刻,提醒指定特定时间段之后,提醒 这里的“定时器”,不是提醒,而是执行一个实现准备好的方法/代码,它是开发中一个常用的组件,尤其是在网络编程的时候,使用浏览器上网,打开…

亚马逊计划向开创性的人工智能初创公司Anthropic投资高达4亿美元

原创 | 文 BFT机器人 在一项巨大而突破性的举措中,亚马逊公布了向人工智能初创公司Anthropic投资高达4亿美元的计划,其愿景是创建更易于理解和可控的人工智能系统。此次合作标志着亚马逊打算在人工智能领域率先取得进步,巩固其在技术领域的地…

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、了解GPIB-USB-HS4、软件调试-代码编写 4、熟悉协议-SCPI协议5、实验过程-熟悉软件(1)去官网NI&#x…

玩转Linux—如何在Linux环境中部署MySQL、Redis和nginx

1、Linux常用命令 Linux学习之路: VMware虚拟机安装Linux系统(详解版) 查看当前文件目录:ls查看目录中文件详细信息:ll输出当前所处的目文件目录:pwdLinux查看当前IP地址:ifconfigWindows查看当前IP地址&#xff1…

MS31703H 桥栅极驱动控制器,可P2P替代TI的DRV8703

MS31703NA 是一款小型单通道 H 桥栅极驱动 器。它使用四个外部 N 通道 MOSFET ,驱动一个双 向刷式直流电机。 PH/EN 、独立半桥或 PWM 允许轻松连接到控制 器电路。内部传感放大器提供可调的电流控制。集 成的电荷泵可提供 100% 占空比,而…

机械臂运动控制,通讯的解包->运动控制->数据封包上报过程

一、协议 数据格式为小端模式,浮点数格式为IEEE754,需与上位机的PC端一致,如window系统,其它系统需要自行测试,用于传输16位、32位、float数据格式,避免只传输字节数据带来转换的繁琐及精度丢失。 二、下位…

机器学习:随机森林

集成学习 集成学习(Ensemble Learning)是一种机器学习方法,通过将多个基本学习算法的预测结果进行组合,以获得更好的预测性能。集成学习的基本思想是通过结合多个弱分类器或回归器的预测结果,来构建一个更强大的集成模…

springboot+jsp+ssm高校图书馆图书借阅收藏评论管理系统617w1

本图书管理系统系统采用B/S架构,数据库是MySQL,网站的搭建与开发采用了先进的Java进行编写,使用了SSM(Spring、SpringMVC、Mybits)框架。该系统从两个对象:由管理员和用户来对系统进行设计构建。前台主要功…

面试题:在大型分布式系统中,给你一条 SQL,让你优化,你会怎么做?

亲爱的小伙伴们,大家好呀!我是小米,一个热爱技术、乐于分享的90后程序猿。今天,我要和大家聊聊一个在大型分布式系统中非常有趣和挑战性的话题——如何优化 SQL 查询! 这个问题可不简单,但不要担心&#x…

python练习4

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

Vue3最佳实践 第七章 TypeScript 创建Trello 任务管理器

| ​ 我们将探讨如何使用Vue.js从零开始创建一个类似于Trello的任务管理应用程序。如果你不熟悉Trello,它是一款非常流行的任务管理工具,允许你把任务写在卡片上,然后通过一个看板的方式来直观地管理这些任务。Trello不仅可以用于个人的任务…

电子地图 | VINS-FUSION | 小觅相机D系列

目录 一、相关介绍 二、VINS-FUSION环境安装及使用 (一)Ubuntu18.04安装配置 1、Ubuntu下载安装 2、设置虚拟内存(可选) (二)VINS-FUSION环境配置 1、ros安装 2、ceres-solver安装 3、vins-fusion…

JavaScript中的map()和forEach()方法有什么区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

工信部教考中心:什么是《研发效能(DevOps)工程师》认证,拿到证书之后有什么作用!(上篇)丨IDCF

在计算机行业中,资质认证可以证明在该领域内的专业能力和知识水平。各种技术水平认证也是层出不穷,而考取具有公信力和权威性的认证是从业者的首选。同时,随着国内企业技术实力的提升和国家对于自主可控的重视程度不断提高,国产证…

基于Java的教学评价管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统功能结构图系统ER图具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划…

Flink+Doris 实时数仓

Flink+Doris 实时数仓 Doris基本原理 Doris基本架构非常简单,只有FE(Frontend)、BE(Backend)两种角色,不依赖任何外部组件,对部署和运维非常友好。架构图如下 可以 看到Doris 的数仓架构十分简洁,不依赖 Hadoop 生态组件,构建及运维成本较低。 FE(Frontend)以 Java 语…

用 Pytorch 自己构建一个Transformer

一、说明 用pytorch自己构建一个transformer并不是难事,本篇使用pytorch随机生成五千个32位数的词向量做为源语言词表,再生成五千个32位数的词向量做为目标语言词表,让它们模拟翻译过程,transformer全部用pytorch实现,具备一定实战意义。 二、论文和概要 …

【数据结构--八大排序】之希尔排序

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …