飛控 如何學習無人機 入門篇

2021-09-26 20:56:20 字數 3549 閱讀 5723

我把無人機分成3個大模組

目的:組裝無人機,享受駕駛無人機的樂趣。

目的:了解無人機的本質

目的:實現乙個具體功能,比如:室內懸停,避障,全自動a點飛到b點等等

通過【知識】,使用【工具】完成自己的目標,【程式語言】【作業系統】等等在飛控開發裡能夠使用就行

開發需要解決具體的問題,前提是你知道一定的無人機知識

其實如果你單獨學一樣,還是挺容易的,飛手專心學操作,學生專心學知識。無非就是多動手,和多看書嘛。

就是這個開發,很氣人,飛控本來就是個交叉學科,本來就涉及很多不同學科的專業知識,但是因為你還需要把知識應用起來,又涉及一些計算機知識,程式設計知識等等。讓整個學習過程變的非常龐大無從下手。

但是,偏偏我們大部分人學無人機的目的都是學開發對吧,那我就拋磚引玉,結合我多年走彎路的基礎上,介紹一下我認為比較合適順序。

先給出建議:學習開發 專業知識》程式設計能力

飛控開發不需要特別強大的程式設計能力和花哨的程式設計技巧,相反通常是你通過你的專業知識,先想到解決方案,然後再稍作修改,或者簡單的實現一下演算法,所以:

不要通過開源**去學飛控!!!!

不要通過開源**去學飛控!!!!

不要通過開源**去學飛控!!!!

為什麼不要,因為「飛控知識」到「飛控**」飛控** 的過程中,除了演算法需要一些離散化,和一些迭代過程,還伴隨著作者自己對演算法的理解,選擇,和程式設計習慣。

如果你試圖從 飛控** ,反推 飛控演算法 ,除非你本身對這個演算法已經非常熟悉,否者即使你程式設計能力強,作業系統,嵌入式,程式語言,這些知識都非常強,你看**依然會很迷茫,你看到懂每一行**,但卻不知道為什麼要這樣寫。

舉個栗子:我之前分析過一行濾波**,背後涉及的知識點遠遠超出你的想象,如果你期望通過**學習飛控知識簡直是給自己開了個【地獄模式】。

最快速的路線是你對演算法已經有一定的了解,你知道這個演算法應該應用在飛控系統中的哪個環節,你知道這個演算法有什麼用,然後你很好奇這個演算法怎麼通過程式設計實現的?你找來了開源**作為參考,相互對應下,你更加理解了演算法,同時也知道了演算法如何通過程式設計實現。

當然這個過程往往也不會這麼順利,可能你找的開源**過於複雜,即使你比較熟悉演算法,依然看不懂被程式加工後的演算法函式,起碼你已經可以明確,目前你看不懂是因為一些程式設計技巧導致的,你就可專心去攻克這個問題,而不是苦思冥想為啥我天天看就是看不懂?

所以首先明確到底是哪個步驟導致你的學習很難進行下去!

1.專業知識的阻礙

大部分人應該都會被困在這裡一段時間吧,畢竟飛控涉及的專業知識太多了,但是通常你只需要深入理解其中乙個部分,所以我的建議是先構建專業知識的框架

如果你還不知道你到底想學哪個部分我先給你乙個圖感受一下。

1.無人機上的感測器獲取資料

2.導航系統通過感測器資料得到當前飛機導航資料報括位置,速度,姿態等等

3.決策層提供目標,決策可以是遙控,也可以是自動導航

4.根據當前的導航資訊,和決策層給出的目標,進行控制,是飛機以達到目標為目的進行動作

5.控制器給出輸出,通過控制分配,給每個電機pwm,使電機以一定的速度轉動。

6.電機轉動,飛機當前的導航資訊發生變化。

7.回到第一步,獲取感測器資料,以得到最新的飛機導航資訊。

這個簡單的劃分可以看到,無人機系統其實是有非常多的模組組成的,初學者並不需要每個部分都公升入了解,但是你需要有這麼個框架概念,你就可以定位你需要的知識屬於哪個部分,你才能去針對性的學習。

這個階段主要以搭建知識架構為主,可以忽略一些細節,不要被一些具體問題卡主,堅持看下去,有了知識框架後,再回頭專研某個具體問題。

比如姿態控制,第一步肯定是從導航讀取當前姿態,從某個地方獲取期望姿態,然後求姿態誤差,然後進行控制,最開始你可以不知道每個細節如何實現,等你有了這個架構。

在去定位具體問題,導航如何獲取姿態,首先肯定是從感測器讀取原始資料,進行一些濾波,然後融合,最後得到可用的姿態,把每個大問題也拆分成框架,最後你就有了整個知識。

