该类AP_Vehicle是所有 ArduPilot 飞行器类型的基础。它定义了 Copter、Plane、Rover、Sub 和 AP_Periph 等实现共享的通用基础设施、接口和子系统。该基类提供了执行框架(设置/循环)、调度器、参数系统以及与核心库的集成。
有关车辆具体实现方式,请参阅第 3 页(车辆类型)。
概述和架构
该AP_Vehicle车型类别是所有车辆类型的通用基础,提供:
- 主要执行流程(
setup()和loop()方法) - 任务调度器和常用计划任务
- 具有共享参数组的参数系统
- 与核心子系统(传感器、日志记录、通信、安全)集成
- 车辆必须实现的虚拟接口(模式管理、初始化)
图:系统架构中的 AP_Vehicle

核心子系统和集成
该类AP_Vehicle实例化并管理多个子系统,这些子系统以成员变量的形式存在。这些成员变量提供对传感器、通信、日志记录和其他功能的访问。
图:AP车辆子系统集成

类结构和继承
该类AP_Vehicle定义了一个所有车辆类型都必须实现的通用接口。车辆继承AP_Vehicle并重写纯虚方法,以提供特定于车辆的行为。
图:AP_车辆类结构

注意:标记为 `*` 的方法* = 0是纯虚方法,必须由派生类实现。标记为 `*` 的方法*是虚方法,可以被重写。final关键字 `*` 表示不能被重写的方法。
类层次结构和代码实体
所有车辆类型都继承自基AP_Vehicle类。这实现了代码重用,并确保不同车辆类型之间接口的一致性。
关键方法和生命周期
该类通过方法AP_Vehicle定义车辆生命周期,以及用于模式管理和初始化的接口。setup()loop()
主要生命周期方法
| 方法 | 类型 | 目的 | 地点 |
|---|---|---|---|
setup() |
final |
启动后一次性初始化;加载参数,初始化子系统,调用init_ardupilot() |
libraries/AP_Vehicle/AP_Vehicle.cpp305-549 |
loop() |
final |
主执行循环;运行调度程序,更新内部错误跟踪 | libraries/AP_Vehicle/AP_Vehicle.cpp551-584 |
init_ardupilot() |
pure virtual |
车辆特定初始化(传感器、控制系统、飞行模式) | libraries/AP_Vehicle/AP_Vehicle.h319 |
load_parameters() |
virtual |
从存储中加载持久化参数;可以重写以处理格式版本。 | libraries/AP_Vehicle/AP_Vehicle.h320 libraries/AP_Vehicle/Parameters.cpp8-26 |
模式管理接口
| 方法 | 类型 | 目的 | 地点 |
|---|---|---|---|
set_mode(mode, reason) |
pure virtual |
根据原因跟踪更改车辆运行模式 | libraries/AP_Vehicle/AP_Vehicle.h123 |
get_mode() |
pure virtual |
返回当前车辆模式编号 | libraries/AP_Vehicle/AP_Vehicle.h124 |
get_control_mode_reason() |
返回上次模式更改的原因 | libraries/AP_Vehicle/AP_Vehicle.h126-128 | |
notify_no_such_mode(mode_num) |
当请求无效模式时,日志记录错误。 | libraries/AP_Vehicle/AP_Vehicle.cpp933-937 |
调度器接口
| 方法 | 类型 | 目的 | 地点 |
|---|---|---|---|
get_scheduler_tasks(tasks, count, log_bit) |
pure virtual |
返回车辆特定调度程序任务列表 | libraries/AP_Vehicle/AP_Vehicle.h142 |
get_common_scheduler_tasks(tasks, count) |
返回通用的 AP_Vehicle 任务列表 | libraries/AP_Vehicle/AP_Vehicle.cpp697-701 |
状态查询方法
| 方法 | 目的 |
|---|
447



被折叠的 条评论
为什么被折叠?



