序:我的多旋翼飛控學習之路

緣起


從古至今,人類對天空的渴望,對飛翔的追求,從未停止。但迄今我們仍未能給自己裝上翅膀,自由翱翔於天際,於是人類發明了飛機、火箭,用龐大的鋼鐵巨獸將人們送上藍天和太空。

而對於大部分類似於你我的普通人來說,很多時候,只能用一個小小的航模,來承載自己的藍天夢。在上大學之前,我以爲將來自己會在宿舍一刀一刀地,用木頭或者泡沫,做出自己的飛機模型,然後裝上一個馬達,懷揣着憧憬,引導它飛上天空。誰能知道,時代的一些小變革,便將我指向了另外一條不一樣的道路,但最終殊途同歸,那便是多旋翼飛行器

我從小在一個偏僻的海島上長大,家境貧寒,童年時期幾乎與世隔絕,直到上高中之前都沒有使用過普通話,沒去過比村鎮更大的地方。每天偶爾劃過天空的飛機,成了我對外面世界所有的夢想和憧憬,可能很多人對於飛機的異樣情結,也是來源於此吧。

在電腦和互聯網還沒有流行,手機也只能用來打電話的年代,知識與信息的珍貴,是現在的小孩無法想象的。以至於後來接觸了淘寶,很長一段時間內都沒有發覺,曾經只存在於夢裏的各種元器件與材料,只要有錢,均唾手可得。

高中在市裏讀書,在學校寄宿,爲了節省路費通常一兩個月纔回一次家,而每天節衣縮食,以便在週末時有錢去網吧上網。互聯網的信息量之大,讓我好長時間沒有緩過神來,直到高一下學期的某天,纔想起來要開始規劃未來的發展路線了,當時在網上雖然可以查到很多信息,但是如果沒有特別指引,很多時候你在網上看到的,可能都只是你想看到的。

最初我以從事一個最平民化的職業:程序員爲目標,開始從C語言和socket通信學起,在網吧開始敲起了代碼,沒錢上網的時候,便去市裏最大的書店看書,在一排厚重的《網絡實戰》《VC++入門經典》《二十一天速成PHP》等圖書中,挑出比較薄的c語言、數據結構之類的書來看。當時各種硬件和電路板對於我來說還屬於非常高大上東西,印象中它是隻存在於實驗室和大公司中的高端設備。

轉折


在10年和11年之間,我升上了高二,此時在這個世界的某個角落,已經逐漸開始出現了一些小小的變革:還在創業階段的大疆創新公司,發佈了他們的第一款多旋翼飛控。而我,在對互聯網的使用逐漸輕車熟路起來之後,對技術的認知也在慢慢改變,也在逐漸偏離最初的目標了。

最開始觸動我的,是在全校集體活動上進行飛行表演的航模隊。航模隊是一些退休老教師和學生組織起來的,屬於一個平時很難接觸到的小圈子,他們在學校廣場表演了固定翼3D花式飛行。看着天空不停舞動的飛機,沉睡在我心底的夢想又被重新喚醒了。然而沒吃過豬肉也見過豬跑,即使沒玩過航模,也知道這些東西需要花的錢不是我一個窮學生能拿得出來的,只能立下目標,先考上大學,然後再賺錢做自己想做的事。

高三對於大部分學生來說都是充滿了痛苦和回憶的,而我爲了實現目標,在高二那年暑假,開始了苦行僧式的學習之路,之後高三那年有許多同學和老師都不能理解的舉動,均是爲了達到我的目標。當然最後奇蹟並沒有發生,在兩千多人的年級中,我也只是從高一高二時接近墊底到高考只超過一本二三十分,只能選擇了省內一個大家認爲比較普通的大學,電子信息類專業。仍記得當時志願表上我只寫了這一個學校,一個專業,且不服從分配。並不是因爲我真的多喜歡這學校,而是學校地處改革開放的前沿城市,讓我覺得將來能有更多的機會實現自己的夢想。

在我的認知中,要學會跑就必須先學會走,同理,要學會飛就得先學會跑,於是,在高考前一個月,我覺得大局已定的情況下,說服父母提供了一筆幾百塊錢的資金,上淘寶購買了一些學習工具,包括最基本的電工工具如烙鐵、萬用表等,51單片機學習板,一些用於練習焊接的收音機DIY套件,還有用來做智能車的小車套件。這些東西,都是我經過了多次查詢,深思熟慮後才購買的,畢竟資金非常有限。

高考結束後,大部分同學開始了他們的遊玩計劃,而我在網吧下載了許多PDF書籍存到兩百塊買的二手安卓平板裏後,回到了家中,開始學習硬件電子相關知識,暑假便這樣在睡懶覺,焊收音機,看模電相關PDF中過去了一半。之後父母找親戚湊錢給我買了檯筆記本上大學用,於是終於可以開始學習單片機了。然而可能是第一次接觸,腦回路還有些轉不過來,許多單片機的寄存器概念一時半會理解不了,好在有C語言的基礎,暑假結束時,也基本掌握51單片機的基礎用法了。

