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://www.pswp.cn/web/44139.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44139.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44139.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Sentieon應用教程:本地使用-Quick_start

1、準備工作: License下載鏈接:http://www.sentieon.com/eula/b703e839c8c7c5b8fa73238277fd5da23a0276be54712edb46ee8f4d4f3d873fbf 軟件下載地址: https://insvast-download.oss-cn-shanghai.aliyuncs.com/Sentieon/release/sentieon-gen…

11-《風信子》

風信子 風信子(學名:Hyacinthus orientalis L.):是多年草本球根類植物,鱗莖卵形,有膜質外皮,皮膜顏色與花色成正相關,未開花時形如大蒜,原產地中海沿岸及小亞細亞一帶&am…

【Vue】vue-element-admin組件化功能

1. 組件的封裝 在vue-element-admin中,每個功能區域或UI元素都被封裝成一個或多個Vue組件。這些組件可以是簡單的按鈕、輸入框,也可以是復雜的表格、表單或頁面布局。每個組件都包含了其模板(HTML結構)、邏輯(JavaScr…

【論文精讀】Exploring the Causality of End-to-End Autonomous Driving

背景信息 團隊:百度 代碼:https://github.com/bdvisl/DriveInsight 論文思想簡述:這篇論文并不是提出SOTA模型,而是提出了一些評估模型的方法。 目前已有的分析方法 大語言模型。VAQ來提供解釋性,比如DriveVLM&…

C++基礎(二)

目錄 1.類和對象 1.1類的定義 1.2訪問限定符 1.3類域 2.實例化 2.1實例化概念 2.2對象大小 3.this指針 4.類的默認成員函數 4.1構造函數 4.2析構函數 4.5運算符重載 1.類和對象 1.1類的定義 類的定義格式 class為定義類的關鍵字,Stack為類的名字&…

7月11日學習打卡,數據結構棧

大家好呀,本博客目的在于記錄暑假學習打卡,后續會整理成一個專欄,主要打算在暑假學習完數據結構,因此會發一些相關的數據結構實現的博客和一些刷的題,個人學習使用,也希望大家多多支持,有不足之…

dataX入門

下載dataX https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz 然后 下載后解壓至本地某個目錄,進入bin目錄,即可運行同步作業: $ cd {YOUR_DATAX_HOME}/bin $ python datax.py {YOUR_JOB.json} 要求你有python…

vue-grid-layout詳解

vue-grid-layout 教程 vue-grid-layout 是一個用于 Vue.js 的響應式拖放網格布局組件,允許開發者創建可調整大小、可拖放的布局,廣泛用于儀表板、管理面板等復雜布局需求。本教程將介紹如何安裝、配置和使用 vue-grid-layout。 目錄 安裝基本使用 布局…

怎樣在 C 語言中進行類型轉換?

🍅關注博主🎗? 帶你暢游技術世界,不錯過每一次成長機會! 📙C 語言百萬年薪修煉課程 通俗易懂,深入淺出,匠心打磨,死磕細節,6年迭代,看過的人都說好。 文章目…

暑假自律日記九

7.10 (半小時日記打卡之——暑假第九天) 前言:或許是累了,今天的效率和進度可以說是歷史最低了,調休了一天,算是歇會 日程 八點二十起床,在床上賴了一會 九點二十抵達逸夫樓,開始補…

kafka發送消息流程

配置props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, RoundRobinPartitioner.class); public Map<String,Object> producerConfigs(){Map<String,Object> props new HashMap<>();props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapServers…

Spring Boot中的安全配置與實現

Spring Boot中的安全配置與實現 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將深入探討Spring Boot中的安全配置與實現&#xff0c;看看如何保護你的…

在表格中把tab換成enter鍵------ivx

為了方便用戶輸入&#xff0c;把tab鍵替換成enter回車 方法如下&#xff1a; 添加一個fx函數 document.addEventListener(‘keydown’, function(event) { if (event.key ‘Enter’ && !event.shiftKey) { event.preventDefault(); var focusableElements document.q…

昇思25天打卡營-mindspore-ML- Day22-應用實踐-自然語言處理-LSTM+CRF序列標注

昇思25天打卡營-mindspore-ML- Day22-應用實踐-自然語言處理-LSTMCRF序列標注 今天學習了 LSTMCRF 序列標注方法&#xff0c;它是一種結合了循環神經網絡&#xff08;RNN&#xff09;和條件隨機場&#xff08;CRF&#xff09;的強大模型&#xff0c;用于處理序列標注問題&#…

【C++BFS】690. 員工的重要性

本文涉及知識點 CBFS算法 LeetCode690. 員工的重要性 你有一個保存員工信息的數據結構&#xff0c;它包含了員工唯一的 id &#xff0c;重要度和直系下屬的 id 。 給定一個員工數組 employees&#xff0c;其中&#xff1a; employees[i].id 是第 i 個員工的 ID。 employees[…

RabbitMQ 高級功能

RabbitMQ 是一個廣泛使用的開源消息代理&#xff0c;它支持多種消息傳遞協議&#xff0c;可以在分布式系統中用于可靠的消息傳遞。除了基本的消息隊列功能外&#xff0c;RabbitMQ 還提供了一些高級功能&#xff0c;增強了其在高可用性、擴展性和靈活性方面的能力。以下是一些主…

軟件架構之嵌入式系統設計(2)

軟件架構之嵌入式系統設計&#xff08;2&#xff09; 12.4 嵌入式網絡系統12.4.1 現場總線網12.4.2 家庭信息網11.4.3 無線數據通信網12.4.4 嵌入式 Internet 12.5 嵌入式數據庫管理系統12.5.1 使用環境的特點12.5.2 系統組成與關鍵技術 12.6 實時系統與嵌入式操作系統12.6.1 嵌…

MyBatis(38)MyBatis 如何與 Spring Boot 集成,有哪些實踐技巧

集成MyBatis與Spring Boot可以極大地提升開發效率&#xff0c;簡化配置&#xff0c;并利用Spring Boot的自動配置特性優化項目結構和性能。下面我們將詳細探討如何實現這一集成&#xff0c;并分享一些實踐技巧。 1. 添加依賴 首先&#xff0c;在pom.xml中添加MyBatis和Spring…

AI學習指南機器學習篇-聚類樹的剪枝

AI學習指南機器學習篇-聚類樹的剪枝 在機器學習領域&#xff0c;聚類是一種常用的無監督學習方法&#xff0c;通過對數據進行分組來發現數據中的結構和模式。聚類樹是一種常用的聚類算法之一&#xff0c;它通過構建一個樹狀結構來展示聚類的層次關系&#xff0c;并能夠幫助我們…

Linux 忘記root密碼,通過單用戶模式修改

銀河麒麟桌面操作系統 V10&#xff08;sp1&#xff09;”忘記用戶密碼&#xff0c;需要修改用戶密碼所寫&#xff0c;可用于 X86 架構和 arm 架構。 2. 選擇第一項&#xff0c;在上圖界面按“e”鍵進行編輯修改。 3. 在以 linux 開頭這行的行末&#xff0c;添加“init/bin/bas…