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

这篇具有很好参考价值的文章主要介绍了ArduPilot开源飞控系统之简单介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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与领先的封闭系统一样可靠,您不必受制于特定的制造商。以下是一家制造商如何做到这一点的图片。
ardupilot飞控,ArduPilot,开源,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作为一种标准协议,将飞控从系统中独立出来,完成最为基本的飞行控制动作。
ardupilot飞控,ArduPilot,开源,Ardupilot

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模块配置

3.2 DIY-Mark4

  1. ArduPilot硬件AOCODARC H7DUAL配置文件讨论
  2. ArduPilot开源代码之H743+BMI270x2+ChibiOS配置适配
  3. ArduPilot之H743+BMI270x2+First Normal Takeoff
  4. 御用飞场之惊险炸鸡寻根溯源
  5. ArduPilot飞控开源代码之滤波设置
  6. ArduPilot之H743遗留配置问题解决
  7. ArduPilot之H743快速加减油门抬头现象分析
  8. ArduPilot之H743自动PID调节
  9. ArduPilot之433电传模块集成之H7Dual飞控Rx/Tx丝印问题
  10. ArduPilot H743 Dual BMI270 Mark4 四轴DIY简单功能验证
  11. ArduPilot开源飞控之磁力计校准
  12. ArduPilot开源飞控之GCS显示DPS310异常问题
  13. ArduPilot开源代码之Aocoda-RC F405V2 Mark4 7“ PNP适配
  14. ArduPilot开源代码之MatekSys Optical Flow 3901-L0X
  15. ArduPilot开源代码之CompanionComputer上天计划

3.3 DIY-T1-VTOL

  1. Ardupilot开源飞控之VTOL之旅:开箱
  2. Ardupilot开源飞控之VTOL之旅:配件规格
  3. Ardupilot开源飞控之VTOL之旅:配件试装
  4. Ardupilot开源飞控之VTOL之旅:打印件清单
  5. 持续更新中。。。。。。

3.4 软件设计

  1. ArduPilot之开源代码框架
  2. Ardupilot开源飞控之ChibiOS简介
  3. Ardupilot开源飞控之Wiki修改操作
  4. ArduPilot飞控之ubuntu22.04-SITL安装
  5. ArduPilot飞控之ubuntu22.04-Gazebo模拟
  6. ArduPilot飞控之Mission Planner模拟
  7. ArduPilot之开源代码waf编译
  8. ArduPilot之开源代码waf-configure编译
  9. ArduPilot飞控AOCODARC-H7DUAL固件编译
  10. ArduPilot之开源代码Library&Sketches设计
  11. ArduPilot之开源代码Sensor Drivers设计
  12. ArduPilot之开源代码基础知识&Threading概念
  13. ArduPilot之开源代码UARTs and the Console使用
  14. ArduPilot之开源代码调试技巧
  15. ArduPilot飞控启动&运行过程简介
  16. ArduPilot之开源代码Task介绍
  17. ArduPilot开源代码之AP_Param
  18. ArduPilot开源代码之AP_Scheduler
  19. ArduPilot开源代码之AP_VideoTX
  20. ArduPilot开源代码之AP_InertialSensor_Backend
  21. ArduPilot开源代码之AP_InertialSensor
  22. ArduPilot开源代码之AP_Logger
  23. ArduPilot开源代码之AP_GPS
  24. ArduPilot开源代码之RCInput
  25. ArduPilot开源代码之AP_RCProtocol_CRSF
  26. ArduPilot开源飞控之Companion Computers简单分析
  27. ArduPilot开源飞控之MAVProxy简介
  28. ArduPilot飞控之FAILSAFE机制
  29. ArduPilot开源飞控之do_failsafe_action
  30. ArduPilot开源飞控之飞行模式
  31. ArduPilot开源代码之AP_RangeFinder
  32. ArduPilot开源飞控之AP_Baro
  33. ArduPilot开源飞控之AP_Baro_DPS310/AP_Baro_DPS280
  34. ArduPilot开源飞控之AP_Baro_MSP
  35. ArduPilot开源飞控之AP_Baro_DroneCAN
  36. ArduPilot开源飞控之AP_Baro_ExternalAHRS
  37. ArduPilot开源飞控之AP_Baro_SITL
  38. ArduPilot开源飞控之AP_AHRS
  39. ArduPilot开源飞控之AP_ExternalAHRS_VectorNav
  40. ArduPilot开源飞控之AP_InertialNav
  41. ArduPilot开源飞控之Copter任务
  42. ArduPilot开源飞控之AP_Camera
  43. ArduPilot开源飞控之AP_Mount
  44. ArduPilot开源飞控之AP_Compass
  45. ArduPilot开源飞控之AP_Relay
  46. ArduPilot开源飞控之AP_OpticalFlow
  47. ArduPilot开源飞控之RC_Channels
  48. Ardupilot开源飞控之Invensense IMUs
  49. ArduPilot之开源代码电压/电流校准
  50. 持续更新中。。。。。。

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

