pixhawk固定翼起飞逻辑分析

pixhawk的起飞逻辑在runwaytakeoff.cpp中。

pixhawk固定翼起飞逻辑分析

首先是状态量的初始化init函数,输入量为初始的偏航角、经纬度。初始化的量包括偏航角、初始化的使能、飞机当前状态(加油门throttle_ramp),初始时间_initialized_time = hrt_absolute_time(),climbout状态进入,起始的经纬度。

pixhawk固定翼起飞逻辑分析

下面就是更新状态,飞机起飞状态共包括:加油门状态、滑跑状态、起飞状态、爬升状态。

pixhawk固定翼起飞逻辑分析

飞机在初始化的时候使飞机进入加油门throttle_ramp状态,此时的油门响应如图所示:

pixhawk固定翼起飞逻辑分析

如果油门上升的时间大于规定的 _throttle_ramp_time,则飞机加速进入CLAMPED_TO_RUNWAY状态,此时的油门响应如图所示。

pixhawk固定翼起飞逻辑分析


飞机速度大于规定的起飞速度_airspeed_min.get() * _min_airspeed_scaling.get(),则飞机进入起飞状态,此时地面站的小喇叭显示“#Takeoff airspeed reached”,此时拉杆,控制俯仰角,飞机离地起飞;

如果当前的高度大于于设置的某个高度,那么飞机进入climbout状态;

如果当前高度大于另一个值,飞机进入飞行模态fly,去找设置的takeoff航点。


其他时候的油门为

pixhawk固定翼起飞逻辑分析

px4语法学习:

1. mavlink_log_info(mavlink_log_pub, "#Takeoff airspeed reached"),是通过MavLink向地面站发送数据,地面站的mavlink_log_pub显示的数据或者消息;

2. hrt_elapsed_time(&_initialized_time)计算从开始_initialized_time以后经历过的时间,10s的话是10*1e6,

pixhawk固定翼起飞逻辑分析


问题:1. heading hold mode是什么?

2. _airspeed_min.get() * _min_airspeed_scaling.get(),nav_alt.get()这些都是怎么get2到的?