ArduPilot开源飞控系统之简单介绍

ArduPilot开源飞控系统之简单介绍

  • 1. 源由
  • 2. 了解&阅读
    • 2.1 ArduPilot历史
    • 2.2 关于GPLv3
    • 2.3 ArduPilot系统组成
    • 2.4 ArduPilot代码结构
  • 3. 后续
  • 4. 参考资料

ArduPilot是一个可信赖的自动驾驶系统,为人们带来便利。为此,提供了一套全面的工具,几乎适用于任何车辆、无人机、潜艇、气球等设备。

作为一个开源项目,在用户社区的快速反馈的基础上不断发展。相应的开发团队与社区和商业合作伙伴合作,为ArduPilot添加惠及所有人的功能。

尽管ArduPilot不生产任何硬件,但ArduPilot固件可在各种不同的硬件上工作;加上地面控制软件,运行ArduPilot的无人驾驶设备可以具有高级功能,包括与操作员的实时通信。

1. 源由

在2022年5月份开始逐步尝试更多的了解飞控系统:

  1. 从基于Betaflight的果冻F450开始,搭建了第一台稳定的Betaflight Mark4
  2. 后来基于iNavflight策划SnapDragonfly,打通技术链路,并规划编程无人机产品系统,更加紧密的结合Snap可视化编程和无人机应用

从商业角度看,其实比较成功的开源飞控系统,在大陆这边更多的是PX4。
主要原因是PX4是BSD 3-clause license,换句话说,就是修改代码可以不开源,从开源的角度,这个显然不利于技术的发展。

而与之相应的ArduPilot飞控系统是基于GPLv3。这个从技术发展的角度就非常友好,即修改了代码,必须开源出来。
当然规避方法不是没有,那就是Companion Computer通过标准协议接口进行解耦。这种就是非常好的技术与商业的二合一。

今天开始我们陆续的学习下的各个组成以及模块化设计实现的方法。

2. 了解&阅读

对于一个现有成熟系统,最好的了解方式:阅读代码、文档,以及上手使用该系统以获取第一手信息。

撰写这篇之前,我已经开始了一段时间的摸索:

  1. 从ArduPilot飞控之DIY-F450计划起步
  2. 目前已经可以手动stabilize模式下试飞

后续,计划是采用Mission Planner进行地面站的控制,进行轨迹巡航和自动降落等功能,当然里面还有很多好的内容,相信后续有时间逐步的研究,学习。

2.1 ArduPilot历史

关于ArduPilot的历史,官网上有非常详细的描述,这里就笔者比较关注的重点,特别列出,详见:History of ArduPilot

  1. 2007年5月 Chris Anderson创办DIYDrones.com。
  2. 2008年9月 Jordi制造了能够自主飞行的传统直升机无人机,并赢得了第一届Sparkfun AVC比赛。
  3. 2009年 Chris Anderson和Jordi Munoz建立了3D Robotics。
  4. 2012年 3D Robotics发布了APM2.5/2.6
  5. 2013年1月 ArduPilot代码从google code搬迁到了github。
  6. 2014年10月 DroneCode基金会成立。
  7. 2016年3月 3DR因裁员而停止对ArduPilot社区的直接资助。同年,成立ardupilot.org非营利组织和新网站。

个人感觉前面这些历史变迁,值得回顾下,开源最后的好处就是大家都能使用到最先进的技术。

同时,大陆某宝上售卖的很多APM的版本都是2.6/2.8,大家看下就能知道,这个的水平基本上是2012年的,而现在已经是2023年了。10年的变迁,技术突飞猛进,所以建议大家买个相对靠近的飞控来学习。

这里有比较成熟且在官网有记录的硬件,详见:Autopilot Hardware Options

注:笔者这款就是Closed hardware里面的一个Holybro Kakute F7 AIO,点进去就能看到使用上述板子需要注意的配置项。

2.2 关于GPLv3

可能很多人并不太了解软件代码遵循的License是什么?其实换句话说,就是知识产权归属的问题。

这里强调一下,主要目的是更好的让大家理解该GPLv3的好处,同时也给需要应用规避的商业操作做了技术指导。

首先,根据ArduPilot项目的性质,可以根据许可证条款自由使用Github存储库中提供的所有代码和工具,而无需任何授权或参与。非常感谢那些将此软件纳入其产品中进行销售的公司和个人。相当多的人已经这样做了。但是,许可证需要指出一些内容:

  • 告知您的客户该软件是开源的,并提供产品中的实际源代码,或提供可以找到源代码的链接
  • 与个人开发人员的贡献一样,如果您能通过电子邮件向我们通报包含该软件的产品,我们将不胜感激partners@ardupilot.org。
  • 此外,对于那些可能对更广泛的社区有用的更改,如果您可以使用pull请求将它们贡献回来,以考虑添加到原始代码库中,我们将不胜感激。

