news 2026/5/17 6:21:33

ArduPilot 概述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ArduPilot 概述

目的和范围

ArduPilot 是一款开源自动驾驶软件系统,旨在控制包括多旋翼飞行器、固定翼飞机、地面车辆、潜艇和天线跟踪器在内的无人驾驶车辆。本文档提供了 ArduPilot 代码库的高级架构概述,重点介绍支撑所有车辆类型的基本系统组织、组件关系和设计模式。

本概述涵盖以下内容:

  • 模块化架构将车辆专用应用程序与共享库分离
  • 继承层次结构和基类使得代码能够在不同车辆类型之间重用。
  • 核心子系统包括控制、导航、通信和安全系统
  • 构建流程和测试基础设施

有关各个子系统的具体详细信息,后续会陆续推出。

高级系统架构

ArduPilot 由三个主要层组成:车辆应用程序、共享库和开发基础设施。特定于车辆的应用程序(ArduCopter、ArduPlane 等)继承自一个通用基类,并使用一组共享库来实现控制算法、传感器融合、通信协议和安全系统。

系统组织

图 1:ArduPilot 系统架构 - 车辆应用程序继承自 AP_Vehicle 并使用共享的控制、传感器、通信和安全库


车辆类别层级

所有车辆类型都继承自基AP_Vehicle类,该基类提供通用功能,包括参数系统、调度器、串行管理和 HAL(硬件抽象层)回调。车辆特定的实现会重写虚方法来提供自定义行为。

图 2:车辆继承层次结构 - 所有车辆均继承自 AP_Vehicle 并实现车辆特定的飞行模式

该类Copter(定义于ArduCopter/Copter.h181包含对所有主要子系统的引用:

  • flightmode- 当前活动模式(指向模式对象的指针)
  • attitude_control- 姿态控制器实例
  • pos_control- 位置控制器实例
  • wp_nav- 航点导航控制器
  • motors- 电机混合和输出
  • ahrs姿态和航向参考系统

核心执行模型

ArduPilot 使用协作式多任务调度器,以指定的速率执行任务。主执行流程遵循 HAL 回调模式,setup()在启动时调用一次,之后loop()持续调用。

主循环执行

图 3:主要执行流程 - 基于调度器的协作式多任务处理,包含快速和慢速循环任务

调度程序任务表定义如下:ArduCopter/Copter.cpp113-265使用SCHED_TASK宏。快速循环任务以主循环速率(通常为 400Hz)运行,而较慢的任务以较低速率运行,以分散 CPU 负载。

飞行模式架构

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 4:41:59

ArduPilot代码解析之一 — 核心架构

目的和范围 本页面详细介绍了构成所有 ArduPilot 车辆类型基础的基本架构模式和核心系统。内容涵盖基础车辆框架(AP_Vehicle)、基于调度器的执行模型、参数系统以及核心子系统的集成和初始化方式。 有关特定车辆的实现方式(直升机、飞机、漫游车等),请参阅后续章节。 架…

作者头像 李华
网站建设 2026/5/11 17:30:54

万物识物的模型规模、多国语言翻译的词库/模型体量在端侧本地模型可以放下吗?

问题直击端侧AI落地的核心痛点——万物识物的模型规模、多国语言翻译的词库/模型体量与端侧芯片的存储、算力、功耗的矛盾,这也是当前端侧AI技术的核心优化方向。但答案是明确的:经过轻量化优化的端侧模型,完全能实现「实用级」的万物识物和多…

作者头像 李华
网站建设 2026/5/11 17:30:55

Java中,方法/类的修饰符的书写位置

一.书写顺序(含类、方法、字段) 在Java中,方法的修饰符和返回类型的书写顺序是有规定的 如main方法中,正确且标准的写法是: public static void main(String[] args){... } 这是Java社区、官方文档、IDE&#xff0…

作者头像 李华
网站建设 2026/5/14 16:22:08

填志愿/选方向必看!计算机18大专业的终极选择攻略

一次搞懂计算机类18个本科专业方向的区别,谁是“宝藏”谁是“天坑”? 随着科技进步的日新月异,互联网在日常生活中所扮演的角色越来越重要。数字化、信息化的时代里,计算机类专业无疑是当今高考最热门且最具发展前景的志愿填报方…

作者头像 李华
网站建设 2026/5/10 22:14:37

ABP框架07.在 DDD中把查询作为可演进的契约

数据查询进阶(上)&#xff1a;作者热度榜报表与 Dapper 的“可控查询” 哈喽&#xff0c;我是黑棠 在CRUD中&#xff0c;通用仓储 IRepository<T> EF Core 的查询表达式&#xff0c;足以覆盖列表、详情、简单筛选。 但在“报表类查询”里&#xff0c;常见的痛点不是写不…

作者头像 李华
网站建设 2026/5/9 20:23:00

孤能子视角:“智慧物流“

第一步&#xff1a;分析“作者”——智慧物流体系&#xff08;作为“供应链生命共同体”的超级孤能子&#xff09;启动&#xff1a;三力逼问&#xff0c;定位张力1. 零预设&#xff1a;不预设智慧物流是“运输自动化”或“信息化”&#xff0c;视其为全球贸易与数字技术双重浪潮…

作者头像 李华