Browse Source

Sub: make libraries get EKF control limits themselves

master
Peter Barker 7 years ago committed by Andrew Tridgell
parent
commit
47b5cf98ea
  1. 6
      ArduSub/Sub.h
  2. 2
      ArduSub/control_auto.cpp
  3. 4
      ArduSub/control_guided.cpp
  4. 2
      ArduSub/control_poshold.cpp
  5. 3
      ArduSub/flight_mode.cpp

6
ArduSub/Sub.h

@ -207,12 +207,6 @@ private: @@ -207,12 +207,6 @@ private:
OpticalFlow optflow{ahrs};
#endif
// gnd speed limit required to observe optical flow sensor limits
float ekfGndSpdLimit;
// scale factor applied to velocity controller gain to prevent optical flow noise causing excessive angle demand noise
float ekfNavVelGainScaler;
// system time in milliseconds of last recorded yaw reset from ekf
uint32_t ekfYawReset_ms = 0;

2
ArduSub/control_auto.cpp

@ -734,7 +734,7 @@ void Sub::auto_terrain_recover_run() @@ -734,7 +734,7 @@ void Sub::auto_terrain_recover_run()
}
// run loiter controller
loiter_nav.update(ekfGndSpdLimit, ekfNavVelGainScaler);
loiter_nav.update();
///////////////////////
// update xy targets //

4
ArduSub/control_guided.cpp

@ -369,7 +369,7 @@ void Sub::guided_vel_control_run() @@ -369,7 +369,7 @@ void Sub::guided_vel_control_run()
}
// call velocity controller which includes z axis controller
pos_control.update_vel_controller_xyz(ekfNavVelGainScaler);
pos_control.update_vel_controller_xyz();
float lateral_out, forward_out;
translate_pos_control_rp(lateral_out, forward_out);
@ -440,7 +440,7 @@ void Sub::guided_posvel_control_run() @@ -440,7 +440,7 @@ void Sub::guided_posvel_control_run()
pos_control.set_desired_velocity_xy(posvel_vel_target_cms.x, posvel_vel_target_cms.y);
// run position controller
pos_control.update_xy_controller(ekfNavVelGainScaler);
pos_control.update_xy_controller();
float lateral_out, forward_out;
translate_pos_control_rp(lateral_out, forward_out);

2
ArduSub/control_poshold.cpp

@ -52,7 +52,7 @@ void Sub::poshold_run() @@ -52,7 +52,7 @@ void Sub::poshold_run()
motors.set_desired_spool_state(AP_Motors::DESIRED_THROTTLE_UNLIMITED);
// run loiter controller
loiter_nav.update(ekfGndSpdLimit, ekfNavVelGainScaler);
loiter_nav.update();
///////////////////////
// update xy outputs //

3
ArduSub/flight_mode.cpp

@ -98,9 +98,6 @@ bool Sub::set_mode(control_mode_t mode, mode_reason_t reason) @@ -98,9 +98,6 @@ bool Sub::set_mode(control_mode_t mode, mode_reason_t reason)
// called at 100hz or more
void Sub::update_flight_mode()
{
// Update EKF speed limit - used to limit speed when we are using optical flow
ahrs.getEkfControlLimits(ekfGndSpdLimit, ekfNavVelGainScaler);
switch (control_mode) {
case ACRO:
acro_run();

Loading…
Cancel
Save