一旦你構建好了你的知識框架,遇到問題你可以快速定位在你的框架體系中,就可以通過相關專業名稱搜尋來快速查詢資料,同時平時如果看見一些討論,一些好的文章,**,都可以迅速新增到你的知識框架裡。

你看,我確實不懂導航,之前也沒接觸過,主要是工作上暫時用不到,但是我的知識框架還是在的,只要有需要,我隨時都可以開始查閱資料進行學習。

但是現在我有更好的答案:《多旋翼飛行器設計與控制》全權,全權老師這本書是我看過最全面的書籍,非常適合旋翼的學習,是我手邊現在最常翻閱的書籍。

2.程式設計技巧的阻礙

如果你已經有一定的基礎,了解一些專業知識,肯定會迫不及待,想要知道書上的知識如何變成**,這時候乙份優秀的開源**,是最適合你的學習資料。

但是,我從來都不建議,沒有程式設計經驗,沒有接觸過嵌入式系統的朋友,一開始就直接看 apm ,px4 的**。

他們的系統過於龐大,很容易打擊學習的積極性,一會就放棄了,我甚至一度懷疑這玩意只有計算機專業的人才能看的懂吧,我是不是該先去學計算機?

其實看懂**並不需要特別強的程式設計能力,因為只是閱讀而已,

給出一些關鍵字:【建構函式】【過載】【啟動指令碼】【uorb】【建立執行緒】,如果熟悉這幾個概念,看懂 px4 ,apm 的**也僅僅是需要點耐心。

具體讀**的小技巧可以看我之前的文章【打造自己的工作流】

至於實現演算法,簡單的 if else , switch ,for 基本也夠用了,大部分情況不需要特別花哨的技巧。

3.px4,apm的阻礙

這時候你可以充分利用開源界兩大教科書(apm ,px4),不論什麼時候他們依然是最好的參考資料,但是同時也會給學習的人帶來而外的迷茫。

因為這兩個參考資料太過耀眼,你可能會把他們作為金科玉律,以至於你可能會非常困惑,為什麼他要這麼做,跟書上的不太一樣?

但我想說的是,他們是很好的**,但是依然有很多作者的偏好,所以很多地方不過就是作者做了一些取捨,做了一些選擇,不要迷失在深究為什麼作者為什麼這樣寫,反倒是你可以提出質疑,如果是我,我會怎麼處理這個問題。不要被**支配,**只是幫助你學習的乙個工具而已。

如果你看到這裡,依然摩拳擦掌,躍躍欲試,那就放心大膽的幹。

不要擔心我是不是先把數學學好再開始?我是不是先學會c 再開始?我是不是先學好嵌入式系統再開始?

都不需要,你的目標只有乙個,就是學會飛控,

如果在你建立知識框架的時候,剛體力學阻礙了你,那就去查資料,把這部分解決,然後繼續回到你飛控的學習主線,什麼問題阻礙了你,你就去解決它,然後再回歸你的主線任務。

你要時刻明白,你做的所有程式設計學習,數學學習,嵌入式學習,都是為了學習飛控的輔助技能,不要被輔助技能嚇倒,或者迷惑。

飛控是個交叉學科,你永遠不可能把所有知識都準備充分再開始,你需要的是在遇到障礙的時候都保持耐心,堅持一下,僅此而已。

無人機飛控

無人機是無人駕駛飛機的簡稱 unmanned aerial vehicle 是利用無線電遙控裝置和自備的程式控制裝置的不載人飛機,包括無人 固定翼機 多旋翼飛行器 無人飛艇 無人傘翼機。廣義地看也包括臨近空間飛行器 20 100 公里空域 如平流層飛艇 高空氣球 太陽能無人機等。從某種角度來看,無人...

無人機系列之飛控演算法

一.無人機的分類 按飛行平台構型分類 無人機可分為固定翼無人機,旋翼無人機,無人飛艇,傘翼無人機,撲翼無人機等.圖1 無人機平台構型 多軸飛行器multirotor是一種具有三個以上旋翼軸的特殊的 旋翼的總距固定而不像一般 那樣可變。通過改變不同旋翼相對轉速可以改變單軸推進力的大小,從而控制飛行器的...

中國國內無人機開源飛控系統簡介

無人機多旋翼四旋翼四軸飛控,各種名詞真是讓人熱血沸騰,從大一開始接觸以來,恨不得全部將知識掌控囊中,但是紙上得來終覺淺,便只能斷斷續續地進行學習。其中對於中國國內的無人機開源飛控系統也基本有個了解,各家的基本全部買了個遍,正好有機會就記錄一下,給眾人分享一下。ps,大家知道,無人機裡面大疆賣得最好,...