大學


進入大學後,目標明確的我開始混進學院的實驗室,蹭用實驗室的各種工具和資源,諸如焊臺、熱風槍、開發板之類的,並開始學習STM32。同時,也經常上網逛5imx論壇,而當時多旋翼在愛好者圈子裏已經逐漸流行開了,許多人自己購買模塊組裝飛機,再掛上一個鷹眼之類的運動相機,便能實現簡單的航拍。剛上大學,人生地不熟,沒有收入來源,每月只有六百塊生活費的我,自然沒有能力去diy一臺自己的飛機,只能繼續在實驗室學習,參加電協(後來我成了電協會長)的一些活動,還有學校裏的小比賽,原先計劃是大一先打好各方面基礎,大二再開始想辦法弄自己的飛機。

大一下學期,參加了學校內部舉辦的一個小比賽,用一個熱得快和電磁繼電器做了一個水溫控制系統,第一次學習和使用了PID控制算法,爲了調試PID參數,查看數據波形,還用Labview做了一個簡易上位機。做完後控制精度還不錯,很有成就感,更重要是第一次踏進了控制算法的大門。

簡易水溫控制系統

大一暑假時,我開始了多旋翼飛控的學習,當時網上在一些論壇上出現了許多迷你小四軸diy的個人項目,但是飛行效果還普遍不太行,甚至能飛起來的就算不錯了,但好在成本較低,適合學生折騰。於是我在淘寶上花了幾十塊錢買了一個使用STM32F1爲主控的小四軸PCBA,即焊好元器件的電路板,只提供原理圖,沒有任何代碼或固件及技術支持,順便還買了空心杯小電機和槳。當時只是稍微熟悉STM32的開發,對飛控算法還完全沒有任何瞭解,而那時候網上的相關資料也並沒有現在這麼多,花費了幾天時間還沒有太多進展,後來找到了幾款當時的開源飛控,嘗試移植程序,終於能讓小四軸顫顫巍巍地離地了,不過沒有遙控器,沒有辦法做更多的測試。

暑假時我沒有回家而是留在學校繼續學習,是因爲當時準備參加暑假裏的全國大學生電賽,拉了兩個同爲大一的並算是所有大一新生裏面比較有基礎的同學一起參加比賽,而其它參賽隊伍的都是大二大三的,3人全是大一的隊伍基本算炮灰了。可能是命運中冥冥註定了我要踏上這條道路,在那一年的電賽中,首次出現了多旋翼的題目(以前基本都是小車之類的),雖然知道難度可能很大,但我還是毫不猶豫選擇了多旋翼,在學院競賽經費的支持下,我終於能把之前放在購物車好久的各種配件買了回來,開始組裝無刷動力的四旋翼。不過意想不到的是,比賽第一天題目下來後才知道飛控主控必須要使用一個誰也沒用過的瑞薩單片機,結果4天下來,除了加起來只睡了10個小時不到,燒死無數腦細胞之外,只做出了一個勉強能飛並預先設定好飛行時間以到達預定目標的大四軸,後來也就只拿到了一個安慰獎性質的省二等獎。

比賽期間製作的四旋翼及調試時被槳劃傷的傷口

但從此開始,多旋翼的大門算是真正打開了。比賽完了之後,我繼續自己的小四軸開發,後來成爲了國內某開源飛控的主要開發者,大二和大三期間,除了參加一些專業比賽之外(主要是電賽和RoboMaster),大部分時間放在了多旋翼飛控的學習上,並開發了數款飛控和空心杯小四軸、小六軸,一個人承包了軟硬件設計,還要負責SMT外包加工等瑣碎工作。知其然還需知其所以然,我一邊調試飛機,一邊學習相關的理論知識,在大二和大三的暑假末期,還去某個大學擔任了一個星期的多旋翼實訓課程的講師,所用的課程道具就是自己設計的小飛機。然而技術的大山如此之高,一個人的能力和精力又是有限的,什麼都學什麼都做的情況下很大可能性是什麼都沒學好。現在回過頭來才發現,當時的自己對於多旋翼飛控技術的瞭解僅限於冰山一角而已

到了大四,前半年出去做了一些和多旋翼無關但很有趣的東西,後半年回來做畢設,題目也是多旋翼相關。但此時的我知道自己對飛控的瞭解還是太淺薄了,於是畢業時去了一家公司繼續做飛控,花了三四個月的時間從頭到尾開發了一套完全功能的多旋翼飛控出來,開始應用於公司的航拍機產品上(雖然這個市場已經被大疆霸佔了,但還是有很多小公司在苟延殘喘中),後面便是工廠和客戶源源不斷的反饋,基於這些反饋不斷地去優化調整飛控程序,在這個期間,逐漸加深了對於很多算法的理解,更明白了曾經的自己是多麼地無知。
大學期間設計的各種小飛機

目標與願景