为什么我们选择这个许可证而不是其他许可证?

  • 为项目贡献bug修复和增强(或者至少向最终客户提供这些修复)的需求增加了贡献者之间的合作。如果没有这一要求,参与者会倾向于对自己进行哪怕是微小的改进,以获得相对于其他贡献者的优势。有证据表明,这很快导致了项目中许多不兼容的分支,对所有人都不利。
  • 许可证的“v3”部分确保购买设备的客户有权升级或更换飞行控制器上的ArduPilot版本。许可证并不要求它实际工作,只要求升级是可能的。这确保了即使制造商停止支持产品(这可能是出于非常合理的原因),如果所有者或开发社区决定获得支持,产品也可以继续发挥作用。ArduPilot已经出现了这样的例子。请注意,此要求仅适用于“用户产品”和制造商在技术上可以升级设备固件的产品。

可以集成封闭源代码(即专有)和开放源代码吗?

ArduPilot是开源的(GPLv3),但可以使用配套计算机运行封闭源代码,以方便将ArduPilet集成到您的系统中,或者添加更高级别的功能,使自己与竞争对手区别开来。建立在免费低级别飞行代码的可靠性之上,这样你就可以投资于更高级别的功能。我们相信ArduPilot与领先的封闭系统一样可靠,您不必受制于特定的制造商。以下是一家制造商如何做到这一点的图片。
在这里插入图片描述

2.3 ArduPilot系统组成

从整体上看下ArduPilot系统,其实不难发现主要组成归纳:

  1. 设备(应用):AntennaTracker/ArduCopter/ArduPlane/ArduSub/Rover/Blimp
  2. 库(组件):libraries
  3. 模块(三方):modules
  4. 地面站软件:Mission Planner/APM Planner 2.0/QGroundControl
  5. 标准协议:MAVLink/UAVCAN
  6. SDK、工具:MAVProxy/DroneKit
  7. 遥控接收机 + 遥控器
  8. 外部传感器(GPS/Compass/Lidar etc)
  9. 维测工具(调试工具,配置工具)
  10. 视频系统(单独拎出来,其实视频/照片都是摇杆的一部分)

注:可能有偏颇,但是这里重点是想说明我们想要了解整个系统运作,就需要了解系统的组成结构。

2.4 ArduPilot代码结构

ArduPilot的基本结构分为5个主要部分:

  1. 设备代码(AntennaTracker/ArduCopter/ArduPlane/ArduSub/Rover/Blimp)
  2. 共享库
  3. 硬件抽象层
  4. 工具目录
  5. 外部支持代码(即mavlink、dronekit)

.(工程目录结构)
├── AntennaTracker
├── ArduCopter
├── ArduPlane
├── ArduSub
├── Rover
├── Blimp
├── libraries
├── modules
└── Tools

注:MAVLink作为一种标准协议,将飞控从系统中独立出来,完成最为基本的飞行控制动作。
在这里插入图片描述

3. 后续

接下去,我们将逐步的基于现有DIY系统来逐步了解和学习ArduPilot系统,更新的章节会和Betaflight类似在此一并提供链接。

  1. ArduPilot飞控之DIY-F450计划
  2. ArduPilot Kakute F7 AIO DIYF450 without GPS配置
  3. ArduPilot Kakute F7 AIO DIYF450 之GPS配置
  4. 持续更新中。。。。。。

注:如果大家有兴趣研究和学习的,可以通过Welcome to the ArduPilot Development Site进行学习,源代码链接github-ArduPilot。

4. 参考资料

【1】BetaFlight开源工程结构简明介绍
【2】BetaFlight开源代码框架简介
【3】四轴飞控DIY简明步骤介绍
【4】四轴飞控DIY Mark4 - 减震
【5】关于穿越机FPV视频果冻效应的讨论
【6】Snap4iNav_Project

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

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

相关文章

读SQL进阶教程笔记12_地址与三值逻辑

1. SQL和数据库都在极力提升数据在表现层的抽象度,以及对用户隐藏物理层的概念 2. 关系模型是为摆脱地址而生的 2.1. “地址”不仅包括指针操作的地址,还包括数组下标等 3. 一个优雅的数据结构胜过一百行杂耍般的代码 3.1. 精巧的数据结构搭配笨拙的…

Spring MVC 的调用(12)

目录 SpringMVC流程 源码分析 第一步:用户发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者…

高效部署Redis Sentinel模式(哨兵模式),手把手教学

Redis Sentinel模式部署 前言一、服务器部署同版本的redis1、换软件源在yum拉取包的时候启用remi源 二、修改配置文件1.修改/etc/redis.conf2.配置/etc/redis/sentinel.conf 三、启动redis服务1、启动服务2、连接redis3、检查redis 前言 这里就不过多的解释高可用的好处了&…

CRM系统是什么?它有什么作用?

CRM系统是什么? CRM是Customer Relationship Management(客户关系管理)的缩写,是一种通过对客户进行跟踪、分析和管理的方法,以增加企业与客户之间的互动和联系,提高企业与客户之间的互信,从而…

基于 VITA57.4 标准的 8 路 500MSPS/1GSPS/1.25GSPS 采样率 14 位 AD 采集 FMC 子卡模块

