| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- #ifndef __CONTROL_THROTTLE_H
- #define __CONTROL_THROTTLE_H
- #include <stdbool.h>
- #include <stdint.h>
- #include "control_rate.h"
- #define HOVER_THR 1300
- // 解锁限制条状枚举类
- enum
- {
- // 允许解锁
- UNLOCK_ALLOW = 0,
- // 不允许解锁,IMU 通讯错包
- UNLOCK_DMAERR = 1,
- // 不允许解锁,速度超 0.4m/s
- UNLOCK_VELERR = 2,
- // 不允许解锁,遥控器拨杆位置错误
- UNLOCK_RCERR = 3,
- // 不允许解锁,未收到IMU数据
- UNLOCK_NOIMU = 4,
- // 不允许解锁,GPS状态标志错误
- UNLOCK_GPSERR = 5,
- // 不允许解锁,陀螺加速度计状态标志错误, 或加速度超 0.8m/s^2
- UNLOCK_ACCERR = 6,
- // 不允许解锁,未INS定位
- UNLOCK_NOINSGPS = 7,
- // 不允许解锁,无RTK
- UNLOCK_NORTK = 8,
- // 不允许解锁,磁状态标志错误
- UNLOCK_MAGERROR = 9,
- // 不允许解锁,陀螺超10deg/s
- UNLOCK_GYROERROR = 10,
- // 不允许解锁,温度超过80度
- UNLOCK_OVER_TEMPRATURE = 11,
- // 不允许解锁,imu版本不匹配
- UNLOCK_IMU_VERSION_ERR = 12,
- // 不允许解锁,在禁飞区内
- UNLOCK_IN_NO_FLY_ZONE = 13,
- // 不允许解锁, 电压低
- UNLOCK_VOLT_LOW = 14,
- // 不允许解锁, 智能电池 BMS 电量低
- UNLOCK_BMS_LOW_CAPACITY = 15,
- // 不允许解锁, 智能电池 BMS 故障
- UNLOCK_BMS_FAULT = 16,
- // 不允许解锁, 智能电池 BMS 通讯异常
- UNLOCK_BMS_LINK_LOST = 17,
- // 不允许解锁, 有断桨故障
- UNLOCK_SERVO_FAILSAFE = 18,
- // 不允许解锁, 姿态倾斜超 30 度
- UNLOCK_LEAN_ANGLE = 19,
- // 不允许解锁, SD 卡故障
- UNLOCK_SD_FAIL = 20,
- };
- // 油门上锁原因枚举类
- enum
- {
- //初始状态
- DEFLOCK = 0,
- //遥控器主动上锁
- RCLOCK = 1,
- //遥控器自动上锁
- RCAUTOLOCK = 2,
- //摇杆主动上锁
- ROCKLOCK = 3,
- //摇杆自动上锁
- ROCKAUTOLOCK = 4,
- //摇杆弹起上锁
- ROCKUPLOCK = 5,
- //返航上锁
- RTHLOCK = 6,
- //角度上锁
- ANGLELOCK = 7,
- //电台丢失上锁
- LINKLOSTLOCK = 8,
- //自动起飞超时上锁
- LAUNCHOTLOCK = 9,
- //丢失IMU上锁
- NOIMULOCK = 10,
- //一键上锁
- ONKEYLOCK = 11,
- //降落上锁
- LANDLOCK = 12,
- //丢星姿态降落上锁
- GPSFAILLOCK = 13,
- //遥控器错误上锁
- RCBADLOCK = 14,
- // 车载降落上锁
- VEHICLELAND_LOCK = 15,
- // 地面站强制上锁
- GCSFORCELOCK = 16,
- // 开伞上锁
- PARACHUTELOCK = 17,
- };
- // 解锁原因枚举类
- enum
- {
- // 初始状态
- DEFUNLOCK = 0,
- // 遥控器解锁
- RCUNLOCK = 1,
- // 摇杆解锁
- ROCKUNLOCK = 2,
- // 自动起飞解锁
- LAUNCHUNLOCK = 3,
- // 车载起飞解锁
- VEHICLELAUNCH_UNLOCK = 4,
- };
- // 油门锁状态枚举类
- enum
- {
- //上锁状态
- LOCKED = 1,
- //解锁状态
- UNLOCKED = 2,
- //起飞状态-给IMU发送指令使用
- TAKEOFF = 3
- };
- // 离地状态枚举类
- enum
- {
- //在地上
- ON_GROUND = 1,
- //在空中
- IN_AIR = 2,
- };
- // 油门控制状态
- typedef enum
- {
- THROTTLE_OFF = 0,
- THROTTLE_ONGROUND_IDLE = 1,
- THROTTLE_INAIR_RUNNING = 2
- } ThrCtrolStatusType;
- extern ThrCtrolStatusType throttle_pidctrl_status;
- // 定高状态标志
- enum
- {
- ALT_HOLD = 1,
- NO_ALT_HOLD = 2
- };
- extern char althold_state;
- extern bool unlock_fail;
- extern char thr_lock_flag;
- extern char thr_unlock_flag;
- extern char thr_lock_status;
- extern char ground_air_status;
- void pilot_unlock_decide(void);
- void pilot_takeoff_decide(void);
- void pilot_lock_decide(void);
- void get_pilot_desired_climb_rate_fromrc(short thr_in);
- void Calculate_Target_Az(float dt);
- void rate_pid_acctothrottle_alt(float dt);
- extern float base_thr, temp_basethr;
- void set_thr_lock_status(uint8_t lock_status, uint8_t reason);
- int judge_pilot_gsunlock_allow(void);
- int judge_pilot_rcunlock_allow(void);
- void throttle_enable_unlock_tune(void);
- bool throttle_get_enable_unlock_tune(void);
- void clear_poshold_i_item(struct pid_method_ap *method);
- #endif
|