如今,消費機無人機市場不再熱門,市場份額牢牢掌握在大疆手中,能存活下來的公司也就越少了,如果想專門從事多旋翼飛控開發方面的工作,沒有一定水平是比較困難的,至少要比我高一個等級吧。那爲什麼我還繼續推薦大家來學習飛控呢?除了夢想和對藍天的渴望之外,更多的是可以得到一個有趣的動手實踐平臺,所有相關專業的學生,都能利用多旋翼,驗證自己所學知識,瞭解多種經典算法在實際工程中的應用,還可以強化自己的嵌入式編程能力,一個完整的飛控對於普通的學生項目來說算是較大規模工程了。

另外有一件引人深思,懸在我心頭多年的事情,那便是,在近年來民用多旋翼行業發展得最紅火的中國,卻沒有一款像樣的開源飛控,MWC、APM、PX4、AutoQuad等耳熟能詳的飛控,均來自於國外的開源項目,其中APM/PX4更是一個前無古人的優秀作品,養活了無數中國的小無人機廠商。雖然這些開源飛控在性能上不及大疆的商業飛控,卻是爲多旋翼飛控的發展建立了一個良好的生態圈,可惜由於大疆的一家獨大,這個生態圈並沒有能以很快的速度迅猛發展下去。

而國內,至今仍沒有出現一個類似的開源飛控項目,只能在淘寶上找到許多“收費開源飛控”。近一兩年國內偶爾會冒出幾個小的飛控開源項目,但基本都是小打小鬧,不成氣候,而且其中大部分的主力開發者均爲在校大學生,隨着他們的畢業,項目基本就中止了。歷史經驗告訴我們,在中國,開源項目沒辦法盈利,盈利的項目通常不會開源,在這樣的思想帶領下,能夠投身參與開源飛控開發的人就更少了,除了在校學生,但是大部分學生技術水平有限,且較少接觸實際產品和市場,難以做出像樣的作品。

但是,總是需要有人改變這個現狀,創造更好的條件,爲中國多旋翼行業的技術發展貢獻出一份力量,而不只是讓技術資源單單集中在某個公司身上。抱着這個想法,我開始打造一套全新的開源飛控,前期單純由我個人投入淺薄的技術力量來建立一套完整的,高性能的多旋翼飛控,後期,依靠吸引全國各地的有志青年們,共同來完善這個飛控項目。這個開源飛控項目爲:

天穹飛控

截止目前,在github上已經提交了兩百多commit,並完成了基本飛行功能的開發與初步測試,可以實現自穩、定高、定點飛行及自動降落、自動返航等功能,接下來還將進行航點飛行、軌跡跟蹤控制等功能的開發,以及算法和其它細節優化。同時會開發一個配套的飛控開發專用上位機,方便飛控的優化工作的持續性進展。飛控兼容mavlink,也可以使用Mission Planner和QgroundControl這兩個功能強大的地面站。

項目的最終目標,是打造出一套易於使用和開發,且飛行性能比肩商業產品的中國本土化開源多旋翼飛控平臺,爲中國的多旋翼無人機產業添磚加瓦。

當發佈飛控1.0版本後,我會花一些時間寫一些相關教程,水平有限,僅供新手參考:

【深入淺出多旋翼飛控開發】系列教程

不過我也清楚,在當前中國的這個大環境下,願意付出和有時間付出的人太少,但如果這個項目名氣夠大,終究還是會有許多有能力的“閒人”願意貢獻一份力量,包括不僅限於BUG的發現,程序框架的優化,算法的改進或重寫等。未來,多旋翼飛行器的應用還有很大的擴展空間,有着一片廣袤的天空有待我們去開發,這個開源飛控僅僅是一個基礎,還有許多多旋翼相關的飛行應用需要被髮掘和開發,至於未來我們能做出什麼東西,可能只有堅持不懈地努力做下去,才能找到答案。

最後我想起小說《三體》裏的一句話:

在中國,任何超脫飛揚的思想都會砰然墜地的,現實的引力太沉重了。

的確,類似“打造中國多旋翼技術開源生態圈”這種話,由毫無家庭背景並蝸居在大都市,每天早上毫無尊嚴地擠着地鐵晚上加班時還要想着這個月的房租和奶粉錢的一個農村出身的普通工程師嘴裏說出來,有點太違和了。在中國這種浮躁的環境下,能夠把自身精力投入到自己熱愛的事情,並持續十年以上的人,太少,但正是因爲從農村走出來,我更加理解了自己的人生目標與動力,並會一直朝着目標方向前進。十多年前的我,會花很多時間找到幾片放大鏡,然後加上黃皮紙,做成一個簡易長筒望遠鏡,只爲了能夠將夜空中的星星觀測得更清楚,它們似乎告訴我,不能將自己的思想侷限在這一片小小的籠子裏,於是那時我經常嘗試着和未來的自己對話,多年以後的自己,還能和現在一樣保持初心麼?而今天的一切努力,都是爲了告訴曾經的我,在這條道路上,你並不孤獨,只不過時間維度不一樣而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章