板卡概述 FMC148 是一款基于 VITA57.4 标准的 JESD204B 接口 FMC 子卡模块,该模块可以实现 8 路 14-bit、500MSPS/1GSPS/1.25GSPS ADC 采集功能。该板卡 ADC 器件采用 ADI 公司的 AD9680 芯片,全 功率-3dB 模拟输入带宽可达 2GHz。该 ADC 与 FPGA 的主机接口通 …

Revit相关问题:符号线,转转问题,生成三维视图

一、Revit符号线如何画粗一些?如何自定义符号线子类别? 1、Revit在族里面符号线的粗细、显示颜色、显示线型为符号线的子类别控制! 你可以通过,管理选项卡新建子类别,然后在画符号线的时候应用该子类别! 新建符号线对象样式 应用子类别 二、Revit三维模…

背包问题——01背包|完全背包

目录 前言&背包问题的历史 01背包 1、题目 2、暴力解01背包 Ⅰ、代码 3、动态规划解01背包 Ⅰ、二维dp数组解01背包 1)dp数组的含义 2)递推公式 3)dp数组的初始化 4)遍历顺序的讨论 5、代码 Ⅱ、一维数组解01背包 1&…

C#调用C++封装的SDK库(dll动态库)——上

C#调用C封装的SDK库(dll动态库)——上 一、C封装库 通过前几篇文章,我们封装了C的动态DLL库,有Qt版的,有C版的,当然还有介绍了Pimpl模式在SDK封装中的使用: Qt创建SDK VS创建SDK Pimple在SDK封装中的应用 但是&a…

RabbitMQ入门

AMQP AMQP(Advanced Message Queuing Protocol,高级消息队列协议) 是进程之间传递异步消息的网络协议。 AMQP工作过程 发布者(Publisher)发布消息(Message),经过交换机(Exchange),交换机根据路由规则将收到消息分发给交换机绑定的队列(Queue),最后AM…

二维数组的总结

一、时间复杂度和空间复杂度 时间复杂度和空间复杂度是衡量算法效率的两个重要指标。时间复杂度是指算法执行所需的时间,而空间复杂度是指算法执行所需的内存空间。 计算时间复杂度和空间复杂度需要分析算法中各个操作的执行次数和内存使用情况。具体的计算方法可以…

亚马逊、ebay、temu如何提升产品点击率?测评自养号解析

产品点击率对于店铺销售额的影响至关重要,尤其是在竞争越来越激烈的市场环境中,想要有销量和转化,提高产品listing点击率成为了非常关键的一环。 1. 产品主图 顾客浏览产品时,第一眼看到的就是主图,一张优质的主图更容…

CSDN博客编写教程

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

UniLM模型简单介绍

目录 一、概要 二、深入扩展 2.1 预训练任务 2.2 模型精调 一、概要 如果将基于Transformer的双向语言模型(如BERT模型中的掩码语言模型)与单向的自回归语言模型(如BART模型的解码器)进行对比,可以发现&#xff0c…

springboot+vue职称评审管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的职称评审管理系统。项目源码请联系风歌,文末附上联系信息 。 目前有各类成品java毕设,需要请看文末联系方式 …

[Java]监听器(Listener)

过滤器(Filter)https://blog.csdn.net/m0_71229255/article/details/130246404?spm1001.2014.3001.5501 一 : Listener监听器简述 监听器就是监听某个对象的的状态变化的组件 监听器的相关概念: 事件源: 被监听的对象 ----- 三…

(补)4.13每日一题

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 题目连接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 解题 开始我把这个题目想简单了,我想的是输入一个字符串,从第一…

【系统集成项目管理工程师】项目整体管理

💥十大知识领域:项目整体管理 项目整体管理包括以下 6 个过程: 制定项目章程定项目管理计划指导与管理项目工作监控项目工作实施整体变更控制结束项目或阶段过程 一、制定项目章程 制定项目章程。编写一份正式文件的过程,这份文件就是项目章程…

pushmall推贴共享电商2023年4月计划

Pushmall推贴共享电商2023年4月计划 2023年 二月份优化完成 1、商圈套餐卡:商品、优惠券、活动优化; 2、会员预充值一卡通:指定商家会员卡充值优惠; 3、商家海报:店铺海报、商品海报、商圈卡海报优化。 4、首页重新布…

MLCC周期性分析:当前时点处于周期反转前夜

MLCC是电子工业大米,供需波动导致行业成周期性波动 MLCC是最常用的被动元器件之一,终端下游涵盖消费电子、家电、汽车、通信等。在5g、汽车电子、智能硬件的推动下,MLCC行业需求稳步增长。供给端来看,中国大陆厂商合计市场份额不…

数据要素化全面提速,数据复制将迎来春天?

数据复制市场将迎来真正的春天? 目前看的确如此。近日,国家发改委密集发文,从产权、分配、流通、安全等多个角度解读“数据二十条”( 《中共中央国务院关于构建数据基础制度更好发挥数据要素作用的意见》,简称“数据二…