Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AP_Scripting: applets: fix luacheck issues in sport aerobattics and script controller #28940

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@ cmd = 3: rolling circle, arg1 = yaw rate, arg2 = roll rate
cmd = 4: knife edge at any angle, arg1 = roll angle to hold, arg2 = duration
cmd = 5: pause, holding heading and alt to allow stabilization after a move, arg1 = duration in seconds
]]--
-- luacheck: only 0
---@diagnostic disable: param-type-mismatch
---@diagnostic disable: need-check-nil
---@diagnostic disable: cast-local-type
---@diagnostic disable: undefined-global

DO_JUMP = 177
k_throttle = 70
Expand All @@ -29,13 +27,12 @@ local HGT_P = bind_add_param('HGT_P',1,1) -- height P gain
local HGT_I = bind_add_param("HGT_I",2,1) -- height I gain
local HGT_KE_BIAS = bind_add_param("KE_ADD",3,20) -- height knifeedge addition for pitch
local THR_PIT_FF = bind_add_param("PIT_FF",4,80) -- throttle FF from pitch
local SPD_P = bind_add_param("SPD_P",5,5) -- speed P gain
local SPD_I = bind_add_param("SPD_I",6,25) -- speed I gain
-- 5 was "SPD_P" speed P gain
-- 6 was "SPD_I" speed I gain
local TRIM_THROTTLE = Parameter("TRIM_THROTTLE")
local RLL2SRV_TCONST = Parameter("RLL2SRV_TCONST")
local PITCH_TCONST = Parameter("PTCH2SRV_TCONST")

local last_roll_err = 0.0
local last_id = 0
local initial_yaw_deg = 0
local wp_yaw_deg = 0
Expand Down Expand Up @@ -65,10 +62,10 @@ function bind_add_param2(name, idx, default_value)
assert(param:add_param(PARAM_TABLE_KEY2, idx, name, default_value), string.format('could not add param %s', name))
return Parameter(PARAM_TABLE_PREFIX2 .. name)
end
local TRICKS = nil
local TRIK_SEL_FN = nil
local TRIK_ACT_FN = nil
local TRIK_COUNT = nil
local TRICKS
local TRIK_SEL_FN
local TRIK_ACT_FN
local TRIK_COUNT

-- constrain a value between limits
function constrain(v, vmin, vmax)
Expand Down Expand Up @@ -131,7 +128,7 @@ end
--roll controller to keep wings level in earth frame. if arg is 0 then level is at only 0 deg, otherwise its at 180/-180 roll also for loops
function earth_frame_wings_level(arg)
local roll_deg = math.deg(ahrs:get_roll())
local roll_angle_error = 0.0
local roll_angle_error
if (roll_deg > 90 or roll_deg < -90) and arg ~= 0 then
roll_angle_error = 180 - roll_deg
else
Expand Down Expand Up @@ -166,7 +163,6 @@ local function PI_controller(kP,kI,iMax)
-- private fields as locals
local _kP = kP or 0.0
local _kI = kI or 0.0
local _kD = kD or 0.0
local _iMax = iMax
local _last_t = nil
local _I = 0
Expand Down Expand Up @@ -254,7 +250,6 @@ local function height_controller(kP_param,kI_param,KnifeEdge_param,Imax)
end

local height_PI = height_controller(HGT_P, HGT_I, HGT_KE_BIAS, 20.0)
local speed_PI = PI_controller(SPD_P:get(), SPD_I:get(), 100.0)

-- a controller to target a zero pitch angle and zero heading change, used in a roll
-- output is a body frame pitch rate, with convergence over time tconst in seconds
Expand Down Expand Up @@ -305,7 +300,6 @@ function do_axial_roll(arg1, arg2)
gcs:send_text(5, string.format("Starting %d Roll(s)", arg2))
end
local roll_rate = arg1
local pitch_deg = math.deg(ahrs:get_pitch())
local roll_deg = math.deg(ahrs:get_roll())

if trick_stage == 0 then
Expand Down Expand Up @@ -364,7 +358,7 @@ function do_loop(arg1, arg2)
local roll_deg = math.deg(ahrs:get_roll())
local vel = ahrs:get_velocity_NED():length()
local pitch_rate = arg1
local pitch_rate = pitch_rate * (1+ 2*((vel/target_vel)-1)) --increase/decrease rate based on velocity to round loop
pitch_rate = pitch_rate * (1+ 2*((vel/target_vel)-1)) --increase/decrease rate based on velocity to round loop
pitch_rate = constrain(pitch_rate,.5 * arg1, 3 * arg1)

if trick_stage == 0 then
Expand Down Expand Up @@ -400,7 +394,6 @@ function do_loop(arg1, arg2)
return
end
end
throttle = throttle_controller()
if trick_stage == 2 or trick_stage == 0 then
level_type = 0
else
Expand Down Expand Up @@ -430,9 +423,6 @@ function do_rolling_circle(arg1, arg2)
end
local yaw_rate_dps = arg1
local roll_rate_dps = arg2
local pitch_deg = math.deg(ahrs:get_pitch())
local roll_deg = math.deg(ahrs:get_roll())
local yaw_deg = math.deg(ahrs:get_yaw())
local now_ms = millis()
local dt = (now_ms - circle_last_ms):tofloat() * 0.001
circle_last_ms = now_ms
Expand Down Expand Up @@ -467,7 +457,7 @@ function do_rolling_circle(arg1, arg2)
end
end

