ArduPilot代码解析之八 — 车辆类型

ArduPilot代码解析之一 — 核心架构 摘要:ArduPilot采用单线程协作式架构,AP_Vehicle基类提供基础框架,所有车辆类型均继承自该框架。系统包含参数系统、调度器、硬件抽象层等核心组件,通过固定频率主循环执行任务。初始化过程分阶段进行,确保依赖关系满足。参数系统支持持久化存储和动态修改,串口管理系统可灵活分配50多种协议。硬件抽象层保持跨平台兼容性,状态管理跟踪飞行状态。车辆类型通过实现纯虚函数扩展功能,支持脚本和外部控制集成。架构设计兼顾通用性和扩展性,为各类无人机提供统一开发基础。 阅读详情

本页面提供了ArduPilot支持的车辆类型、代码结构以及它们与核心架构关系的技术概述。每种车辆类型都以专用固件的形式实现,但所有车辆类型都共享AP_Vehicle基类和通用子系统。


支持的车辆类型和代码实体

ArduPilot 支持以下几种主要车辆类型,每种类型都有其专用的代码库和固件:

  • ArduCopter:多旋翼飞行器和直升机
  • ArduPlane:固定翼飞机(包括垂直起降/四轴飞行器)
  • 漫游车:地面和水面车辆
  • 潜艇:水下航行器
  • 飞艇:比空气轻的飞行器

车辆类型继承和代码结构

下图将车辆类型名称与其主要代码实体和继承关系进行了映射。


车辆类型检测和配置

车辆类型在构建时通过预处理器标志和配置文件确定。每种车辆类型都有其自身的一组参数和配置逻辑,这些参数和逻辑在诸如 `<v1>`Parameters.cpp和config.h`<v2>` 之类的文件中定义。


跨车型通用核心系统

所有车辆类型都共享一套核心系统和库,这些系统和库在每辆车的主类中实例化和使用。其中包括:

  • 硬件抽象层(AP_HAL)
  • 姿态航向参考系统(AP_AHRS)
  • 调度器( AP_Scheduler)
  • 任务系统(AP_Mission)
  • 地面控制站通信(GCS_MAVLink)
  • 数据记录(AP_Logger)
  • 参数系统(AP_Param)
  • 全球定位系统 (AP_GPS)
  • 惯性传感器(AP_InertialSensor)

ArduCopter

ArduCopter 是多旋翼飞行器和直升机的固件。主要类是Copter(ArduCopter/Copter.h)。

框架类型

ArduCopter 支持多种机架配置,可通过FRAME_CLASS运行时或构建时的参数进行选择。

框架类
ArduPilot 开发手册学习:写在前面 1.ArduPilot 是什么 ArduPilot 是一个开源的飞控系统,支持多轴的直升机、传统的直升机、 阅读详情

相关推荐

ArduPilot代码解析之二 — 载具基础系统(AP_Vehicle)

AP_Vehicle是ArduPilot飞行器系统的核心基类,为Copter、Plane等各类飞行器提供通用架构。它包含初始化流程(setup/loop)、参数系统、调度器管理、传感器集成等基础功能,通过虚函数接口支持不同飞行器的特性扩展。系统采用分层设计,共享通用参数和任务,同时允许各飞行器实现特有的控制逻辑和模式管理。这种架构实现了代码复用和接口统一,支持多类型飞行器的灵活开发与维护。

rainercool的专栏 546

ArduPilot 概述

ArduPilot是一款开源自动驾驶系统,采用模块化架构设计,支持多旋翼飞行器、固定翼飞机等多种无人载具。其核心架构分为车辆应用程序、共享库和开发基础设施三层,通过继承基类实现代码复用。系统采用协作式多任务调度,包含400Hz的快速循环任务和低速任务。控制架构采用多层级联设计,从飞行模式逻辑到电机输出逐级转换。系统支持40多种通信协议,具备完善的参数配置、安全检查和故障保护机制。基于WAF构建系统支持200多种硬件板,并配备SITL仿真和自动化测试框架。这种设计实现了自动驾驶系统的模块化、安全性和灵活性。

rainercool的专栏 847

ArduPilot代码解析之七 — 自动调谐系统

