mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 06:28:27 -04:00
AR_WPNav:allow other PSC limit-parameters can be updated
This commit is contained in:
parent
725b7b30ae
commit
18200c88d0
@ -605,8 +605,20 @@ void AR_WPNav::update_speed_max()
|
|||||||
{
|
{
|
||||||
const float speed_max = MAX(_base_speed_max, _nudge_speed_max);
|
const float speed_max = MAX(_base_speed_max, _nudge_speed_max);
|
||||||
|
|
||||||
// ignore calls that do not change the speed
|
float atc_accel_max = MIN(_atc.get_accel_max(), _atc.get_decel_max());
|
||||||
if (is_equal(speed_max, _pos_control.get_speed_max())) {
|
if (!is_positive(atc_accel_max)) {
|
||||||
|
// accel_max of zero means no limit so use maximum acceleration
|
||||||
|
atc_accel_max = AR_WPNAV_ACCEL_MAX;
|
||||||
|
}
|
||||||
|
const float accel_max = is_positive(_accel_max) ? MIN(_accel_max, atc_accel_max) : atc_accel_max;
|
||||||
|
const float jerk_max = is_positive(_jerk_max) ? _jerk_max : accel_max;
|
||||||
|
const float lat_accel_max = _atc.get_turn_lat_accel_max();
|
||||||
|
|
||||||
|
// ignore calls that do not change the position controller parameters
|
||||||
|
if (is_equal(speed_max, _pos_control.get_speed_max()) &&
|
||||||
|
is_equal(accel_max, _pos_control.get_accel_max()) &&
|
||||||
|
is_equal(jerk_max, _pos_control.get_jerk_max()) &&
|
||||||
|
is_equal(lat_accel_max, _pos_control.get_lat_accel_max())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -618,7 +630,7 @@ void AR_WPNav::update_speed_max()
|
|||||||
_last_speed_update_ms = now_ms;
|
_last_speed_update_ms = now_ms;
|
||||||
|
|
||||||
// update position controller max speed
|
// update position controller max speed
|
||||||
_pos_control.set_limits(speed_max, _pos_control.get_accel_max(), _pos_control.get_lat_accel_max(), _pos_control.get_jerk_max());
|
_pos_control.set_limits(speed_max, accel_max, lat_accel_max, jerk_max);
|
||||||
|
|
||||||
// change track speed
|
// change track speed
|
||||||
_scurve_this_leg.set_speed_max(_pos_control.get_speed_max(), _pos_control.get_speed_max(), _pos_control.get_speed_max());
|
_scurve_this_leg.set_speed_max(_pos_control.get_speed_max(), _pos_control.get_speed_max(), _pos_control.get_speed_max());
|
||||||
|
Loading…
Reference in New Issue
Block a user