当前位置: 首页 > news >正文

ArduPilot开源飞控之AP_Mount_Backend_Serial

ArduPilot开源飞控之AP_Mount_Backend_Serial

  • 1. 源由
  • 2. 框架设计
    • 2.1 类定义
    • 2.2 构造函数
    • 2.3 init 方法
    • 2.4 受保护成员
  • 3. 重要方法
  • 4. 总结
  • 5. 参考资料

1. 源由

AP_Mount_Backend_Serial是AP_Mount_Backend基于串口的通信的一个扩展模版。

2. 框架设计

  • 继承自 AP_Mount_Backend
  • 添加了与串行通信相关的功能

2.1 类定义

class AP_Mount_Backend_Serial : public AP_Mount_Backend
{// 类成员和方法在这里定义
};
  • 这行声明了一个新的类 AP_Mount_Backend_Serial,它继承自基类 AP_Mount_Backend

2.2 构造函数

public:// 构造函数AP_Mount_Backend_Serial(class AP_Mount &frontend, class AP_Mount_Params &params, uint8_t instance, uint8_t serial_instance) :AP_Mount_Backend(frontend, params, instance),_serial_instance(serial_instance){}
  • 构造函数被定义为 public,意味着可以从类外部访问。
  • 构造函数接受四个参数:
    • AP_Mount &frontend:一个指向 AP_Mount 对象的引用。
    • AP_Mount_Params &params:一个指向 AP_Mount_Params 对象的引用。
    • uint8_t instance:一个无符号 8 位整数,表示实例编号。
    • uint8_t serial_instance:一个无符号 8 位整数,表示串行实例编号。
  • 构造函数使用初始化列表将基类 AP_Mount_Backend 初始化为 frontendparamsinstance 参数。
  • _serial_instance 成员变量使用 serial_instance 参数进行初始化。

2.3 init 方法

void init() override;
  • 这是一个 public 方法,名为 init,它覆盖了基类中的一个虚方法。
  • init 方法用于执行此实例所需的任何初始化操作。代码片段未提供此方法的实际实现。

2.4 受保护成员

protected:// 内部变量AP_HAL::UARTDriver *_uart;      // 与云台连接的 UARTuint8_t _serial_instance;       // 该实例的串行实例编号bool _initialised;              // 如果 UART 已经初始化,则为 true
  • protected 部分包含内部成员变量,可以被这个类和派生类访问。
  • AP_HAL::UARTDriver *_uart:一个指向 AP_HAL 命名空间中 UARTDriver 对象的指针,表示与云台的 UART 连接。
  • uint8_t _serial_instance:一个无符号 8 位整数,存储该对象的串行实例编号。
  • bool _initialised:一个布尔变量,指示 UART 是否已经初始化。

3. 重要方法

AP_Mount_Backend_Serial::init初始函数,设置了串行实例,并调用基础类AP_Mount_Backend::init

// Default init function for every mount
void AP_Mount_Backend_Serial::init()
{const AP_SerialManager& serial_manager = AP::serialmanager();// search for serial port.  hild classes should check that uart is not nullptr_uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Gimbal, _serial_instance);if (_uart == nullptr) {return;}// initialised successfully if uart is found_initialised = true;// call the parent class initAP_Mount_Backend::init();
}

4. 总结

整个基础类的集成关系,这里梳理一遍:

AP_Mount_Backend├──> AP_Mount_Alexmos├──> AP_Mount_Gremsy├──> AP_Mount_Scripting├──> AP_Mount_Servo├──> AP_Mount_SoloGimbal├──> AP_Mount_SToRM32├──> AP_Mount_Xacti└──> AP_Mount_Backend_Serial├──> AP_Mount_SToRM32_serial├──> AP_Mount_Siyi├──> AP_Mount_Viewpro└──> AP_Mount_Topotek

通过上面的梳理,整个云台设备业务逻辑是通过AP_Mount来整合,包括摄像头、测距仪、摄像头跟随。

5. 参考资料

【1】ArduPilot开源飞控系统之简单介绍
【2】ArduPilot之开源代码Task介绍
【3】ArduPilot飞控启动&运行过程简介
【4】ArduPilot之开源代码Library&Sketches设计
【5】ArduPilot之开源代码Sensor Drivers设计
【6】ArduPilot开源飞控之AP_Mount
【7】ArduPilot开源飞控之AP_Mount_Backend

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 谈一谈徒劳的坐地收益的副业问题
  • HTTP 请求走私漏洞详解
  • windows环境下基于3DSlicer 源代码编译搭建工程开发环境详细操作过程和中间关键错误解决方法说明
  • 软链接node_modules
  • 谷粒商城学习笔记-23-分布式组件-SpringCloud Alibaba-Nacos配置中心-简单示例
  • JavaFx+MySql学生管理系统
  • vite工程化开发配置---持续更新
  • 【服务器】端口映射
  • 【贪心算法题记录】134. 加油站
  • Spring AOP 实现原理
  • Java学习笔记整理: 关于设计模式:单例模式 2024/7/10;
  • 一节课说明一类奥数题系列——约数与倍数
  • 综合实验作业
  • ubuntu重装系统后,安装cuda,cudnn
  • 连接与隔离:Facebook在全球化背景下的影响力
  • 10个最佳ES6特性 ES7与ES8的特性
  • 4. 路由到控制器 - Laravel从零开始教程
  • Angular6错误 Service: No provider for Renderer2
  • Electron入门介绍
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6系统学习----从Apollo Client看解构赋值
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Netty源码解析1-Buffer
  • nodejs实现webservice问题总结
  • supervisor 永不挂掉的进程 安装以及使用
  • 前端相关框架总和
  • 前端知识点整理(待续)
  • 浅谈web中前端模板引擎的使用
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 突破自己的技术思维
  • 微信小程序填坑清单
  • 我的zsh配置, 2019最新方案
  • 我是如何设计 Upload 上传组件的
  • 2017年360最后一道编程题
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • $forceUpdate()函数
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (十三)MipMap
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (一)认识微服务
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • **python多态
  • .htaccess配置常用技巧
  • .NET 4.0中的泛型协变和反变
  • .Net Core和.Net Standard直观理解
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET 快速重构概要1