關於演算法這塊基本上算是讀完了,只能從大致上理解下了,畢竟**不是自己寫的沒有最直接的感受,那麼我們來回顧下,試著從整體上來理解下匿名**除了最上層之外的部分(最上層也就是包含main.c在內的那部分),之前一開始就鑽進去某個檔案裡面研究演算法原理和演算法實現,不像我的風格,因為這樣在乙個大的框架裡面很容易迷失,現在停下來,回過頭去,檢驗一下我們所做的有沒有成效,然後再說下一步
關於匿名**標準庫這部分就不需要多說了,這是基本功,標準庫/hal庫/暫存器都可以,哪種方便哪種喜歡用哪種
關於外設的驅動這塊我們也直接跳過去了,最開始用意法半導體公司微控制器的時候老是覺得能寫好驅動就很厲害了,連標準庫都要用暫存器摸一遍才算罷,雖然是寫的超級簡單,可還是覺得很有成就感,後來,準備自己寫個無人機,發現就尼瑪底層驅動就能折磨死人,什麼東西都要親力親為而且要熟稔於心實在是太難了,而且也超級費時間,於是乎,這次讀**就直接跳過去這個階段了,專注上層演算法的理解,本來就是,這個底層演算法網路上一抓一大把,需要的話找點資料研究兩天就懟出來了,不要什麼東西都從0開始,很容易有挫敗感然後就做不下去了,都說失敗是成功之母,我覺得成功一次會讓你更有自信去成功,然後成功10次。扯得有點遠,如果是以後想在嵌入式這塊發展的,建議學會如何寫驅動,換了晶元換了板子照樣寫,這就是能力,僅僅想玩下飛控的建議直接copy吧,講實話,copy也沒想象的那麼簡單
再往上走就到典型演算法那部分了,按照匿名**裡面的劃分,分為通用和專用兩部分。首先通用部分最主要的兩大經典:姿態解算和pid,說到飛控基本上都是從姿態解算開始的。我們詳細分析了姿態解算這塊,涉及到的主要是』ano_imu.c』這個檔案,前面部落格也有介紹,從一些專門術語到秦永元的慣性導航,從為什麼要進行姿態解算到怎樣進行姿態計算,從經典mahony互補濾波演算法到匿名對經典演算法的改進,從理論知識的理解到匿名關於**的實現,雖然說存在很多種解算方法現在只理解了一種,但這恰恰不就是成長嗎?先成功實現一種,別管精度怎麼樣,把整個框架做出來然後去逐個模組進行優化,整體上把握永遠是最重要的,不然就會陷入乙個區域越鑽越深,臨了發現絕大多數最基本的功能都沒實現,慚愧至極,以上感受均**於親身經歷。不妨回想下是否還能記起為什麼要進行姿態解算?目的是什麼?姿態解算處於經典pid控制環中哪一部分?姿態解算輸入是什麼,輸出又是什麼?在哪個檔案裡被呼叫?至此姿態解算結束。
接下來就是pid演算法了,本人並不是自動控制專業的學生,也沒學過各種控,但是模電上的負反饋讓我對pid記憶猶新。從經典pid演算法的公式書寫到c語言實現,從單級pid到穩定的串級pid,從各種部落格理解到最後匿名**解讀,我們無一不經歷過,還記得pid在**被呼叫嗎?還記得pid最重要的兩個入口引數是什麼嗎,以及最重要的輸出值是哪個嗎?千萬別忘了串級pid的框圖,簡直太重要了,角度環和角速度環,高度環和高度速度環,雖說是串級pid可還是呼叫最基本的單級pid來工作,那麼請問?為什麼pitch/raw/yaw/thr各需要一套pdi呢?理解了這些基本上這個通用資料夾裡面的演算法就清楚了,提綱挈領,不會走偏
接下來介紹這個專用資料夾裡面的內容,有點雜,不像上面那個資料夾被兩大演算法支撐,可是我們不是都讀過了嗎?來看看吧。
首先要介紹的是姿態環和高度環,都是串級pid且基於通用資料夾裡面的單級pid,這塊或多或少我們上面都扯到過了,屬於控制部分。而位置控制這塊兒不是很清楚,一直沒理解位置環。飛行控制這塊兒主要涉及到的是一鍵起飛和降落。而電機控制則是pid系統中最終的執行部分,姿態環和高度環得出的四個值最終在電機這裡被呼叫,然後通過pwm輸出完成執行機構的一次任務。至於剩下的三個檔案,乙個磁力計有關的,主要是對磁力計得出的資料進行處理以及進行校準等操作,電源這塊應該是使用adc來探測電壓,如果低於設定則會發出警報等,一般外接bb響即可。最後關於飛行資料這個檔案也是蠻重要的,看得出來也算是對最底層imu資料進行獲取之後進行上層封裝,資料報括陀螺儀 加速度計 磁力計 光流 氣壓計等,然後呼叫姿態解算函式,得出三個尤拉角。不難分析整體主要分為三部分,測量,pid控制,執行,測量即最後飛行資料這塊,執行則涉及到電機,pid控制更明顯,則是單級pid和串級pid這塊。相信這麼一梳理大家對**的整體把握會更加清楚吧
後續補充部分
後端還差很多 主要在於 1 沒有對知識進行分類和梳理 只知道複製不知道原理 感覺不是自己的 不屬於自己 不熟練 2 對框架的搭建不熟悉 不會搭建 這個問題在前端vue也有 感覺不爽 3 不開心 感覺壓抑 沒多少人說話的感覺 4 其實想重點發展後端 不太想一直寫前端 不過寫業務 都是差不多了 就是感覺...
關於C語言的後續學習
先談談我的大學生活吧!大一,因為加入了一些學校社團還有自己懵懂的青春,以至於大一根本沒做任何事,雖說大一大部分同學都是這樣,但是我覺得我還是和別的同學不一樣的,儘管現在還是混得很差,但是我會努力的。大一上學期真的啥都沒做準備,就是在懵懂中度過。大一下學期我們學的程式設計是c語言,但是我是個混子混過去...
關於jQuery css部分
css name pro val fn 1.9 操作元素css樣式 獲取和設值均不帶畫素單位 1 offset coordinates 獲取匹配元素在當前視口的相對偏移 button offset 返回值是乙個物件 2 position 獲取匹配元素相對父元素的偏移 3 scrolltop val ...