八、MSP432飛控SDK模式開發(fā)教程
本節(jié)將詳細介紹飛控常用的API函數(shù)應用與利用SDK視覺數(shù)據實現(xiàn)自主飛行控制。下面分別以自定義軌跡飛行、追蹤物塊、APrilTag定位、自主循跡為例,了解飛控相關的API函數(shù)在不同任務中的使用,提供用戶二次開發(fā)的SDK控制函數(shù)Auto_Flight_Ctrl()函數(shù),后續(xù)二次開發(fā)任務可以均寫在此函數(shù)中。

① 自定義軌跡飛行NCQ_SDK_Run():
????默認例程是分三個SDK子任務,分別是向上飛行100cm高度,然后前進50cm,最后下降150cm,如果是以地面初始起飛條件,飛機再執(zhí)行第三個任務時會降落到地面,地面檢測函數(shù)檢測到滿足地面狀態(tài)時,飛機會自動上鎖。

l?NCQ_SDK_DUTY1\NCQ_SDK_DUTY3中
uint8_t move_with_z_target(float z_target,float z_vel,float delta,SDK_Status *Status,uint16_t number)

其中函數(shù)入口參數(shù):z_target表示目標位移,z_vel表示期望速度,delta表示運行總時間(和z_vel結合使用,即以某一速度爬升/下降多長時間),*Status表示SDK任務結構體,number表示SDK子任務序號。move_with_z_target任務執(zhí)行完畢后會返回完成標志1,用戶可以依據此標志位來判斷是否完成子任務,過渡到下一子任務。
NCQ_SDK_DUTY2中
uint8_t move_with_xy_target(float pos_x_target,float pos_y_target,SDK_Status *Status,uint16_t number)

其中函數(shù)入口參數(shù):pos_x_target表示X方向目標位移,pos_y_target表示Y方向目標位移,*Status表示SDK任務結構體,number表示SDK子任務序號。move_with_xy_target任務執(zhí)行完畢后會返回完成標志1,用戶可以依據此標志位來判斷是否完成子任務,過渡到下一子任務。需要注意的是在本SDK任務子任務執(zhí)行中間安排了過渡過程,原地懸停1S中再執(zhí)行下一任務。
其它API接口
uint8_t move_with_speed_target(float x_target,float y_target,float delta,SDK_Status *Status,uint16_t number)
其中函數(shù)入口參數(shù):x_target表示X方向期望速度,y_target表示Y方向期望速度,delta表示運行總時間(和期望速度結合使用,即以某一速度飛行多長時間),*Status表示SDK任務結構體,number表示SDK子任務序號。move_with_speed_target任務執(zhí)行完畢后會返回完成標志1,用戶可以依據此標志位來判斷是否完成子任務,過渡到下一子任務。
OPENMV視覺水平追蹤Color_Block_Control_Pliot():
俯視OPENMV視覺水平追蹤Top_APrilTag_Control_Pliot()——同理
俯視OPENMV視覺水平追蹤任務中,根據OPENMV識別到的水平目標位置,運行PID_Control_SDK_Err_LPF函數(shù)得到水平速度期望,然后運行光流速度控制函數(shù),最后得到姿態(tài)角期望。當目標丟失時會自動退出追蹤控制,保持原地懸停。


默認例程是分三個SDK子任務,分別是向上飛行100cm高度,然后前進50cm,最后下降150cm,如果是以地面初始起飛條件,飛機再執(zhí)行第三個任務時會降落到地面,地面檢測函數(shù)檢測到滿足地面狀態(tài)時,飛機會自動上鎖。
俯視OPENMV循跡控制Self_Track_Control_Pliot():
俯視OPENMV循跡控制任務中,根據OPENMV識別到的底部黑線軌跡,運行PID_Control_SDK_Err_LPF函數(shù)得到水平X方向速度期望,然后運行X方向光流速度控制函數(shù),最后得到橫滾方向姿態(tài)角期望。偏航方向根據識別到軌跡的角度,運用單比例P控制得到期望偏航的角速度,Y方向根據當前軌跡的斜率(角度)大小,決策合適的Y方向期望速度。
同理當目標丟失時會自動退出追蹤控制,保持原地懸停。




前視OPENMV視覺追蹤控制Front_AprilTag_Control_Pliot():
前視OPENMV視覺追蹤控制任務中,運行PID_Control_SDK_Err_LPF函數(shù)得到水平X方向速度期望,然后運行X方向光流速度控制函數(shù),最后得到橫滾方向姿態(tài)角期望。Y方向根據AprilTag到飛機的距離,運行PID_Control_SDK_Err_LPF函數(shù)得到水平Y方向速度期望,然后運行Y方向光流速度控制函數(shù)。同理當目標丟失時會自動退出追蹤控制,保持原地懸停。



預留用戶控制與降落任務控制:
????Auto_Flight_Ctrl()函數(shù)中預留了用戶控制函數(shù)與降落控制函數(shù),用二次開發(fā)任務時編寫具體項目任務函數(shù),執(zhí)行完畢后用降落函數(shù)落地至地面怠速后自動上鎖。同時針對某些賽題結束時需要對準降落目標,存在末端攝像頭丟失視野目標時,可以調用降落模式,用光流輔助自動下降,短時內基本不會偏移。
