四旋翼無人機飛控系統設計 控制訊號獲取及轉化

2021-10-21 11:57:21 字數 1456 閱讀 5236

控制無人機首先要考慮的是給無人機下指令,其次是讓其從當前狀態達到我們的指令狀態。遙控器和飛控的溝通是首先要構建的一環。需要把遙控器的脈衝寬度轉化成無人機的狀態角度。

我使用航模通用協議有pwm、ppm與sbus,我使用基於串列埠的sbus協議,根據幀排序解析25個8bit位元組即可,sbus協議在串列埠解析前要對訊號電平進行反向。

sbus解析c語言實現推薦博文

接收過來的接收機訊號是遙控器各個通道值,比如大多數航模遙控器遵循通道一到通道四對應著無人機的 roll、pitch、throttle、yaw,即是橫滾、俯仰、油門和偏航四個無人機的基本運算元值。後面的通道可以應用於飛控功能的切換或者為無人機的相機雲台等外設服務。解析出的具體數值是遙控器的發射訊號的設定決定的,可以通過更改遙控訊號的引數將其設定到乙個需要的區間,然後在解析後進行處理。

我的處理方式是每個通道都處理到1000 到 2000 之間,遵循大多數無人機飛控對脈寬處理的協議方便訊號的應用。經過處理訊號歸入 1000-2000 的區間,中值為 1500,後面需對通道值進行歸一化處理,即將通道的控制值轉化為控制量的佔比看,比如 1000 為 0,1500 為 50%,2000 為 100%,此值也為受控量的佔比,然後用這個值去確定受控受控量,這樣處理就能實現兩種不同元素資料的歸一化。經過轉化處理後可得出佔比值,對於使用者來說,對四旋翼的操作體現在給它設定乙個姿態值。接下來我們需給定無人機 roll、pitch、yaw 這幾種自由度的目標值,具體做法是設定乙個允許的最大值 ,然後令其乘以之前得到的佔比值。至此由接收機sbus訊號轉化得到目標角度。

在每個通道區間1000 到 2000 之間的情況下(1000為0油門,2000位滿油門)

parameter :最低和最高值的中值為初始值,rc_get為與初始值的偏差,此處為1500。將偏差轉換為期望角度是我們需要做的事,max_abs為區間的一半此處為500,dead_limit為死區,低於此死區不處理,可能是手抖碰到了一點搖桿。

return: proportion 為乙個比例值,佔允許的最大的角度值的比例。

float rc_convert (

float rc_get,

float max_abs,

float dead_limit)

else

if(rc_get <

-dead_limit)

else proportion =0;

return proportion;

}//eg: pid[roll_angle].target = angle_max * rc_convert ( ch_get[roll_ctrl]-rc_mid, max_abs, dead_limit);

四旋翼無人機設計 CSDN部落格

1主控制器電路設計 stm32f103rct6是stm32家族中效能比較高階的微控制器,將微控制器作為基於視覺的四旋翼路徑跟蹤系統的主控控制器晶元,其核心主要是cortex m3。處理速度快,工作效率高。2.stm32f103最小系統 其stm32f103rct6 電源相關的模組 有關mcu的復位裝...

玩轉四旋翼無人機(DJI SDK 使用)

onboard api matrice 100 被設計為可以使用遙控器 機載備和 移動 裝置進行控制。如果遙控器讓飛切換到 api控制模式,裝置通過 onboard api mobile api可以請求獲得控制權。啟用 api控制 之後 將遙控器模式開關置為中位 f檔 啟動示例 啟動示例 1.編譯 ...

四旋翼無人機crazepony燒寫流程

開源crazepony。自上而下,從產品到底層的學習方法是效率比較高的。事前準備 韌體燒寫過程 用keil 5開啟專案,更新 編譯得到hex格式檔案 開啟isp,選擇要燒寫的hex檔案,選定 程式設計前重灌檔案 和 rts的高電平復位,dtr高電平進bootloader rts復位,dtr用來給st...