Browse Source

multicopter: minimize dt jitter by using estimate timestamp_sample

master
Daniel Agar 3 years ago
parent
commit
019eaf7038
  1. 2
      src/modules/flight_mode_manager/FlightModeManager.cpp
  2. 4
      src/modules/mc_att_control/mc_att_control_main.cpp
  3. 2
      src/modules/mc_pos_control/MulticopterPositionControl.cpp

2
src/modules/flight_mode_manager/FlightModeManager.cpp

@ -99,7 +99,7 @@ void FlightModeManager::Run() @@ -99,7 +99,7 @@ void FlightModeManager::Run()
vehicle_local_position_s vehicle_local_position;
if (_vehicle_local_position_sub.update(&vehicle_local_position)) {
const hrt_abstime time_stamp_now = hrt_absolute_time();
const hrt_abstime time_stamp_now = vehicle_local_position.timestamp_sample;
// Guard against too small (< 0.2ms) and too large (> 100ms) dt's.
const float dt = math::constrain(((time_stamp_now - _time_stamp_last_loop) / 1e6f), 0.0002f, 0.1f);
_time_stamp_last_loop = time_stamp_now;

4
src/modules/mc_att_control/mc_att_control_main.cpp

@ -263,8 +263,8 @@ MulticopterAttitudeControl::Run() @@ -263,8 +263,8 @@ MulticopterAttitudeControl::Run()
}
// Guard against too small (< 0.2ms) and too large (> 20ms) dt's.
const float dt = math::constrain(((v_att.timestamp - _last_run) * 1e-6f), 0.0002f, 0.02f);
_last_run = v_att.timestamp;
const float dt = math::constrain(((v_att.timestamp_sample - _last_run) * 1e-6f), 0.0002f, 0.02f);
_last_run = v_att.timestamp_sample;
/* check for updates in other topics */
_manual_control_setpoint_sub.update(&_manual_control_setpoint);

2
src/modules/mc_pos_control/MulticopterPositionControl.cpp

@ -291,7 +291,7 @@ void MulticopterPositionControl::Run() @@ -291,7 +291,7 @@ void MulticopterPositionControl::Run()
vehicle_local_position_s local_pos;
if (_local_pos_sub.update(&local_pos)) {
const hrt_abstime time_stamp_now = local_pos.timestamp;
const hrt_abstime time_stamp_now = local_pos.timestamp_sample;
const float dt = math::constrain(((time_stamp_now - _time_stamp_last_loop) * 1e-6f), 0.002f, 0.04f);
_time_stamp_last_loop = time_stamp_now;

Loading…
Cancel
Save