4. 参考资料

【1】BetaFlight开源工程结构简明介绍
【2】BetaFlight开源代码框架简介
【3】四轴飞控DIY简明步骤介绍
【4】四轴飞控DIY Mark4 - 减震
【5】关于穿越机FPV视频果冻效应的讨论
【6】Snap4iNav_Project文章来源地址https://www.toymoban.com/news/detail-533402.html

到了这里,关于ArduPilot开源飞控系统之简单介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 无人机/飞控--ArduPilot、PX4学习记录(5)

    这几天看dronekit,做无人机失控保护。 PX4官网上的经典案例,我做了很多注解,把代码过了一遍。 无人机具体执行了:  先起飞,飞至正上空10m-向北移动10m-向东移动10m-向南移动10m-向西移动10m-回到初始起飞点(即home点),降落。 具体执行之前,要打开JMAVSim,接下来会在JMAV

    2024年04月15日
    浏览(62)
  • (4)(4.6.1) ArduPilot操作的简单概述

    文章目录 前言 1 基本目标 2 输入 3 输出 4 传感器 5 参数说明 这是一个非常基本的 ArduPilot 固件运行在 自动驾驶仪 上的功能概述。下面显示的是一个基本功能操作的简单框图。这将使你在配置系统时对 ArduPilot 的基本功能有一个更好的了解。 软件的基本目标是提供对飞行器的

    2024年02月08日
    浏览(41)
  • ardupilot开发 --- ardupilot parameter与mavlink massage篇

    除了可以再初始化设置外,ardupilot parameters一般通过mavlink massage来动态设置; https://ardupilot.org/copter/docs/parameters.html https://mavlink.io/en/messages/common.html https://blog.csdn.net/weixin_43321489/article/details/132236353

    2024年02月10日
    浏览(46)
  • Ardupilot环境搭建

    Ardpilot介绍:ArduPilot通过多种传感器的数据(GPS、加速度计、气压计、磁场计)等来估计飞行器的姿态,从而使飞行器能够保持稳定。被称为APM的飞控硬件,其实全程就是Ardu Pilot Mega,但是2013年后,这个系列的飞控硬件改名为Pixhawk,ArduPilot只用来指特定的飞控软件,但是约定

    2024年02月07日
    浏览(38)
  • ardupilot开发 --- 深度相机 篇

    需要机载计算机作为中介!!

    2024年02月06日
    浏览(42)
  • ardupilot开发 --- git 篇

    工作区:就是你在电脑里能看到的目录; 暂存区:stage区 或 index区。存放在 :工作区 / .git / index 文件中; 版本库:本地仓库,存放在 :工作区 / .git 中 关于 HEAD 是所有本地分支的游标(指针); HEAD既可以指向某个分支,还可以指向某个分支的某个(次)提交; HEAD指向谁,

    2024年02月04日
    浏览(44)
  • Ardupilot学习笔记

    https://doc.cuav.net/tutorial/copter 【1】https://ardupilot.org 一套开源的自驾仪,集成了各种各样的代码,包括其他开源代码(如PX4代码)和项目、驱动等。 即:自驾仪即集成了整个可以实现无人载具(如无人机)自动驾驶功能的代码。 指定硬件(即target board)后,将Ardupilot编译后的可以

    2024年02月12日
    浏览(43)
  • ardupilot 遥控的输入控制模式

    本节主要记录自己整理ardupilot的遥控器的输入控制模式:正常模式、简单模式、超简单模式的理解。 在不用简单和超简单的模式的情况下,无人机操作员操作的控制输入是对应着不断旋转着的飞行器进行操作的。如上方图所示举例,当无人机操作员进行向右(红色)的 横滚

    2024年02月15日
    浏览(38)
  • ardupilot开发 --- Lua脚本篇

    ArduPilot引入了对Lua脚本的支持; 可以同时运行多个脚本; Lua脚本存放在 SD card 中; Copter-4.0 及以上版本才支持Lua脚本; scripting API ?scripting applets ? 飞控条件:2 MB of flash and 70 kB of memory ; 将Lua脚本上传到 SD card’s APM/scripts 文件夹中,在Mission Planner使用MAVFTP可以上传文件;

    2024年02月11日
    浏览(38)
  • Nooploop空循环 基于ArduPilot开源自动驾驶仪平台(APM固件)的TOFSense/-F/-M全系列激光测距传感器应用图文教程

    自2023/7/10日起ArduPilot飞控固件开始支持深圳空循环科技有限公司的TOFSense系列产品。从Plane/Copter/Rover 4.5 开始,Ardupilot 固件添加了对 TOFSense协议的支持,用于避障和高度保持。用户如果使用低于该版本的固件需要自行将相关文件进行移植与适当修改,才能支持TOFSense,TOFSense传

    2024年02月04日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包