try to fix normalization again
This commit is contained in:
18
main.lua
18
main.lua
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user