ArduPilot中的TECS控制涉及很多变量,通过AP_TECS类来实现,这里一一列出
_height - 高度(m)
_climb_rate - 爬升速率(-Vz,m/s)
_vel_dot - 前向加速度(x轴)
_vel_dot_lpf - 滤波后的前向加速度(低通滤波)
_height_filter - 高度滤波器
_vdot_filter - 加速度滤波器
_EAS_dem - 目标当量空速(m/s,通过update_pitch_throttle函数传入)
_TAS_dem - 目标真实空速(m/s,通过_EAS_dem转换而来)
_TASmin - 最小真实空速
_TASmax - 最大真实空速
用以限定_TAS_dem的取值范围,由参数aparm.airspeed_min/max计算而来
_TAS_state - 真实空速(从空速计获得当量空速,经过转换和二阶互补滤波)
_update_50hz_last_usec - update_50Hz函数上次更新时间(us)
_DT - TECS控制(update_pitch_throttle)运行时间间隔
_update_pitch_throttle_last_usec - 上次运行update_pitch_throttle的时间
_flags - 标志位
.reset - 重启(当更新时间间隔>1.0s时,需要重置控制算法,此标志位置1)
.is_gliding - 是否处于滑翔状态
.is_doing_auto_land - 是否处于自动着陆状态
.underspeed - 是否处于失速状态
.reached_speed_takeoff - 是否达到起飞速度
.badDescent - 是否不良下降
_distance_beyond_land_wp - 超过着陆航点的距离
_hgt_dem_in_raw - 目标飞行高度(m),来自参数的目标飞行高度
_hgt_dem_in - 目标飞行高度(m),来自参数,在有些情况下_hgt_dem_in不会随着_hgt_dem_in_raw更新
_hgt_afe - 高度估计值(作为update_pitch_throttle参数传入)
_load_factor - 载荷因子(额外的重力,比如转弯时)
_flight_stage - 飞行阶段(起飞、正常、降落等)
_THRmaxf - 最大油门
_THRminf - 最小油门
_THRmaxf_ext - 外部设定的最大油门值(通过set_throttle_max设定)
_THRminf_ext - 外部设定的最小油门值(通过set_throttle_min设定)
_THRmaxf_ext和THRminf_ext每次运行时被重置,需从外部重新设置
_PITCHmaxf - 最大俯仰角
_PITCHminf - 最小俯仰角
或者从AP_TECS::_pitch_max/min取值,或者从aparm.pitch_limit_max/min取值
aparm.pitch_limit_max/min为飞行器的最大/最小俯仰角,比如正负18度
AP_TECS::_pitch_max/min为TECS控制的最大/最小俯仰角,比如正负15度
在两者都有有效值的情况下,以AP_TECS的参数值为优先
_PITCHmaxf_ext - 外部设定的最大俯仰角
_PITCHminf_ext - 外部设定的最小俯仰角
这两者通过set_pitch_max/min函数来设定,每次运行后都被重置,需重新设置
_landing - 着陆相关的变量
.is_on_approach() - 是否处于进近状态(下降)
.is_flaring() - 是否处于拉平状态(即将着陆)
_land_pitch_min - 着陆阶段最小俯仰角
_STEdot_max - 最大STE(Specific Total Energy)变化率
_STEdot_min - 最小STE变化率
_STEdot_neg_max - 最大空速下的最小STE变化率
_climb_rate_limit - 最大爬升率
_maxClimbRate - 最大爬升率(参数)
_sink_rate_limit - 最大下降率
_maxSinkRate - 最大下降率(参数)
上述均为控制参数,根据控制要求设置
_TAS_dem_adj - 真实空速目标值(调整后),变化速度不超过STE变化率限制
_TAS_rate_dem - 真实空速变化率目标值
_hgt_dem_rate_ltd - 目标高度值(_hgt_dem_in二值滤波后再取最大爬升/下降率限值)
_hgt_dem_lpf - 目标高度值(_hgt_dem_rate_ltd的低通滤波值)
_hgt_dem - 施加于控制的目标高度值(_hgt_dem_lpf加上起飞偏移量)
_SPE_dem - 目标势能(通过目标高度计算)
_SKE_dem - 目标动能(通过目标速度计算)
_SKEdot_dem - 目标动能变化率
_SPE_est - 当前势能(根据高度计算)
_SKE_est - 当前动能(根据速度计算)
_SPEdot - 势能变化率(通过爬升率计算)
_SKEdot - 动能变化率(通过速度和加速度计算)
_SKE_weighting - 动能权重值
_spdWeight - 动能权重值(参数)
_pitch_dem_unc - 目标俯仰角(根据SEBdot来计算,PID控制率)
_pitch_dem - 目标俯仰角(受_PITCHminf和_PITCHmaxf限制,最终施加于控制的俯仰角)
_SPEdot_dem - 目标势能变化率
_STE_error - 总能量误差
_thrDamp - 油门控制阻尼(参数,对_STE_error变化率的阻尼)
_throttle_dem - 目标油门值(通过_STE_error来计算,PID控制率)
_integTHR_state - 油门控制积分因子(_STE_error的积分乘以积分参数)
在ArduPilot的数据记录中,会把TECS控制的相关状态存储起来,分别存储在TECS,TEC2,TEC3,TEC4等记录中,分别对应TECS控制的相关变量
TECS //在update_pitch_throttle中调用记录
TimeUS - 时间(us)
h - 高度(_height)
dh - 爬升率(_climb_rate)
hin - 目标高度(参数输入,_hgt_dem_in_raw)
hdem - 目标高度(实际控制目标高度,_hgt_dem)
dhdem - 目标爬升率(_hgt_rate_dem)
spdem - 目标飞行速度(_TAS_dem_adj)
sp - 真实速度(_TAS_state)
dsp - 加速度(前向,_vel_dot)
th - 目标油门值(_throttle_dem)
ph - 目标俯仰角(_pitch_dem)
pmin - 最小俯仰角(_PITCHminf)
pmax - 最大俯仰角(_PITCHmaxf)
dspdem - 目标加速度(_TAS_rate_dem)
f - 标志位(_flags_byte,和_flags是union)
TEC2 //在_update_pitch中调用记录
TimeUS - 时间(us)
PEW - SPE_weighting,势能权重值
KEW - _SKE_weighting,动能权重值
EBD - SEB_dem,目标平衡能量
EBE - SEB_est,估计平衡能量值
EBDD - SEBdot_dem,目标平衡能量变化率
EBDE - SEBdot_est,估计平衡能量变化率
EBDDT - SEBdot_dem_total,目标平衡能量变化率(总体)
Imin - integSEBdot_min,平衡能量变化率误差积分下限
Imax - integSEBdot_max,平衡能量变化率误差积分上限
I - _integSEBdot,平衡能量变化率误差积分
KI - _integKE,动能误差积分(integral of SKE)
tmin - _THRminf,最小油门值
tmax - _THRmaxf,最大油门值
TEC3 //在_update_throttle_with_airspeed中调用记录
TimeUS - 时间(us)
KED - _SKEdot,动能变化率
PED - _SPEdot,势能变化率
KEDD - _SKEdot_dem,目标动能变化率
PEDD - _SPEdot_dem,目标势能变化率
TEE - _STE_error,总能量误差
TEDE - STEdot_error,总能量误差变化率
FFT - ff_throttle,前馈油门控制
Imin - integ_min,油门控制积分下限
Imax - integ_max,油门控制积分上限
I - _integTHR_state,油门控制积分量
Emin - SPE_err_min,势能误差最小值
Emax - SPE_err_max,势能误差最大值
TEC4 //在_update_throttle_with_airspeed中调用记录
TimeUS - 时间(us)
P - _SPE_est,势能估计值
K - _SKE_est,动能估计值
Pdem - _SPE_dem,势能目标值
Kdem - _SKE_dem,动能目标值

被折叠的 条评论
为什么被折叠?



