Compare commits
6 Commits
fa96b2f59f
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| eb8faa9c10 | |||
| 165c0cefa9 | |||
| 131bbd9f0a | |||
| dd70e5ddb2 | |||
| a65299be26 | |||
| 7174c16628 |
32
main.lua
32
main.lua
@@ -410,11 +410,11 @@ local function populateThrusterValues()
|
||||
thruster.power = thruster.thruster.getPower()
|
||||
elseif thruster.type == "rotator" then
|
||||
if thruster.transmission ~= nil then
|
||||
local transmissionType = peripheral.getType(thruster.transmission)
|
||||
local transmissionType = peripheral.getType(peripheral.wrap(thruster.transmission))
|
||||
if transmissionType == "analog_transmission" then
|
||||
thruster.power = (thruster.transmission.getSignal())/15
|
||||
thruster.power = (peripheral.wrap(thruster.transmission).getSignal())/15
|
||||
elseif transmissionType == "Create_RotationSpeedController" then
|
||||
thruster.power = (thruster.transmission.getTargetSpeed())/256
|
||||
thruster.power = (peripheral.wrap(thruster.transmission).getTargetSpeed())/256
|
||||
end
|
||||
else
|
||||
print("ERROR: Thruster "..peripheral.getName(thruster.thruster).." has no transmission.")
|
||||
@@ -789,7 +789,7 @@ function SetThrusterPower(thruster, power)
|
||||
|
||||
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 Config.Debug then print("DEBUG: thruster "..thruster.name..": power "..power) end
|
||||
|
||||
if thruster.type == "rotator" then
|
||||
thruster.power = power
|
||||
@@ -862,15 +862,15 @@ function CreatePID(kp, ki, kd)
|
||||
integral = 0, lastError = 0,
|
||||
|
||||
minOutput = 0.0,
|
||||
maxOutput = 64.0,
|
||||
maxOutput = 32.0,
|
||||
update = function(self, setpoint, pv, dt)
|
||||
if dt <= 0 then return 0.0 end
|
||||
|
||||
local error = setpoint - pv
|
||||
|
||||
local P = self.kp * error
|
||||
|
||||
local D = 0
|
||||
if dt > 0 then D = self.kd * ((error - self.lastError) / dt) else D = 0 end
|
||||
local D = self.kd * ((error - self.lastError) / dt)
|
||||
|
||||
local potential_i = self.integral + (self.ki * error * dt)
|
||||
|
||||
@@ -880,7 +880,7 @@ function CreatePID(kp, ki, kd)
|
||||
|
||||
local clampedOutput = 0
|
||||
|
||||
if self.minOutput <= potential_i and potential_i <= self.maxOutput then
|
||||
if raw_output >= self.minOutput and raw_output <= self.maxOutput then
|
||||
self.integral = potential_i
|
||||
clampedOutput = raw_output
|
||||
else
|
||||
@@ -889,9 +889,7 @@ function CreatePID(kp, ki, kd)
|
||||
|
||||
self.lastError = error
|
||||
|
||||
local normalizedOutput = (clampedOutput - self.minOutput) / (self.maxOutput - self.minOutput)
|
||||
|
||||
return normalizedOutput
|
||||
return clampedOutput
|
||||
end
|
||||
}
|
||||
end
|
||||
@@ -900,13 +898,13 @@ end
|
||||
PIDs = {
|
||||
-- angular
|
||||
-- attitude PIDs
|
||||
RollAttitudePID = CreatePID(4.5, 0.01, 0.05),
|
||||
PitchAttitudePID = CreatePID(4.5, 0.01, 0.05),
|
||||
RollAttitudePID = CreatePID(3.0, 0.01, 0.05),
|
||||
PitchAttitudePID = CreatePID(3.0, 0.01, 0.05),
|
||||
YawAttitudePID = CreatePID(0.1, 0.01, 0.05),
|
||||
|
||||
-- rate PIDs
|
||||
RollRatePID = CreatePID(1.2, 0.01, 0.05),
|
||||
PitchRatePID = CreatePID(1.2, 0.01, 0.05),
|
||||
RollRatePID = CreatePID(0.8, 0.01, 0.05),
|
||||
PitchRatePID = CreatePID(0.8, 0.01, 0.05),
|
||||
YawRatePID = CreatePID(0.5, 0.01, 0.05),
|
||||
|
||||
-- lateral
|
||||
@@ -916,7 +914,7 @@ PIDs = {
|
||||
ForeAftPID = CreatePID(0.1, 0.01, 0.05),
|
||||
|
||||
-- rate PIDs
|
||||
VerticalRatePID = CreatePID(1.2, 0.01, 0.05),
|
||||
VerticalRatePID = CreatePID(0.8, 0.01, 0.05),
|
||||
PortStarRatePID = CreatePID(0.1, 0.01, 0.05),
|
||||
ForeAftRatePID = CreatePID(0.1, 0.01, 0.05)
|
||||
}
|
||||
@@ -997,6 +995,8 @@ function UpdateGlobalThrust()
|
||||
|
||||
SetThrusterPower(thruster, desiredThrust)
|
||||
else
|
||||
if Config.Debug then print("DEBUG: Thruster has x_config_equivalent set") end
|
||||
|
||||
local prop1 = throttleOutput + pitchRateOutput + rollRateOutput -- front-left
|
||||
local prop2 = throttleOutput + pitchRateOutput - rollRateOutput -- front-right
|
||||
local prop3 = throttleOutput - pitchRateOutput - rollRateOutput -- back-right
|
||||
|
||||
Reference in New Issue
Block a user