自动调谐系统通过执行受控飞行机动自动确定飞行器姿态控制回路的最佳PID增益,无需人工干预。系统采用多态类层次结构,针对多旋翼和直升机平台分别实现不同的调谐算法:多旋翼通过"抽搐"机动测量瞬态响应来调整参数,直升机则采用频域分析方法。调谐过程分为多个步骤,包括增益测试、验证和保存,最终应用安全裕度确保稳定性。系统支持通过飞行模式或辅助开关调用,并自动保存优化后的参数。该技术实现了飞行控制参数的智能化优化,显著提升了飞行性能和稳定性。

rainercool的专栏 1048

ArduPilot代码解析之三 — 布防和安全系统

摘要:ArduPilot的启动与安全系统通过AP_Arming类实现武装锁定和飞行安全检查。系统支持多种武装方式(遥控指令、硬件开关等),并可通过参数(如ARMING_CHECK、ARMING_REQUIRE)配置预武装检查项目(GPS、电池、传感器等)。安全机制包含故障保护(低电量/RTL)、硬件安全开关和油门联锁等功能,不同载具类型可扩展专属检查逻辑。该系统提供多层防护,建议保留核心安全检查以确保飞行安全,用户需理解配置参数以诊断武装失败或故障保护触发问题。(149字)

rainercool的专栏 523

MAVLINK在Ardupilot中的初始化过程

MAVLINK在Ardupilot中的初始化过程前言一、_chan二、init_ardupilot()2.1 SYSID2.2 setup_console()2.3 setup_uarts()2.4 mavlink_delay_cb() 本文将以ArduSub为例写一下在APM中MAVLINK是如何实现初始化的,其他车辆类型实现过程是基本一致的,也可当作参考。如有错误请及时告知。 前言 APM中MAVLINK的传输和控制主要实现在libraries/GCS_MAVLINK以及对应的车辆文件夹

moumde的博客 2153

ArduPilot代码解析之九 — ArduCopter(多旋翼飞行器)

ArduCopter是ArduPilot系统中的多旋翼飞行控制方案,支持四旋翼、六旋翼等飞行器。采用分层架构设计,包含400Hz主控制回路、25种飞行模式切换和级联控制结构(位置-姿态-速率)。系统集成共享控制库,实现传感器融合、导航算法和故障保护机制,支持MAVLink通信与全面日志记录。通过模块化设计和多速率调度,为各类多旋翼飞行器提供从手动到全自动的飞行控制解决方案。

rainercool的专栏 605

ArduSub程序学习(1)——ardupilot框架整理

AP_HAL层(硬件抽象层)是我们制作 ArduPilot 的方式可移植到许多不同的平台。有一个顶级AP_HAL libraries/AP_HAL,用于定义代码其余部分的接口 有针对具体的板子特性,然后就有了AP_HAL_XXX 子目录,例如,AP_HAL_AVR 用于基于 AVR 的 开发板,AP_HAL_PX4用于 Pixhawk 开发板和 AP_HAL_Linux 基于 Linux 开发板。工具目录tools directories工具目录是杂项支持目录。

weixin_49839886的博客 2811

Win10下Ardupilot仿真环境搭建

VM进行Win10下Ardupilot仿真环境搭建

weixin_49088856的博客 1658

Ardupilot光流代码分析

目录 文章目录目录摘要1.光流传感器硬件介绍2.初始化光流传感器 摘要 本节主要学习Ardupilot光流部分代码,由于无人机在室内无法进行GPS定位,常采用的室内定位方法是光流定位,欢迎批评指正! 1.光流传感器硬件介绍 PX4Flow 是一款与Pixhawk飞控配套使用光流传感器。传感器拥有原生 752×480 像素分辨率,计算光学流的过程中采用了4倍分级和剪裁算法,计算速度达到2...

陌城烟雨 3387

ArduPilot简介

一,什么是ArduPilot? ArduPilot是一个可信的,多用途的,开源的自动驾驶系统。该系统支持了非常多的交通工具类型,包括多旋翼无人机,传统直升机,固定翼飞行器,船,潜艇,巡逻车等。源码由大型开发者社区的专家和爱好者共同开发和维护。也欢迎更多的开发者加入源码的迭代演进,最好的“打开”方式就是加入开发者团队论坛。该论坛对所有人开放,在这里可以深入感受到开发者们对ArduPilot的热爱。 论坛链接:ArduPilot Discourse 开发者指南:Welcome to the ArduPil

从0到1,突破自己 5450

DELL SC存储扩容避坑指南:6Gb vs 12Gb扩展柜混插的真相

