copter的throttle_loop()任務(wù)定義在任務(wù)列表中 1 //頻率 50 最大運(yùn)行時(shí)間75us 2 SCHED_TASK(throttle_loop, 50, 75), throttle_loop - 應(yīng)該以50HZ運(yùn)行1 void Copter::throttle_loop() 2 { 3 //更新throttle_low_comp值(控制油門(mén)的優(yōu)先級(jí) VS 高度控制) 4 update_throttle_mix(); 5 6 //檢查自動(dòng)armed狀態(tài) 7 update_auto_armed(); 8 9 10 //補(bǔ)償?shù)孛嫘?yīng) 11 update_ground_effect_detector(); 12 update_ekf_terrain_height_stable(); 13 } update_throttle_mix1 //根據(jù)vehicle狀態(tài)來(lái)設(shè)置電機(jī)throttle_low_comp值 2 //當(dāng)油門(mén)高于懸停油門(mén)時(shí),較低的值優(yōu)先于飛行員/自動(dòng)駕駛油門(mén)而不是姿態(tài)控制,而較高的值則優(yōu)先于姿態(tài)控制而不是油門(mén) 3 void Copter::update_throttle_mix() 4 { 5 attitude_control->set_throttle_mix_man(); 6 } AC_AttitudeControl_Multi1 class AC_AttitudeControl_Multi 2 { 3 //設(shè)置所需的油門(mén)與姿態(tài)混合 (實(shí)際混合會(huì)在1到2秒內(nèi)轉(zhuǎn)換為該值 ) 4 void set_throttle_mix_min() override { _throttle_rpy_mix_desired = _thr_mix_min}; 5 } ap_t1 typedef union 2 { 3 struct 4 { 5 uint8_t unused1 : 1; // 0 6 uint8_t unused_was_simple_mode : 2; // 1,2 7 uint8_t pre_arm_rc_check : 1; // 3 8 //當(dāng)rc 輸入 pre-arm檢查已經(jīng)完全成功時(shí)為真 9 uint8_t pre_arm_check : 1; // 4 10 //當(dāng)所有的pre-arm檢查(rc,accel,calibration,gps,lock)已經(jīng)被執(zhí)行時(shí),為真 11 uint8_t auto_armed : 1; // 5 12 //從開(kāi)始停止自動(dòng)執(zhí)行,直到油門(mén)上升 13 uint8_t logging_started : 1; // 6 14 //日志記錄開(kāi)始就為真 15 uint8_t land_complete : 1; // 7 16 //當(dāng)探測(cè)到著陸就為真 17 uint8_t new_radio_frame : 1; // 8 18 //當(dāng)來(lái)自radio的pwm數(shù)據(jù)來(lái)執(zhí)行時(shí),為真 19 uint8_t usb_connected_unused : 1; // 9 // UNUSED 20 uint8_t rc_receiver_present : 1; // 10 21 //有rc接收機(jī)時(shí)為真 22 uint8_t compass_mot : 1; // 11 23 //正在進(jìn)行羅盤(pán)校準(zhǔn)為真 24 uint8_t motor_test : 1; // 12 25 //執(zhí)行電機(jī)測(cè)試時(shí)為真 26 uint8_t initialised : 1; // 13 27 //一旦init_ardupilot函數(shù)完成,就為真,到gps的擴(kuò)展?fàn)顟B(tài)不發(fā)送,直到這個(gè)完成 28 uint8_t land_complete_maybe : 1; // 14 29 //如果已經(jīng)著陸就為真 30 uint8_t throttle_zero : 1; // 15 31 // 如果油門(mén)桿為零且反跳,則為true,它確定飛行員是否在不使用電動(dòng)機(jī)互鎖時(shí)打算關(guān)閉 32 uint8_t system_time_set_unused : 1; // 16 33 //系統(tǒng)時(shí)間已經(jīng)從cps設(shè)置,為真 34 uint8_t gps_glitching : 1; // 17 35 //GPS錯(cuò)誤影響導(dǎo)航準(zhǔn)確度 36 uint8_t using_interlock : 1; // 20 37 // aux switch motor interlock function is in use 38 //輔助開(kāi)關(guān)電機(jī)互鎖功能在使用 39 uint8_t land_repo_active : 1; // 21 40 // 如果飛行員超越著陸位置,則為true 41 uint8_t motor_interlock_switch : 1; // 22 42 // 如果飛行員請(qǐng)求啟用電機(jī)互鎖,則為true 43 uint8_t in_arming_delay : 1; // 23 44 // 當(dāng)我們武裝但正在等待旋轉(zhuǎn)電機(jī)時(shí)為真 45 uint8_t initialised_params : 1; // 24 46 // true when the all parameters have been initialised. we cannot send parameters to the GCS until this is done 47 //當(dāng)所有參數(shù)已經(jīng)初始化,我們不能發(fā)送參數(shù)到GPS,直到這個(gè)完成 48 uint8_t unused3 : 1; // 25 49 50 //當(dāng)指南針的初始化位置已經(jīng)設(shè)置為真, 51 uint8_t unused2 : 1; // 26 52 //輔助開(kāi)關(guān)rc_override是允許的 53 uint8_t armed_with_switch : 1; // 27 54 //使用arm開(kāi)關(guān)來(lái)armed 55 }; 56 uint32_t value; 57 } ap_t; update_auto_armed1 //更新auto_armed標(biāo)志的狀態(tài) 2 void Copter::update_auto_armed() 3 { 4 if(ap.auto_armed) 5 { 6 } 7 } baro_ground_effect.cpp1 void update_ground_effect_detector(void);
|
|
來(lái)自: Coder編程 > 《待分類(lèi)》