local knife_edge_ms = 0
local knife_edge_s = 0
function do_knife_edge(arg1,arg2)
-- arg1 is angle +/-180, duration is arg2
local now = millis():tofloat() * 0.001
Expand All @@ -477,7 +467,6 @@ function do_knife_edge(arg1,arg2)
knife_edge_s = now
gcs:send_text(5, string.format("Starting %d Knife Edge", arg1))
end
local i=0
if (now - knife_edge_s) < arg2 then
local roll_deg = math.deg(ahrs:get_roll())
local roll_angle_error = (arg1 - roll_deg)
Expand Down Expand Up @@ -506,7 +495,7 @@ function do_knife_edge(arg1,arg2)
end

-- fly level for a time..allows full altitude recovery after trick
function do_pause(arg1,arg2)
function do_pause(arg1,_)
-- arg1 is time of pause in sec, arg2 is unused
local now = millis():tofloat() * 0.001
if not running then
Expand All @@ -515,7 +504,6 @@ function do_pause(arg1,arg2)
knife_edge_s = now
gcs:send_text(5, string.format("%d sec Pause", arg1))
end
local i=0
if (now - knife_edge_s) < arg1 then
roll_rate = earth_frame_wings_level(0)
target_pitch = height_PI.update(initial_height)
Expand All @@ -534,11 +522,7 @@ function do_pause(arg1,arg2)
end
end


local circle_yaw = 0
local circle_last_ms = 0

function do_knifedge_circle(arg1, arg2)
function do_knifedge_circle(arg1, _)
-- constant roll angle circle , arg1 yaw rate, positive to right, neg to left, arg2 is not used
if not running then
running = true
Expand All @@ -549,8 +533,6 @@ function do_knifedge_circle(arg1, arg2)
gcs:send_text(5, string.format("Staring KnifeEdge Circle"))
end
local yaw_rate_dps = arg1
local pitch_deg = math.deg(ahrs:get_pitch())
local yaw_deg = math.deg(ahrs:get_yaw())
local now_ms = millis()
local dt = (now_ms - circle_last_ms):tofloat() * 0.001
circle_last_ms = now_ms
Expand Down Expand Up @@ -621,7 +603,6 @@ function do_4point_roll(arg1, arg2)
height_PI.reset()
gcs:send_text(5, string.format("Starting 4pt Roll"))
end
local pitch_deg = math.deg(ahrs:get_pitch())
local roll_deg = math.deg(ahrs:get_roll())

if trick_stage == 0 then
Expand Down Expand Up @@ -844,7 +825,7 @@ function check_trick()
gcs:send_text(0, string.format("No trick selected"))
return 0
end
local id = TRICKS[selection].id:get()
id = TRICKS[selection].id:get()
if action == 1 then
gcs:send_text(5, string.format("Trick %u selected (%s)", id, name[id]))
return 0
Expand Down
8 changes: 3 additions & 5 deletions libraries/AP_Scripting/applets/Script_Controller.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
a script to select other lua scripts using an auxillary switch from
/1 /2 or /3 subdirectories of the scripts directory
--]]
-- luacheck: only 0
---@diagnostic disable: param-type-mismatch


Expand Down Expand Up @@ -125,7 +124,7 @@ function remove_scripts(subdir)
return false
end
local ret = false
for k,v in ipairs(dlist) do
for _,v in ipairs(dlist) do
local suffix = v:sub(-4)
if compare_strings_ci(suffix,".LUA") and not compare_strings_ci(v,THIS_SCRIPT) then
if not file_exists(subdir .. "/" .. v) then
Expand All @@ -148,7 +147,7 @@ function copy_scripts(subdir)
end
local ret = false
local sdir = get_scripts_dir()
for k, v in ipairs(dlist) do
for _, v in ipairs(dlist) do
local suffix = v:sub(-4)
if compare_strings_ci(suffix,".LUA") and not compare_strings_ci(v,THIS_SCRIPT) then
local src = subdir .. "/" .. v
Expand Down Expand Up @@ -184,12 +183,11 @@ function mission_load(n)
local index = 0
local fail = false
while true and not fail do
local data = {}
local line = file:read()
if not line then
break
end
local ret, _, seq, curr, frame, cmd, p1, p2, p3, p4, x, y, z, autocont = string.find(line, "^(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+(%d+)")
local ret, _, seq, _--[[ curr ]], frame, cmd, p1, p2, p3, p4, x, y, z, _--[[ autocont ]] = string.find(line, "^(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+([-.%d]+)%s+(%d+)")
if not ret then
fail = true
break
Expand Down
Loading