本文深入解析DELL SC存储扩容中6Gb与12Gb扩展柜混插的核心规则与性能影响。文章指出,从SCOS 7.3版本起允许混插,但整个SAS环路速率将降至最低设备水平,尤其在12Gb控制器上接入6Gb扩展柜会严重拖累性能。指南提供了清晰的兼容性矩阵、实战操作流程及关键避坑清单,帮助管理员安全、高效地完成存储扩容。

weixin_28314575的博客 458

【生产实践】SSH服务弱加密算法修复指南(附完整操作流程)

SSH服务弱加密算法漏洞修复方案 检测发现SSH服务存在支持弱加密算法漏洞,主要风险包括: 使用arcfour、aes128-cbc等易被破解的算法 面临密钥恢复、重放攻击等安全威胁 提供两种修复方案: 推荐方案:升级OpenSSH至最新版本 替代方案:修改SSH配置禁用弱算法(需注意可能影响旧客户端连接) 修复步骤: 编辑/etc/ssh/sshd_config 注释或删除弱算法配置 添加强加密算法(如aes128-ctr等) 重启SSH服务 注意事项: 建议先在测试环境验证 可能需配合客户端升级 操作前

SunMy的博客 3092

Win11上WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置

本文详细介绍了在Win11系统上安装和配置WSL2及Ubuntu22.04开发环境的完整流程与避坑指南。内容涵盖从解决网络安装错误、更换国内镜像源以加速软件更新,到一站式配置C++开发工具链(包括GCC、GDB、CMake等),并提供了提升WSL2使用体验的实用技巧和故障排除方法,帮助开发者高效搭建稳定的Linux开发环境。

weixin_29306261的博客 473

华硕主板UEFI模式下安装Ubuntu与Windows双系统全攻略

本文详细讲解了在华硕主板UEFI模式下安装Ubuntu与Windows双系统的完整流程。从安装前的BIOS关键设置(如处理安全启动与CSM)、使用GPT分区表,到在Windows中安全分配空间、手动创建Ubuntu分区,最后完成引导配置,提供了避免常见错误的实用技巧,确保双系统稳定共存。

weixin_29199873的博客 344

别只当玩具!聊聊这个555金属探测器电路背后的电磁感应与RLC调谐原理

本文深入解析了555金属探测器电路的工作原理,重点探讨了电磁感应与RLC调谐原理。通过分析电感线圈的电磁特性、RLC谐振电路的行为以及555定时器的多重功能,揭示了这一看似简单的装置如何实现金属检测。文章还提供了灵敏度优化方案和常见问题解决方法,帮助读者从科学角度理解这一实用技术。

weixin_29204205的博客 476

【软考高级架构】论文范文16——论分布式缓存架构设计及其应用

随着互联网业务的快速发展,高并发访问和海量数据处理对系统响应时间提出了极高要求,传统基于磁盘的数据库存储已难以满足毫秒级的性能需求。分布式缓存作为一种高性能、可扩展的数据存储中间件,能够有效减轻后端数据库压力、加速热点数据访问、提升系统吞吐量,已成为高并发系统架构中的核心组件。本文以笔者主导的某大型电商平台秒杀系统建设项目为案例,围绕分布式缓存架构设计展开论述。笔者担任系统架构师,主导了缓存选型、数据分片策略、缓存一致性方案、高可用架构及缓存穿透/雪崩/击穿防护机制的设计与落地。

qq837993702的博客 162

(三)UPF之Domain Coverage Relationship(Cover、Equivalent、Independent)

整个Soc架构中一般会存在多个Power Domain,不同的Power Domain之间也存在着一定的Coverage关系。在Cadence工具中,这种。不同的Domain Coverage关系中,各个Domain存在着一定的关联()。

Mr.翟的博客 1422

让 ABAP 复杂内表优雅“喂饱”:Complex Internal Table Filling 全面实战指南

本文为ABAP开发者系统梳理了复杂内表的填充与复制方法。重点介绍了work area的两种声明方式、APPEND操作的多形态用法及其初始值语义,以及VALUE #( )构造器的逐行与整表写法。同时讲解了CORRESPONDING的同名字段映射功能,帮助开发者在"航司与航线"等复杂业务场景中实现最佳实践。文章还涵盖内存优化、可读性建议和常见误区,提供可运行样例,适用于ABAP On-Premise和SAP BTP环境。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 168

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: ArduPilot代码解析之七 — 自动调谐系统
下一篇: ArduPilot代码解析之九 — ArduCopter(多旋翼飞行器)
timmy-uav
博客等级 码龄26年 526粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

timmy-uav

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值