当前位置: 首页 > article >正文

Ardupilot开源无人机之Geek SDK讨论

Ardupilot开源无人机之Geek SDK讨论

  • 1. 源由
  • 2. 假设
  • 3. 思考
    • 3.1 结构构型
    • 3.2 有限资源
    • 3.3 软硬件构架
  • 4.Ardupilot构架 - 2024kaga Update
  • 5. 讨论
    • 5.1 话题1:工作模式
    • 5.2 话题2:关键要点
    • 5.3 话题3:产品设计
  • 6. Geek SDK - OpenFire
    • 6.1 开源技术
    • 6.2 品牌概念
    • 6.3 产品清单
    • 6.4 DEMO视频

1. 源由

其实这个标题是有点大的,或者说这里更多的吸引眼球。

而真正的目的,还是想围绕具有广泛群众基础,成熟、可靠、安全的无人机开源项目,讨论一些无人机展望的话题,根据话题想做一个快速原型Demo。

所以,这个标题在个人看来并不重要,重点是期望在开源无人机项目上,考虑无人机的架构发展趋势,在应用和性能设计层面的思考,更好,更快的实现项目落地。

2. 假设

开放性的话题,可以天马行空,相对来说也不容易达成一些共识,或者怎么说都有道理。

因此,缩小一些范围或者具体化一些内容,使得在边界范围内进行讨论,会能够更加聚焦话题。

  1. 电子硬件:能够支撑开源软件的硬件,比如:穿越机飞控
  2. 开源软件:具备开源权限的软件代码,比如:ardupilot
  3. 结构构型:能够匹配开源软件飞机结构,比如:多旋翼

3. 思考

3.1 结构构型

话说无人机结构构型,一拍脑袋:固定翼、多旋翼、VTOL、直升机等等

概念角度简单可以把有人飞机的人“去掉”,加之进行小型化,通常就是现在我们看到的,比较“时髦”的无人机,比如:全球鹰、DJI无人机、穿越机等

无人机首先实际解决的问题就是飞行,而这个问题最为直接的底层理论就是空气动力学,是飞机结构形态在飞行中遇到的控制问题。

显然,牛顿力学/空气动力学是能够初步一探这个问题的。感兴趣的朋友,倒是有学习笔记:

  • 飞行动力学 - 基础点摘要整理

当然,这里讨论的话题并非围绕这个结构构型展开,因为研究飞行,飞行器结构构型有着悠久的历史,成熟的理论。

3.2 有限资源

承上启下,围绕本文标题和目标,谈谈有限资源的问题。

  • 无人机结构并非本人专业。
  • 物理/化学/数学,几乎万能。哪怕是芯片也无非是P/N沟道,电子跃迁等问题,电子在量子力学中更是使用了概率表达方式。
  • 研发在一些老板眼中,也是万能。因为,研发可以去研究问题解决问题,也可以做前台,甚至去扫地。 – 呵呵,无非没有理解有限资源的利用问题。

好,回到有限资源上,我们最通俗表达:“专业的人解决专业的问题”。

毕竟去研究一个领域,需要大量的时间、精力、资源,会碰到大量的具体问题和解决方法。所以在领域方面,通常会有深度与广度的讨论:矛与盾,鱼与熊掌不可都得。

这就是典型的有限资源问题。名人名言:

  • “吾生也有涯,而知也无涯。” —— 人的生命是有限的,而知识是无限的。用有限的生命去追求无限的知识显然是不可能的,因此需要有选择地学习和追求真正有价值的东西。
  • “学无止境,力有所及。” —— 学习永无止境,但人的能力总有一个限度,需量力而行。
  • “Art is long, life is short.” —— 技艺无涯,而人生短暂。

希望大家了解,有限资源使用一定有侧重面,大而全,十全十美的东西在人类有限生命时间内是不存在的。

因此,专注于重点,把握方向,有所取舍。 这才是在有限资源情况下的标准玩法,显然在某些场景下,取舍是很残酷的。

3.3 软硬件构架

当前,开源无人机飞行控制方面已经相对成熟。

当然也有一些极限飞行控制方面的问题,比如:穿越机操控性能方面 Fast Rate就很值得探讨。通常应用场景方面,其成熟度是完全能够满足的。

目前,更多急需拓展和面对的将会是传感器的扩展以及智能视频分析瓶颈、性能问题,这些在满足行业应用时更加突出。

因此,从架构层面,需要更好的引入支撑上述应用需求的支撑框架:

  • 数据总线:引入主干总线,适用于高速、大数据分析
Ethernet (backbone高速总线,可用于视频及伴机电脑)
 ├──> TTL  (穿越机,传统飞控总线)
 └──> CAN (更加灵活,更多设备,更加可靠)
  • 硬件设备:配合主干总线,以及BLHELi非开源软件设备带来的问题
  • Ethernet switch
  • 开源ESC:AM32

4.Ardupilot构架 - 2024kaga Update

围绕全球著名的Ardupilot开源飞控代码项目后续整体架构介绍(Andrew Tridgell ):

[2024 kaga] Andrew Tridgell Systems update

5. 讨论

5.1 话题1:工作模式

