关于电赛飞行器组要求中的不得有“无线通信及遥控”的思考与解决思路

本文主要是介绍关于电赛飞行器组要求中的不得有“无线通信及遥控”的思考与解决思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        飞控类型没有明确限制,和2019年国赛标准一致,依据往届经验,肯定更推荐用TI芯片方案,对携带遥控器、无线数传等设备有可能造成的违规作弊行为予以严令禁止,,有且进允许通过按键启动,这一点规定更加明确、清晰,避免去年国赛不同赛区对此要求认定模糊不清。

 

 

关键问题讨论:

下面给出无名创新提出的一种最简单又行之有效的与以往遥控器操作完全兼容的通过按键一件启动方案,这里拿出来和大家探讨在实际比赛中的实际操作可能性。

1、首先比赛限制使用"无线通讯及遥控”的初衷非常清楚,目的是避免飞行器在运行过程中参赛选手手动“微操”飞行器、或者其它第二现场比如隔壁教室、走廊等异地操控(第一现场选手有无线视频传输功能将现长实时传输到第二现场),明显违背比赛的自主飞行要求,现场评判的老师很难判断是否作弊。为了杜绝此类现象,赛题干脆利落的禁止"无线通讯及遥控”设备,保证竞赛的绝对公平性。

 

2、与之同时带来的问题更多,参赛选手在无人机调试时,需要频繁的修改代码,修改的代码往往不能行之有效的一次性成功执行,因此无人机在“脱控”(脱离遥控)下的全自主飞行行为具有非常大的不确定性。不是每个实验室都有足够的经费承担因为“失误”带来的频繁炸鸡损失。对于无人机保护性不好的学校,在调试时发生流血伤人情况很难避免。如果此时有遥控器那么直接切到手动控制模式下,安全降落后在排查问题。这点是实际调试时最大的痛点。

 

3、既然比赛要求的是无人机不能带有"无线通讯及遥控”,主要指的是无线数传、具有无线通讯功能的遥控器。数传和遥控一样存在无线作弊操作的可能。为了说清楚遥控这个问题,我们不妨看下遥控器的定义,直接贴上百度的图如下:

 

 

         作为遥控最最明确的一点遥控器是远距离对被控对象进行操控,对于常见的航模遥控而言,是遥控器上面的电位器、开关量等信息编码之后,通过无线射频芯片如A7105、NRF24L01、915、433等设备无线传输到接收机端,接收机端解码后再编码成PPM、SBUS、PWM、DSM2信号等给飞控,重而实现遥控器对无人机的远程操控。

        那么假设存在这样一种装置,不带任何无线射频芯片,无法将自身的模拟量、开关按键量等状态信息以无线射频编码的方式发送到其它接收端,有且仅仅只能通过“有线”连接,直接传输数据给飞控,无人机起飞前的功能模式设置后,拔掉该有线连接,后续由飞行器在无任何遥控设备的连接下完成其自主飞行操作。

        讲到这里,玩过飞行模拟器中的朋友很容易想到这样的设备:

 

 

        注意虽然看着像是遥控器,但是思考下我们前文所述遥控器的定义,上述设备即不带任何无线设备,因此我们把它叫做"模拟(遥控)器",模拟器能用过有线的方式,将模拟器上的按键开关量、电位器量以PPM信号的形式输出来。我们可以将该信号直接接上飞控PPM信号,实现无人机的有线控制。

       试想一下用此款模拟器有线连接的方式,采用模拟器上的按键开关直接一件启动无人机的操作和采用矩阵键盘的按键开关一件启动的方式,本质上是不是不存在任何差别。

 

 

 

 

 

        感兴趣的同学会发现,基本上市面上所有的遥控器都具有不依赖于接收机,直接输出PPM信号的功能,

 

 

 

 

        上面两款遥控器带模拟器的功能,但是满足不了比赛要求的"无线通讯及遥控”,除非你自己把遥控器里面的无线射频模块拆掉,这点没有实操性。

 

 

​         无名创新开源遥控器介绍https://www.bilibili.com/read/cv7671341

        对于使用无名创新开源遥控器同学,可以直接将无线射频芯片NRF24L01模块拔掉,用AUDIO口输出的PPM信号接飞控PPM接口,即可实现无名创新多功能模拟器对无人机有线操控,完全满足竞赛的禁止使用"无线通讯及遥控”,只能通过按键一键启动的要求

        有了无名创新上面对"无线通讯及遥控”限定的分析,为了保证无人机在实际调试中失控危害,用户在实验室前期实际调试时,仍然可采用普通遥控器+接收机的控制方式,减少不必要的损失,在飞行器调试稳定已经实际比赛中,可以采用模拟器有线连接的方式操作无人机,操作完毕后拔掉模拟器与飞控的连接线,实现比赛要求的一键启动后的全自主飞行。

        上述方法还有一个最大的好处,参赛选手不需要写两套代码,单独按键起飞+遥控器控制起飞,只需要写普通遥控器控制起飞的方式就行,这个也是最直接的方式,比赛时换上模拟器,也是同样的操作,因为不管是接收机、还是模拟器的方式,最终给到飞控的是同一信号即PPM信号,只要将调试时的模式开关与模拟器的通道开关对应就行,从而实现遥控器+接收机到模拟器的无缝对接。

这篇关于关于电赛飞行器组要求中的不得有“无线通信及遥控”的思考与解决思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081203

相关文章

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下: