diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-04-06 10:35:14 -0700 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-04-06 10:35:14 -0700 |
commit | ceb287504c7460b024ecabbcf278462da9e2aca1 (patch) | |
tree | 30b0fb214c02918a423b918ca9227f2d00d473b1 /src/modules | |
parent | e4cfdb4f9f30e0eef36f9e18e8d656d57994141e (diff) | |
parent | ab60b13b6dbcf636b1889d2150d96aff8b26cfc9 (diff) | |
download | px4-firmware-ceb287504c7460b024ecabbcf278462da9e2aca1.tar.gz px4-firmware-ceb287504c7460b024ecabbcf278462da9e2aca1.tar.bz2 px4-firmware-ceb287504c7460b024ecabbcf278462da9e2aca1.zip |
Merge pull request #807 from PX4/trust_airspeed
Do not make minimum airspeed assumptions, as we can trust our digital se...
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/fw_att_control/fw_att_control_main.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/modules/fw_att_control/fw_att_control_main.cpp b/src/modules/fw_att_control/fw_att_control_main.cpp index f139c25f4..2f84dc963 100644 --- a/src/modules/fw_att_control/fw_att_control_main.cpp +++ b/src/modules/fw_att_control/fw_att_control_main.cpp @@ -660,18 +660,24 @@ FixedwingAttitudeControl::task_main() float airspeed; - /* if airspeed is smaller than min, the sensor is not giving good readings */ - if ((_airspeed.indicated_airspeed_m_s < 0.5f * _parameters.airspeed_min) || - !isfinite(_airspeed.indicated_airspeed_m_s) || + /* if airspeed is not updating, we assume the normal average speed */ + if (!isfinite(_airspeed.true_airspeed_m_s) || hrt_elapsed_time(&_airspeed.timestamp) > 1e6) { airspeed = _parameters.airspeed_trim; } else { - airspeed = _airspeed.indicated_airspeed_m_s; + airspeed = _airspeed.true_airspeed_m_s; } - float airspeed_scaling = _parameters.airspeed_trim / airspeed; - //warnx("aspd scale: %6.2f act scale: %6.2f", airspeed_scaling, actuator_scaling); + /* + * For scaling our actuators using anything less than the min (close to stall) + * speed doesn't make any sense - its the strongest reasonable deflection we + * want to do in flight and its the baseline a human pilot would choose. + * + * Forcing the scaling to this value allows reasonable handheld tests. + */ + + float airspeed_scaling = _parameters.airspeed_trim / ((airspeed < _parameters.airspeed_min) ? _parameters.airspeed_min : airspeed); float roll_sp = _parameters.rollsp_offset_rad; float pitch_sp = _parameters.pitchsp_offset_rad; |