在互联网日益发展的当今行业应用,分化为两个极端:在线 & 离线 & 在/离线(hybrid)

  • 在线模式:作为端设备,与系统实时连接,执行任务
  • 离线模式:根据模型、算法进行自主飞行控制,执行任务
  • Hybrid模式:(在线/离线) 混合模式,具备执行任务的鲁棒性,确保高质量完成任务

通常无人机都是在Hybrid模式下工作,但是依赖的程度或多或少有所差异。

  • 航模大部分时间通过RC控制链路执行在在线模式;当丢失RC信号后,进入离线模式(RTL/Land/Drop)
  • 无人机、植保机通过电传信号,工作在Hybrid模式,通常电传传递的是任务指令,而非飞行操控指令;当丢失电传信号,进入离线模式(RTL/Land)
  • 特殊应用类无人机离线模式,比如:自动拍照,跟拍无人机 (根据姿势、菜单选择操作姿态,比如:环绕、悬停、降落等)

5.2 话题2:关键要点

结合无人机软硬件架构,并满足上述工作模式需求,就需要解决以下几方面问题:

  • 通讯:可靠/距离/性能
  • 传感:种类/融合/可信度
  • 智能:VIO/AI/SLAM
  • 成本:应用&部署
  • 开源:拓展

注:私有设备,尤其是非开源软件的私有设备,会存在巨大的不稳定性问题,比如:BLHELi事件。

5.3 话题3:产品设计

产品的概念比较广泛,通俗的可以理解:

  • 单品:单一产品,与周边设备有明确的界限

比如:穿越机、记录类无人机等

  • 系统:多个产品形成的系统解决方案

比如:救援无人机、巡检无人机等

参考:
【1】FPV整机- 穿越机&无人机&系统 之系统、产品研发
【2】无人机救援系统基本组成
【3】Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考
【4】无人机跟随一维高度避障场景–逻辑分析

6. Geek SDK - OpenFire

通过上面的思考、讨论,想构建一套 Geek SDK,主要应用于智能化快速原型。

注:软件是弹性部署,因此不同的部署方式应对不同的需求!

6.1 开源技术

借鉴以下技术基础,搭建 OpenFire 原型,有兴趣的朋友可以到jetson-fpv Forum参与讨论。

这里jetson-fpv更多主要是软件,硬件是软件的载体,可以前端部署,也可后端部署。但是后端比较适合开发,且异常炸鸡损失比较小,非常适合原型Demo。

从实际应用角度,需要根据性能、需求考虑,期望能够有更多种形态的软硬件部署方式。

【1】ArduPilot开源飞控之MAVProxy简介
【2】ArduPilot开源飞控之MAVProxy深入研读系列 - 2蜂群链路
【3】ArduPilot开源飞控系统之简单介绍
【4】Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考

6.2 品牌概念

OpenFire 品牌定位和想传达的含义:

  • 开放之火 //强调“开放”和“火焰”的意象,适用于追求自由、创新和激情的品牌。
  • 点燃未来 //带有更具象化的意义,适合科技、教育或启发类产品。
  • 烈火之焰 //星星之火可以燎原,吞噬黑暗,炽烈重生;光芒万丈,焚尽束缚,燃起希望。

6.3 产品清单

OpenFire 品牌 - 拟产品清单:

  • OpenIPC 摄像头 (数字摄像头、SSC338Q【20x20mm/25x25mm】,8812AU/EU【20x20mm/25x25mm】,天线【如棒棒糖、铜管天线】),结构25转30适配

  • OpenFire一代 OpenIPC数字接收机【结构适配,DJI/HDZero/HDO2等主流眼镜】

  • OpenFire二代 OpenIPC智能接收机【RK3588、Jetson Orin等】

6.4 DEMO视频

  • jetson-fpv开源项目

    全网首台 jetson-fpv | posenet | AKM ArduRover 4.5.7


http://www.kler.cn/a/414862.html

相关文章:

  • Mac 系统上控制台常用性能查看命令
  • (微信小程序)基于Spring Boot的校园失物招领平台的设计与实现(vue3+uniapp+mysql)
  • vue3 ajax获取json数组排序举例
  • 云计算之elastaicsearch logstach kibana面试题
  • k8s集群部署metrics-server
  • 图像边界填充算法详解与Python实现
  • Android NDK开发 JNI 基础
  • Pump Science平台深度剖析:兴起、优势、影响与未来
  • heapq模块常用方法
  • Qt常用控件之显示类控件
  • go语言去除字符串末尾的特定字符
  • Java项目实战II基于SPringBoot的玩具销售商城管理系统(开发文档+数据库+源码)
  • Ajax入门程序
  • Python基础学习-12匿名函数lambda和map、filter
  • 【数据分析】一、pandas数据处理指南:100个基于pandas数据预处理方法
  • Leetcode494. 目标和(HOT100)
  • 【已解决】git push需要输入用户名和密码问题
  • MySQL:常用数据类型
  • 【数据结构】ArrayList与顺序表
  • # 18_ Python基础到实战一飞冲天(二)-python基础(十八)--元组
  • 尚硅谷学习笔记——Java设计模式(一)设计模式七大原则
  • mac 如何查看 export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node 是否正确
  • Modern Effective C++ item 15:尽可能的使用constexpr
  • 【GIT】TortoiseGit的拉取(Pull) 和 获取(Fetch)
  • 机器学习在教育方面的应用文献综述
  • windows server 2019 启动 nginx 报错