add aformentioned simplified stabilization for vessels with thrusters with the field populated correctly
This commit is contained in:
69
main.lua
69
main.lua
@@ -961,39 +961,54 @@ function UpdateGlobalThrust()
|
|||||||
for _, thruster in pairs(Thrusters) do
|
for _, thruster in pairs(Thrusters) do
|
||||||
local desiredThrust = 0
|
local desiredThrust = 0
|
||||||
|
|
||||||
-- Calculate desired thrust based on affectVectors and PID outputs
|
if thruster.x_config_equivalent ~= nil then
|
||||||
if thruster.affectVectors.angular.pitch ~= nil and thruster.primary_pitch_thruster then
|
|
||||||
if thruster.affectVectors.angular.pitch == "up" then
|
|
||||||
desiredThrust = desiredThrust + pitchRateOutput
|
|
||||||
else
|
|
||||||
desiredThrust = desiredThrust - pitchRateOutput
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if thruster.affectVectors.angular.roll ~= nil and thruster.primary_roll_thruster then
|
-- Calculate desired thrust based on affectVectors and PID outputs
|
||||||
if thruster.affectVectors.angular.roll == "port" then
|
if thruster.affectVectors.angular.pitch ~= nil and thruster.primary_pitch_thruster then
|
||||||
desiredThrust = desiredThrust + rollRateOutput
|
if thruster.affectVectors.angular.pitch == "up" then
|
||||||
else
|
desiredThrust = desiredThrust + pitchRateOutput
|
||||||
desiredThrust = desiredThrust - rollRateOutput
|
else
|
||||||
|
desiredThrust = desiredThrust - pitchRateOutput
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
if thruster.affectVectors.angular.roll ~= nil and thruster.primary_roll_thruster then
|
||||||
|
if thruster.affectVectors.angular.roll == "port" then
|
||||||
|
desiredThrust = desiredThrust + rollRateOutput
|
||||||
|
else
|
||||||
|
desiredThrust = desiredThrust - rollRateOutput
|
||||||
|
end
|
||||||
|
|
||||||
if thruster.affectVectors.angular.yaw ~= nil and thruster.primary_yaw_thruster then
|
end
|
||||||
if thruster.affectVectors.angular.yaw == "port" then
|
|
||||||
desiredThrust = desiredThrust + yawRateOutput
|
if thruster.affectVectors.angular.yaw ~= nil and thruster.primary_yaw_thruster then
|
||||||
else
|
if thruster.affectVectors.angular.yaw == "port" then
|
||||||
desiredThrust = desiredThrust - yawRateOutput
|
desiredThrust = desiredThrust + yawRateOutput
|
||||||
|
else
|
||||||
|
desiredThrust = desiredThrust - yawRateOutput
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if thruster.affectVectors.lateral.y == "up" then
|
||||||
|
desiredThrust = desiredThrust + throttleOutput
|
||||||
|
end
|
||||||
|
|
||||||
|
--if Config.Debug then print("DEBUG: "..thruster.name..": desiredThrust "..desiredThrust.." (from UpdateGlobalThrust)") end
|
||||||
|
|
||||||
|
SetThrusterPower(thruster, desiredThrust)
|
||||||
|
else
|
||||||
|
local prop1 = throttleOutput + pitchRateOutput + rollRateOutput -- front-left
|
||||||
|
local prop2 = throttleOutput + pitchRateOutput - rollRateOutput -- front-right
|
||||||
|
local prop3 = throttleOutput - pitchRateOutput - rollRateOutput -- back-right
|
||||||
|
local prop4 = throttleOutput - pitchRateOutput + rollRateOutput -- back-left
|
||||||
|
|
||||||
|
if thruster.x_config_equivalent == "1" then SetThrusterPower(thruster, prop1)
|
||||||
|
elseif thruster.x_config_equivalent == "2" then SetThrusterPower(thruster, prop2)
|
||||||
|
elseif thruster.x_config_equivalent == "3" then SetThrusterPower(thruster, prop3)
|
||||||
|
elseif thruster.x_config_equivalent == "4" then SetThrusterPower(thruster, prop4)
|
||||||
|
else print("ERROR: Thruster "..thruster.name.." has invalid x_config_equivalent value")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if thruster.affectVectors.lateral.y == "up" then
|
|
||||||
desiredThrust = desiredThrust + throttleOutput
|
|
||||||
end
|
|
||||||
|
|
||||||
--if Config.Debug then print("DEBUG: "..thruster.name..": desiredThrust "..desiredThrust.." (from UpdateGlobalThrust)") end
|
|
||||||
|
|
||||||
SetThrusterPower(thruster, desiredThrust)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user