mirror of https://github.com/ArduPilot/ardupilot
AP_Scripting: make min speed configurable in rover-quicktune
This commit is contained in:
parent
ac2ef4c5a2
commit
f1aa3a3116
|
@ -26,7 +26,7 @@ local MAV_SEVERITY = {EMERGENCY=0, ALERT=1, CRITICAL=2, ERROR=3, WARNING=4, NOTI
|
||||||
|
|
||||||
local PARAM_TABLE_KEY = 15
|
local PARAM_TABLE_KEY = 15
|
||||||
local PARAM_TABLE_PREFIX = "RTUN_"
|
local PARAM_TABLE_PREFIX = "RTUN_"
|
||||||
local PARAM_TABLE_SIZE = 11
|
local PARAM_TABLE_SIZE = 12
|
||||||
|
|
||||||
-- bind a parameter to a variable
|
-- bind a parameter to a variable
|
||||||
function bind_param(name)
|
function bind_param(name)
|
||||||
|
@ -143,6 +143,16 @@ local RTUN_AUTO_SAVE = bind_add_param('AUTO_SAVE', 10, 5)
|
||||||
--]]
|
--]]
|
||||||
local RTUN_RC_FUNC = bind_add_param('RC_FUNC', 11, 300)
|
local RTUN_RC_FUNC = bind_add_param('RC_FUNC', 11, 300)
|
||||||
|
|
||||||
|
--[[
|
||||||
|
// @Param: RTUN_SPEED_MIN
|
||||||
|
// @DisplayName: Rover Quicktune minimum speed for tuning
|
||||||
|
// @Description: The mimimum speed in m/s required for tuning to start
|
||||||
|
// @Units: m/s
|
||||||
|
// @Range: 0.1 0.5
|
||||||
|
// @User: Standard
|
||||||
|
--]]
|
||||||
|
local SPEED_FF_SPEED_MIN = bind_add_param('SPEED_MIN', 12, 0.5)
|
||||||
|
|
||||||
-- other vehicle parameters used by this script
|
-- other vehicle parameters used by this script
|
||||||
local INS_GYRO_FILTER = bind_param("INS_GYRO_FILTER")
|
local INS_GYRO_FILTER = bind_param("INS_GYRO_FILTER")
|
||||||
local GCS_PID_MASK = bind_param("GCS_PID_MASK")
|
local GCS_PID_MASK = bind_param("GCS_PID_MASK")
|
||||||
|
@ -159,7 +169,6 @@ local FLTD_MUL = 0.5 -- ATC_STR_RAT_FLTD set to 0.5 * INS_GYRO_FI
|
||||||
local FLTT_MUL = 0.5 -- ATC_STR_RAT_FLTT set to 0.5 * INS_GYRO_FILTER
|
local FLTT_MUL = 0.5 -- ATC_STR_RAT_FLTT set to 0.5 * INS_GYRO_FILTER
|
||||||
local STR_RAT_FF_TURNRATE_MIN = math.rad(10) -- steering rate feedforward min vehicle turn rate (in radians/sec)
|
local STR_RAT_FF_TURNRATE_MIN = math.rad(10) -- steering rate feedforward min vehicle turn rate (in radians/sec)
|
||||||
local STR_RAT_FF_STEERING_MIN = 0.10 -- steering rate feedforward min steering output (in the range 0 to 1)
|
local STR_RAT_FF_STEERING_MIN = 0.10 -- steering rate feedforward min steering output (in the range 0 to 1)
|
||||||
local SPEED_FF_SPEED_MIN = 0.5 -- speed feedforward minimum vehicle speed (in m/s)
|
|
||||||
local SPEED_FF_THROTTLE_MIN = 0.20 -- speed feedforward requires throttle output (in the range 0 to 1)
|
local SPEED_FF_THROTTLE_MIN = 0.20 -- speed feedforward requires throttle output (in the range 0 to 1)
|
||||||
|
|
||||||
-- get time in seconds since boot
|
-- get time in seconds since boot
|
||||||
|
@ -458,7 +467,7 @@ function update_speed_ff(ff_pname)
|
||||||
|
|
||||||
-- check throttle and speed
|
-- check throttle and speed
|
||||||
local throttle_ok = throttle_out >= SPEED_FF_THROTTLE_MIN
|
local throttle_ok = throttle_out >= SPEED_FF_THROTTLE_MIN
|
||||||
local speed_ok = speed > SPEED_FF_SPEED_MIN
|
local speed_ok = speed > SPEED_FF_SPEED_MIN:get()
|
||||||
if (throttle_ok and speed_ok) then
|
if (throttle_ok and speed_ok) then
|
||||||
ff_throttle_sum = ff_throttle_sum + throttle_out
|
ff_throttle_sum = ff_throttle_sum + throttle_out
|
||||||
ff_speed_sum = ff_speed_sum + speed
|
ff_speed_sum = ff_speed_sum + speed
|
||||||
|
@ -471,7 +480,7 @@ function update_speed_ff(ff_pname)
|
||||||
if not throttle_ok then
|
if not throttle_ok then
|
||||||
gcs:send_text(MAV_SEVERITY.WARNING, string.format("RTun: increase throttle (%d < %d)", math.floor(throttle_out * 100), math.floor(SPEED_FF_THROTTLE_MIN * 100)))
|
gcs:send_text(MAV_SEVERITY.WARNING, string.format("RTun: increase throttle (%d < %d)", math.floor(throttle_out * 100), math.floor(SPEED_FF_THROTTLE_MIN * 100)))
|
||||||
elseif not speed_ok then
|
elseif not speed_ok then
|
||||||
gcs:send_text(MAV_SEVERITY.WARNING, string.format("RTun: increase speed (%3.1f < %3.1f)", speed, SPEED_FF_SPEED_MIN))
|
gcs:send_text(MAV_SEVERITY.WARNING, string.format("RTun: increase speed (%3.1f < %3.1f)", speed, SPEED_FF_SPEED_MIN:get()))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -60,6 +60,8 @@ If you move the switch to the low position at any time in the tune before gains
|
||||||
|
|
||||||
If the pilot gives steering or throttle input during tuning then tuning is paused for 4 seconds. Tuning restarts once the pilot returns to the input to the neutral position.
|
If the pilot gives steering or throttle input during tuning then tuning is paused for 4 seconds. Tuning restarts once the pilot returns to the input to the neutral position.
|
||||||
|
|
||||||
|
If the vehicle (small vehicles in particular) is not able to turn correctly to enter or track the circle, the ``PSC_VEl`` parameters may be to be increased. For example ``PSC_VEL_FF`` to 1 and ``PSC_VEL_P`` to 8.
|
||||||
|
|
||||||
# Parameters
|
# Parameters
|
||||||
|
|
||||||
The script has the following parameters to configure its behaviour
|
The script has the following parameters to configure its behaviour
|
||||||
|
@ -120,3 +122,8 @@ completes unless the pilot move the RC switch low to revert the tune.
|
||||||
Setting this to a non-zero value allows you to use quicktune with a 2-position
|
Setting this to a non-zero value allows you to use quicktune with a 2-position
|
||||||
switch, with the switch settings as low and mid positions. A zero
|
switch, with the switch settings as low and mid positions. A zero
|
||||||
value disables auto-save and you need to have a 3 position switch.
|
value disables auto-save and you need to have a 3 position switch.
|
||||||
|
|
||||||
|
## RTUN_SPEED_MIN
|
||||||
|
|
||||||
|
The minimum speed at which tuning will occur. The vehicle must be able to
|
||||||
|
run in Circle mode at this speed or greater.
|
Loading…
Reference in New Issue