pixhawk软件架构
平臺支持
PX4飛控固件不針對特定的車輛/機體模型進行開發(fā),所以支持的平臺的數(shù)量是無限的。目前主要有多旋翼、固定翼、垂直起降三類機型的固件。
軟件結(jié)構(gòu)
可分為三大部分:實時操作系統(tǒng)、中間件和飛行控制棧。
1.Nuttx實時操作系統(tǒng)
???????? 提供POSIX-style的用戶操作環(huán)境(如printf(), pthreads,/dev/ttyS1,open(),write(),poll(),ioctl()),進行底層的任務(wù)調(diào)度。
2.中間件
???????? pixhawk中間件運行于操作系統(tǒng)之上,提供設(shè)備驅(qū)動和一個微對象請求代理(micro object request broker ,uORB)用于飛控上運行的單個任務(wù)之間的異步通信。
3.飛行控制棧
???????? 飛行控制棧可以使用pixhawk的控制軟件棧,也可以使用其他的控制軟件,如APM:Plane、APM:Copter,但必須運行于PX4中間件之上。
飛控軟件設(shè)計
飛行控制需要可靠的定時和清晰的優(yōu)先級。通過使用多線程操作系統(tǒng)和運行高效的驅(qū)動程序與中斷優(yōu)先級的正確調(diào)度可以保證控制循環(huán)執(zhí)行。如果一個運行較慢的循環(huán),需要更長的時間來處理,飛控系統(tǒng)并沒有丟失。新的控制應(yīng)用程序也可以添加,而不需要把應(yīng)用程序加在主循環(huán)中。
模塊設(shè)計
在每一層,每個驅(qū)動程序或控制器/狀態(tài)估計程序都是一個獨立模塊,能夠在運行期間互相通信。 這種清晰和模塊化的設(shè)計不僅有助于支持更多機型(因為不存在特定機型的主循環(huán)),同時使得代碼具有高度的可移植性。
Publish / Subscribe設(shè)計模式ORB
飛控中每個進程都可以通過Publish/Subscribe模式與其他進程以及驅(qū)動進行連接。該模式允許進程在無鎖模式下通信,或者簡化添加一個新的進程/應(yīng)用,有很顯著的效果。
飛行器上應(yīng)用程序列表
以下應(yīng)用程序隨著在系統(tǒng)運行啟動,其他的應(yīng)用程序可以通過NuttShell命令來啟動。為了得到完整的應(yīng)用程序列表,可以在shell終端中輸入help指令。另外可以在終端中輸入top或者ps 命令來確定哪個當(dāng)前哪個應(yīng)用程序正在運行。
應(yīng)用程序隨著在系統(tǒng)啟動時自動運行,所有的程序都記錄在系統(tǒng)啟動記錄頁面上。
shell命令
下面的是部分nuttshell命令。
?—顯示幫助信息
free–顯示內(nèi)存的使用情況
kill–終止一個進程
LS–目錄列表
系統(tǒng)命令程序
mavlink?–通過串口發(fā)送和接收mavlink信息
sdlog2?–保存系統(tǒng)日志/飛行數(shù)據(jù)到SD卡
tests??–測試系統(tǒng)中的測試程序
top?–列出當(dāng)前的進程和CPU負載
uORB?–?微對象請求代理器-分發(fā)其他應(yīng)用程序之間的信息
驅(qū)動
mkblctrl–blctrl電子模塊驅(qū)動
esc_calib?–ESC的校準(zhǔn)工具
fmu?–FMU引腳輸入輸出定義
gpio_led?–GPIO LED驅(qū)動
gps?–GPS接收器驅(qū)動
pwm?–PWM的更新速率命令
sensors?–傳感器應(yīng)用
px4io?–px4io驅(qū)動
uavcan?–uavcan驅(qū)動
飛行控制的程序
飛行安全和導(dǎo)航
commander?–主要飛行安全狀態(tài)機
navigator?–任務(wù),失效保護和RTL導(dǎo)航儀
估計姿態(tài)和位置
attitude_estimator_ekf?–基于EKF的姿態(tài)估計
ekf_att_pos_estimator?–基于EKF的姿態(tài)和位置估計
position_estimator_inav–慣性導(dǎo)航的位置估計
multirotor姿態(tài)和位置控制器
mc_att_control–multirotor姿態(tài)控制器
mc_pos_control?–multirotor位置控制器
fixedwing姿態(tài)和位置控制器
fw_att_control?–固定翼飛機的姿態(tài)控制
fw_pos_control_l1?–固定翼位置控制器
垂直起降姿態(tài)控制器
vtol_att_control?–垂直起降姿態(tài)控制器
總結(jié)
以上是生活随笔為你收集整理的pixhawk软件架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pixhawk 整体架构的认识
- 下一篇: Pixhawk-姿态解算-互补滤波