change thrust nomalization

This commit is contained in:
2026-06-29 22:36:06 -05:00
parent 7c0cd566b1
commit e11c6483f9

View File

@@ -893,6 +893,40 @@ 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
local count = 0
local sum = 0
return function(new_value)
index = (index % window) + 1
if buffer[index] then
sum = sum - buffer[index]
else
count = count + 1
end
buffer[index] = new_value
sum = sum + new_value
return sum / count
end
end
MinRollingAverage = createRollingAverage(10)
MaxRollingAverage = createRollingAverage(10)
local function normalize(val, min, max)
if min == max then return 0.0 end
return (val - min) / (max - min)
end
function UpdateGlobalThrust()
-- for each thruster, there is a table of affectVectors that determine in what directions the thruster can apply thrust
-- each thruster has a power value from 0 to 1, which is the amount of thrust the thruster is currently applying
@@ -936,8 +970,15 @@ function UpdateGlobalThrust()
desiredThrust = desiredThrust + throttleOutput
end
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 = CustomSigmoid(desiredThrust)
local normalizedThrust = normalize(desiredThrust, minAverage, maxAverage)
if normalizedThrust < 0 then normalizedThrust = 0 end
if Config.Debug then print("DEBUG: "..thruster.name..": desiredThrust "..desiredThrust..", normalizedThrust "..normalizedThrust) end