try to fix normalization again

This commit is contained in:
2026-06-29 23:05:23 -05:00
parent 23644f7072
commit 373089d374

View File

@@ -787,6 +787,8 @@ function SetThrusterPower(thruster, power)
return
end
if power > 1.0 then power = 1.0 elseif power < 0.0 then power = 0.0 end
if Config.Debug then print("DEBUG: thruster "..thruster.name..": power "..power) end
if thruster.type == "rotator" then
@@ -893,10 +895,6 @@ PIDs = {
ForeAftRatePID = CreatePID(0.1, 0.01, 0.05)
}
-- min and max thrust for thrust normalization
local minThrust = 0
local maxThrust = 0
local function createRollingAverage(window)
local buffer = {}
local index = 0
@@ -919,11 +917,12 @@ local function createRollingAverage(window)
end
end
MinRollingAverage = createRollingAverage(10)
MaxRollingAverage = createRollingAverage(10)
-- min and max thrust for thrust normalization
local minThrust = math.huge
local maxThrust = -math.huge
local function normalize(val, min, max)
if min == max then return 0.0 end
if min == max then return 0.5 end
return (val - min) / (max - min)
end
@@ -973,11 +972,8 @@ function UpdateGlobalThrust()
if desiredThrust > maxThrust then maxThrust = desiredThrust end
if desiredThrust < minThrust then minThrust = desiredThrust end
local maxAverage = MaxRollingAverage(maxThrust)
local minAverage = MinRollingAverage(minThrust)
-- Normalize the desired thrust to be between 0 and 1
local normalizedThrust = normalize(desiredThrust, minAverage, maxAverage)
local normalizedThrust = normalize(desiredThrust, minThrust, maxThrust)
if normalizedThrust < 0 then normalizedThrust = 0 end