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

2023-05-16

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

  • 1. 源由
  • 2. 了解&阅读
    • 2.1 ArduPilot历史
    • 2.2 关于GPLv3
    • 2.3 ArduPilot系统组成
    • 2.4 ArduPilot代码结构
  • 3. 后续
    • 3.1 DIY-F450
    • 3.2 软件设计
  • 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是什么?其实换句话说,就是知识产权归属的问题。之前有整理过使用最多的9种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类似在此一并提供链接。

3.1 DIY-F450

  1. ArduPilot飞控之DIY-F450计划
  2. ArduPilot Kakute F7 AIO DIYF450 without GPS配置
  3. ArduPilot Kakute F7 AIO DIYF450 之GPS配置
  4. ArduPilot之posHold&RTL实测
  5. ArduPilot之GPS Glitch问题&M8N模块配置
  6. 持续更新中。。。。。。

3.2 软件设计

  1. ArduPilot之开源代码框架
  2. ArduPilot飞控之ubuntu22.04-SITL安装
  3. ArduPilot飞控之ubuntu22.04-Gazebo模拟
  4. ArduPilot飞控之Mission Planner模拟
  5. ArduPilot飞控AOCODARC-H7DUAL固件编译
  6. ArduPilot之开源代码Library&Sketches设计
  7. ArduPilot之开源代码Sensor Drivers设计
  8. ArduPilot之开源代码基础知识&Threading概念
  9. ArduPilot之开源代码UARTs and the Console使用
  10. ArduPilot之开源代码调试技巧
  11. ArduPilot飞控启动&运行过程简介
  12. 持续更新中。。。。。。

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

