4_競(jìng)賽無人機(jī)基本自動(dòng)飛行支持函數(shù)與導(dǎo)航控制函數(shù)解析——零基礎(chǔ)學(xué)習(xí)競(jìng)賽無人機(jī)搭積木
競(jìng)賽無人機(jī)基本自動(dòng)飛行支持函數(shù)與導(dǎo)航控制函數(shù)解析
基本自動(dòng)飛行支持函數(shù)
????void basic_auto_flight_support(void)
?

????????根據(jù)前面幾講的介紹,要想實(shí)現(xiàn)無人機(jī)的自動(dòng)飛行,單依靠姿態(tài)自穩(wěn)、高度控制遠(yuǎn)遠(yuǎn)不夠,必須在水平位置—速度控制的基礎(chǔ)上,才能保證無人機(jī)全程可控。因此設(shè)計(jì)了一個(gè)基本自動(dòng)飛行支持函數(shù),
????????第一部分OpticalFlow_Control_Pure()為SLAM定點(diǎn)控制,該函數(shù)在最后給定了水平俯仰、橫滾方向上的角度期望;第二部分yaw_ctrl_mode=ROTATE,yaw_outer_control_output ?=RC_Data.rc_rpyt[RC_YAW]表示偏航控制為手動(dòng)模式,偏航控制期望來源于遙控器偏航桿位給定;第三部分Flight_Alt_Hold_Control(ALTHOLD_MANUAL_CTRL,NUL,NUL)為高度手動(dòng)控制。
????????以上三部分共同保障了無人機(jī)自動(dòng)飛行的基礎(chǔ),在basic_auto_flight_support運(yùn)行的基礎(chǔ)上,可以通過改變?nèi)S的位置期望來實(shí)現(xiàn)無人機(jī)三維位置控制,因此專門設(shè)計(jì)了一個(gè)導(dǎo)航控制函數(shù)用于處理三維期望數(shù)據(jù)。
導(dǎo)航控制函數(shù)
????????void Horizontal_Navigation(float x,float y,float z,uint8_t nav_mode,uint8_t frame_id)
????????前三組參數(shù)表示下xyz三個(gè)方向的位置期望,單位為cm,xxy實(shí)際表征意義與nav_mode、frame_id相關(guān),下面列出二者的可選枚舉值:

?
① 當(dāng)nav_mode為RELATIVE_MODE,frame_id為MAP_FRAME時(shí),xy表示在當(dāng)前位置的基礎(chǔ)上,向虛擬正東(西)、虛擬正北(南)移動(dòng)一定距離,z表示以當(dāng)前高度為基準(zhǔn)向上或者向下移動(dòng)一定距離。

?
② 當(dāng)nav_mode為RELATIVE_MODE,frame_id為BODY_FRAME時(shí),xy表示在當(dāng)前位置的基礎(chǔ)上,向無人機(jī)的右側(cè)(R)、機(jī)頭(P)移動(dòng)一定距離,z表示以當(dāng)前高度為基準(zhǔn)向上或者向下移動(dòng)一定距離。
?

?
?
③ 當(dāng)nav_mode為GLOBAL_MODE,frame_id為MAP_FRAME時(shí),xy表示以初始O為原點(diǎn),虛擬正東(西)、虛擬正北(南)方向的全局期望位置,z表示相對(duì)地面的高度期望值。

?
????????上述函數(shù)用法學(xué)習(xí)可以參考Subtask_Demo.c提供的flight_subtask_5、flight_subtask_6、flight_subtask_7來練習(xí)掌握用法。

?
????????用戶需要對(duì)無人機(jī)進(jìn)行三維位置控制時(shí),基本自動(dòng)飛行支持函數(shù)與導(dǎo)航控制函數(shù)是配合使用的,二者缺一不可。新手在二次開發(fā)時(shí)往往只對(duì)飛行航點(diǎn)任務(wù)進(jìn)行編寫,卻遺漏掉了自動(dòng)飛行支持函數(shù)。
?
其它控制函數(shù)
void OpticalFlow_Vel_Control(Vector2f target)
void OpticalFlow_X_Vel_Control(float target_x)//機(jī)頭左側(cè)為X+
void OpticalFlow_Y_Vel_Control(float target_y)//機(jī)頭前側(cè)為Y+

?
????????上面兩個(gè)為光流速度控制函數(shù),在僅需要速度控制的情況下,比如定巡航、自主循跡、自動(dòng)繞桿、靠近塔桿等條件下使用。相關(guān)用法參考飛控開發(fā)者模式中的相關(guān)demo歷程。

?
