PX4飛控原始碼系統框架介紹
阿新 • • 發佈:2021-08-14
文章來源:PX4 飛控原始碼系統框架介紹 - 徐景祥 - 部落格園 (cnblogs.com)
一、build_px4fmu-v2_default
編譯以後生成的檔案:內部主要需要在意的就是topics_temporary_header(所有的任務是要的標頭檔案,在建立任務和使用資料結構時可以從該處檢索);topics_temporary_sources(系統中所有的任務函式)
二、Cmake
配置檔案,主要使用 nuttx_px4fmu-v2_default.cmake。該處主要是關於系統使用的檔案的路徑配置,在 PX4 系統所有的.CPP 和.C 檔案都是通過在該處進行路徑包含的。 在需要自己建立私有任務或者 sensor 驅動程式時需要新增到該處。三、mavlink
四、msg
uORB manger 的縮寫:msg。該部分主要是 PX4 系統的使用的所有的資料結構的集合部分,各種任務和 sensor 驅動中需要獲取的 sensor 資料都在此部分,還包含各種 執行狀態的資料結構。其中需要注意的是該資料夾下的 Cmakelists.txt,該文件是整個 msg 部分的配置部分,類似第二部分的 Cmake 中的配置檔案一樣,在開發者建立任務或 者 sensor 驅動程式時建立對應的資料結構(***.msg)以後,需要把開發者建立的***.msg 新增到Cmakelists.txt 中,否則編譯時識別不到開發者建立的資料結構。在該部分建立 好以後,直接編譯可以自動生成相對應的 C/C++下的標準標頭檔案,即在第一部分所介紹的 topics_temporary_header,在 PX4 系統的任何一個地方引用所需要的資料結構,都需 要把這個標頭檔案包含進去。五、NuttX
六、ROMFS
ROM file_system 的簡寫,內部的 px4fmu_common 資料夾中的 init.d 是關於 px4 系統初始上電啟動的啟動指令碼,即一系列的啟動過程和系統配置。其中主要的幾個部分就 是 rcS、rc.sensors、rc.mc_default、rc.mc_apps 等。rcS:最先啟動的指令碼,負責掛載 SD、啟動 uORB、配置系統引數等。rc.sensors:啟動 sensors 驅動程式碼。如果在 src/drivers 中建立私有的 sensor 驅動,建議放在該部分啟動。rc.mc_default:配置和 PWM***相關的系統引數,內部含有怠速的配置。rc.mc_apps : 啟 動 上 層 application , 如 attitude_estimate 、 attitude_control 、position_estimate 和 position_control 等。如果在 src/modules 中建立私有的上層 application,建議放在該部分啟動。七、src
八、Makefile:
最終的編譯命令等,通過 shellscript 寫的,可以自行對其修改成自己需要的。九、
如下介紹對應於上面的紅色標識
1、編譯以後生成的韌體,燒錄進飛控即可。內部會有一些需要用到的標頭檔案和.cp檔案p。
2、mavlink協議部分,負責地面站通訊的庫檔案都在此。
3、msg是負責程序間通訊的訊息集合,在自己建立私有任務時需要再次檔案內部新增需要的資料結構。
4、Nutt是飛控所用的OS,這個不做系統移植不需要深入研究。我們所做的都是OS之上的。
5、ROMFS內部是啟動檔案,配置需要啟動哪些任務與啟動順序,還有一些就是關於系統預設的一些配置。具體配置哪些需要閱讀啟動指令碼瞭解。
6、SRC內部就是所有的sensor驅動和各種任務,比如姿態解算和姿態控制、位置解算和位置控制等等。
7、makefile內部是常用的命令列指令集合。
下面主要介紹一下SRC資料夾裡面的東西
1、drivers:所使用到的所有的sensor驅動程式都在此處。(如果新增sensor,注意該處)
2、顧名思義,實現程式碼,建立私有任務時可以參考。
3、Lib庫,很多矩陣運算相關的數學庫。
4、重點,飛航模式,姿態解算,姿態控制,位置結算,位置控制,落地檢測等任務都在該modules裡面。(飛控相關演算法都在該處)下面介紹重點modules
1、姿態解算的程式碼實現部分
2、落地檢測的程式碼實現部分
3、姿態控制的程式碼實現部分
4、位置控制的程式碼實現部分
5、位置解算的程式碼實現部分
6、各種sensors的初始化部分
7、uORB:程序間通訊所用