4. 参考资料

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ArduPilot开源飞控系统之简单介绍 的相关文章

  • java中for、foreach、stream性能比较

    在开发中循环遍历一个数组经常会用到 xff0c jdk8推出了一些新特性 xff0c 对循环做了比较 xff0c 通过代码亲测 xff0c 记录一下 xff01 1 for循环 public static void main String
  • 自制肥鲨HDO2电源升压延长线

    自制肥鲨HDO2电源升压延长线 1 问题源由2 解决方案3 材料准备4 最终延长线产出4 1 裸照4 2 成品 5 参考资料 1 问题源由 之前我们介绍了 自制肥鲨HDO2电源降压延长线 xff0c 支持3S 6S动力电池 xff0c 主要
  • iNavFlight之RC遥控MSP协议

    iNavFlight之RC遥控MSP协议 1 RC摇杆MSP协议2 地面站配置 amp MSP遥控器2 1 iNav地面站 配置2 2 iNav地面站 MSP遥控器 3 RC摇杆总体逻辑框架3 1 摇杆信息获取3 2 摇杆信息处理3 3 摇
  • iNavFlight之RC遥控CRSF协议

    iNavFlight之RC遥控CRSF协议 1 遥控器电传框架设计1 1 场景分析1 2 逻辑框架1 2 1 电传信息获取1 2 2 电传信息处理1 2 3 电传初始化 1 3 模块化设计 2 CRSF电传报文2 1 CRSF电传报文格式2
  • iNavFlight之电传MAVLink协议

    iNavFlight之电传MAVLink协议 1 业务逻辑框架2 MAVLink电传报文2 1 MAVLink电传报文格式2 2 iNav支持地面站报文 接收 2 3 iNav支持飞控报文 发送 3 MAVLink报文处理4 参考资料 本章
  • PX4模块设计之四十七:mavlink模块

    PX4模块设计之四十七 xff1a mavlink模块 1 mavlink模块简介2 模块入口函数mavlink main3 mavlink模块重要函数3 1 Mavlink start3 2 Mavlink task main3 3 Ma
  • SVN工程转Git工程&Github托管

    SVN工程转Git工程 amp Github托管 1 介绍2 autoAudioTest之SVN转Github步骤Step 1 工作环境 ubuntu Step 2 安装升级必要软件Step 3 转换脚本Step 4 检查软件运行环境Ste
  • iNav飞控AOCODARC-F7MINI固件编译

    iNav飞控AOCODARC F7MINI固件编译 1 编译目标 xff08 AOCODARC F7MINI xff09 2 编译步骤Step 1 软件配置环境准备Step 2 获取开源代码Step 3 构建命令介绍Step 4 厂家目标板
  • BetaFlight飞控AOCODARC-F7MINI固件编译

    BetaFlight飞控AOCODARC F7MINI固件编译 1 编译目标 xff08 AOCODARC F7MINI xff09 2 编译步骤Step 1 软件配置环境准备Step 2 获取开源代码Step 3 构建命令介绍Step 4
  • Google AIY Vision Kit安装及国内配置

    Google AIY Vision Kit安装及国内配置 1 AIY Vision Kit组装环节Step 1 xff1a 收集其他附件选择1 xff1a 使用AIY项目应用程序选择2 xff1a 使用显示器 鼠标和键盘 Step 2 xf
  • WiFi monitor模式的配置和运行检查(Ubuntu系统)

    WiFi monitor模式的配置和运行检查 1 WiFi monitor模式介绍2 WiFi monitor模式查看Step1 xff1a 确保计算机上有安装硬件WiFi无线网卡Step2 xff1a 安装必要的工具Step 3 xff1
  • github上的源码编译成.hpi插件

    目录 1 xff0c vim安装 安装 Maven 编译源码生成 hpi 2 xff0c windos 安装idea 安装maven idea设置maven 将github上的源码拉进并编译 成功 近期做jenkins监控github xf
  • BetaFlight统一硬件资源简单配置修改

    BetaFlight统一硬件资源简单配置修改 1 源由2 资源配置注意事项3 资源配置文件修改验证步骤Step 1 xff1a 确认硬件修改内容Step 2 xff1a 资源配置文件修改Step 3 xff1a 验证配置文件Step 4 x
  • SSH远程登录RaspberryPi命令行响应缓慢问题

    SSH远程登录RaspberryPi命令行响应缓慢问题 1 问题2 分析3 解决3 1 去掉PAM部分鉴权模块3 2 去掉sshd的DNS设置3 3 无线WiFi信号优化方法一 xff1a ifconfig操作方法二 xff1a 内核自动检
  • ESP32-FPV-Camera介绍和使用

    ESP32 FPV Camera介绍和使用 1 编译目标2 编译步骤Step 1 软件配置环境准备Step 2 获取开源代码Step 3 2 4G WiFi频段选择Step 4 要确保2 4G WiFi网卡处于Monitor状态Step 5
  • DIY-BETAFPV和DIY(ESP-01F+E19-900M20S2模块)915MHz信号测试对比

    DIY BETAFPV和DIY xff08 ESP 01F 43 E19 900M20S2模块 xff09 915MHz信号测试对比 1 前提条件2 实测效果2 1 起点附近 xff08 距离3m左右 xff09 2 2 30m米距离 xf
  • Raspbian镜像无头烧录

    Raspbian镜像无头烧录 1 源由2 需求3 分析4 步骤4 1 删除tf卡分区内容4 2 balena烧录镜像4 3 配置USB直接登录4 4 配置WiFi 2 4G网络登录4 5 修改登录账号密码4 6 数据同步和弹出tf卡 5 登
  • wfb-ng Release 23.01镜像无头烧录&配置(1)

    64 TOC wfb ng Release 23 01镜像无头烧录 amp 配置 1 最近打算搭一个数字图传系统 xff0c 并进行一些简单测试 xff0c 在刚开始烧录阶段就遇到各种问题 当然 xff0c 主要的问题就是不熟悉 xff0c
  • wfb-ng 锁定WiFi接口

    wfb ng 锁定WiFi接口 1 源由2 需求3 分析4 步骤4 1 确认网卡MAC地址4 2 修改udev配置文件4 3 配置重载 amp 重启4 4 确认逻辑网卡接口4 6 修改wfb ng逻辑WiFi通信接口 5 参考资料6 补充资
  • apt-get通过代理更新系统

    apt get通过代理更新系统 1 源由2 需求3 分析4 步骤4 1 安装CCProxy4 2 配置CCProxy4 3 apt get更新4 4 apt get升级4 5 apt get安装 5 补充资料 命令行设置代理6 参考资料 1

随机推荐