PX4的飛行控制程序通過模塊來實(shí)現(xiàn),與飛控相關(guān)的模塊主要有commander,navigator,pos_control,att_control這幾個(gè),分別可以在src/modules目錄中找到。
commander - 指令/事件處理模塊,處理指令、遙控器輸入和各種事件,設(shè)定飛行器狀態(tài)和控制模式
navigator - 導(dǎo)航模塊,根據(jù)指定的任務(wù)輸出導(dǎo)航軌跡
pos_control - 位置控制,根據(jù)指定的軌跡或者位置實(shí)施位置控制,輸出飛行器目標(biāo)姿態(tài)
att_control - 姿態(tài)控制,控制飛行器姿態(tài),使飛行器達(dá)到預(yù)期的速度/加速度等
整體的控制框架大致如下:
其中,commander用于事件的處理,事件的類型可以包括遙控操作、用戶指令、狀態(tài)判斷等。navigation, pos control, att control三個(gè)模塊依次實(shí)現(xiàn)層級的飛行控制,從飛行軌跡到電機(jī)輸出。每一層的輸出是下一個(gè)環(huán)節(jié)的輸入值,比如navigation的輸入為設(shè)定的軌跡,輸出為位置/速度的設(shè)定值,作為pos control的輸入,pos control的輸出為姿態(tài)的設(shè)定值,作為att control的輸入,att control實(shí)現(xiàn)姿態(tài)控制,它的輸出為電機(jī)的控制信號。commander處理信息和事件時(shí)會更改飛行器狀態(tài)(vehicle status)和控制模式(control modes)的值,從而來確定控制系統(tǒng)的運(yùn)行模式,比如手動控制、位置控制、定高控制、自動起飛等。
?1. commander
由commander.cpp實(shí)現(xiàn),它的主要作用是對事件/消息做出響應(yīng),并根據(jù)事件/消息控制飛行器的狀態(tài)和飛行模式,分析commander.cpp的源代碼,它的輸入輸出如下圖
其中橢圓形表示模塊,在程序中對應(yīng)具體的module實(shí)現(xiàn),方形表示信息,通過orb_publish,orb_subscribe等函數(shù)發(fā)布和訂閱。commander的主要輸入包括遙控器輸入(manual_control_setpoint)、飛行器命令(vehicle_command)和著陸判斷(vehicle_land_detect)、電池狀態(tài)(battery_status、system_power)等信息。輸出主要有飛行器狀態(tài)(vehicle_state)、飛行器控制模式(vehicle_control_mode)等信息。其中黃色部分為最主要輸出信息。
?2 navigator
navigator主要用來實(shí)現(xiàn)導(dǎo)航功能,即根據(jù)用戶指定的任務(wù)給出飛行器需要實(shí)現(xiàn)的軌跡。它的消息輸入輸出結(jié)構(gòu)如下圖
主要的輸入為位置信息(vehicle_global_position,vehicle_local_position)、飛行器命令和任務(wù)指令(vehicle_command,mission),飛行器狀態(tài)(vehicle_status)。輸出為位置設(shè)定值(position_setpoint_triplet)和任務(wù)結(jié)果(mission_result)。
?3 pos_control
pos_control主要用來實(shí)現(xiàn)位置/速度控制,根據(jù)設(shè)定的位置/速度輸出需要實(shí)現(xiàn)飛行器姿態(tài)。它的消息輸入輸出結(jié)構(gòu)如下圖
主要的輸入信息為飛行器狀態(tài)(vehicle_status),控制模式(vehicle_control_mode),位置設(shè)定值(position_setpoint_triplet)等,主要的輸出為飛行器的姿態(tài)設(shè)定值(vehicle_attitude_setpoint),用于后續(xù)的姿態(tài)控制。
?4 att_control
att_control主要用來實(shí)現(xiàn)姿態(tài)控制,即控制飛行器達(dá)到指定的姿態(tài),飛行器的速度、位置等狀態(tài)都通過姿態(tài)控制來實(shí)現(xiàn)。它的消息輸入輸出結(jié)構(gòu)如下圖
它的主要輸入信息為飛行器狀態(tài)(vehicle_status),控制模式(vehicle_control_mode),姿態(tài)設(shè)定值(vehicle_attitude_setpoint),手動控制輸入(manual_control_setpoint)等。它的輸出主要為電機(jī)控制信號(actuators_control_0)。
?5 整體控制框架
整體控制框架如上圖所示,里面主要包含commander,navigator,pos_control,att_control等模塊,主要的邏輯如前面所述,navigator、pos_control、att_control形成串級的控制系統(tǒng),每一層的輸出為下一層的輸入。commander作為主要的調(diào)度方,接收各種信息和事件,主要通過vehicle_status和control_mode這兩個(gè)變量來控制三個(gè)控制模塊的運(yùn)作。從而使飛行器實(shí)現(xiàn)不同模式的控制。文章來源:http://www.zghlxwxcb.cn/news/detail-621615.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-621615.html
到了這里,關(guān)于PX4之飛行控制框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!