VE Lua Documentation

Press F to search!

newPIDParallel

Definition


-- @/lua/common/controlSystems.lua:18

--Usage:
--local myPID = newPIDParallel(1, 0.5, 0.1, 0, 1)
--local control = myPID:get(processVariable, setPoint, dt)
--This PID uses derivative calculation based on the process variable rather than the error to avoid spikes when changing the setpoint
function newPIDParallel(kP, kI, kD, minOutput, maxOutput, integralInCoef, integralOutCoef, minIntegral, maxIntegral, errorDeadzone)
  local data = {
    kP = kP,
    kI = kI,
    kD = kD,
    error = 0,
    integral = 0,
    output = 0,
    integralInCoef = integralInCoef or 1,
    integralOutCoef = integralOutCoef or 1,
    lastProcessVariable = 0,
    minOutput = minOutput or -math.huge,
    maxOutput = maxOutput or math.huge,
    errorDeadzone = errorDeadzone or 0.0,
    get = PIDParallel.getMethod
  }
  data.maxIntegral = maxIntegral or data.maxOutput / kI
  data.minIntegral = minIntegral or -data.maxIntegral
  setmetatable(data, PIDParallel)
  return data
end

Callers

@/lua/vehicle/controller/powertrainControl/combustionEngineGovenor.lua

  engineRPMPID = newPIDParallel(jbeamData.rpmPIDp or 0.5, jbeamData.rpmPIDi or 0.1, jbeamData.rpmPIDd or 0.05, -1, 1, 1, 1, -10, 10)
@/lua/vehicle/controller/hydraulics/orbitrolSteering.lua
local function init(jbeamData)
  steeringPID = newPIDParallel(jbeamData.steeringPIDKp or 0.5, jbeamData.steeringPIDKi or 0.3, jbeamData.steeringPIDKd or 0.01, -1, 1, 1000, 1000, -1, 1, 0.002)
  --steeringPID:setDebug(true)
@/lua/vehicle/controller/drivingDynamics/supervisors/components/brakeControl.lua
        end
        wheelControlData[wheelData.wheel.name].tractionControlBrakingPID = newPIDParallel(kP, kI, kD, 0, 1, integralInCoef, integralOutCoef, 0)
        wheelControlData[wheelData.wheel.name].brakeFactorTractionControl = 0

    yawControlAVBrakingPID = newPIDParallel(avSettings.kP, avSettings.kI, avSettings.kD, 0, 1, avSettings.integralInCoef, avSettings.integralOutCoef, 0)
    yawControlSlipAngleBrakingPID = newPIDParallel(slipAngleSettings.kP, slipAngleSettings.kI, slipAngleSettings.kD, 0, 1, slipAngleSettings.integralInCoef, slipAngleSettings.integralOutCoef, 0)
    yawControlAVBrakingPID = newPIDParallel(avSettings.kP, avSettings.kI, avSettings.kD, 0, 1, avSettings.integralInCoef, avSettings.integralOutCoef, 0)
    yawControlSlipAngleBrakingPID = newPIDParallel(slipAngleSettings.kP, slipAngleSettings.kI, slipAngleSettings.kD, 0, 1, slipAngleSettings.integralInCoef, slipAngleSettings.integralOutCoef, 0)
          slipThreshold = slipThreshold,
          absBrakingPID = newPIDParallel(kP, kI, kD, 0, 1, integralInCoef, integralOutCoef, 0),
          absCoef = 1,
@/lua/vehicle/controller/drivingDynamics/actuators/activeDiffLock.lua

  lockingPID = newPIDParallel(controlParameters.lockingPIDkP, controlParameters.lockingPIDkI, controlParameters.lockingPIDkD, 0, 1)
@/lua/vehicle/controller/playerController.lua
local stabilizationPIDs = {
  frontRear = newPIDParallel(2, 0.1, 0.3, -1, 1, 100, 50, -1, 1),
  leftRight = newPIDParallel(2, 0.1, 0.3, -1, 1, 100, 50, -1, 1),
  frontRear = newPIDParallel(2, 0.1, 0.3, -1, 1, 100, 50, -1, 1),
  leftRight = newPIDParallel(2, 0.1, 0.3, -1, 1, 100, 50, -1, 1),
  yawPosition = newPIDParallel(2, 0.0, 0.5, -1, 1)
  leftRight = newPIDParallel(2, 0.1, 0.3, -1, 1, 100, 50, -1, 1),
  yawPosition = newPIDParallel(2, 0.0, 0.5, -1, 1)
}
@/lua/vehicle/controller/drivingDynamics/actuators/electronicSplitShaftLock.lua

  clutchRatioPID = newPIDParallel(controlParameters.clutchPIDkP, controlParameters.clutchPIDkI, controlParameters.clutchPIDkD, 0, 1, nil, nil, 0)
@/lua/vehicle/controller/hydraulics/closedLoopLinearControl.lua
local function init(jbeamData)
  cylinderPID = newPIDParallel(jbeamData.cylinderPIDKp or 0.5, jbeamData.cylinderPIDKi or 0.3, jbeamData.cylinderPIDKd or 0.01, -1, 1, 1000, 10, nil, nil, 0.01)
  cylinderPID:setDebug(true)
@/lua/vehicle/controller/vehicleController/vehicleController.lua
  topSpeedLimitReverse = jbeamData.topSpeedLimitReverse or -1
  topSpeedLimitPID = newPIDParallel(0.2, 1, 0, 0, 1, 50, 20, 0, 1)
  --topSpeedLimitPID:setDebug(true)
@/lua/vehicle/controller/drivingDynamics/supervisors/components/motorTorqueControl.lua
        wheelGroupControlData[groupSetting.motorName] = {
          tractionControlPID = newPIDParallel(kP, kI, kD, 0, 1, integralInCoef, integralOutCoef, 0),
          slipThreshold = slipThreshold,

    yawControlAVPID = newPIDParallel(avSettings.kP, avSettings.kI, avSettings.kD, 0, 1, avSettings.integralInCoef, avSettings.integralOutCoef, 0)
    yawControlSlipAnglePID = newPIDParallel(slipAngleSettings.kP, slipAngleSettings.kI, slipAngleSettings.kD, 0, 1, slipAngleSettings.integralInCoef, slipAngleSettings.integralOutCoef, 0)
    yawControlAVPID = newPIDParallel(avSettings.kP, avSettings.kI, avSettings.kD, 0, 1, avSettings.integralInCoef, avSettings.integralOutCoef, 0)
    yawControlSlipAnglePID = newPIDParallel(slipAngleSettings.kP, slipAngleSettings.kI, slipAngleSettings.kD, 0, 1, slipAngleSettings.integralInCoef, slipAngleSettings.integralOutCoef, 0)
@/lua/vehicle/controller/drivingDynamics/actuators/activeCenterDiffLock.lua

  lockCoefPID = newPIDParallel(controlParameters.clutchPIDkP, controlParameters.clutchPIDkI, controlParameters.clutchPIDkD, 0, 1, nil, nil, 0)
@/lua/vehicle/controller/drivingDynamics/actuators/electronicDiffLock.lua

  brakingPID = newPIDParallel(controlParameters.brakingPIDkP, controlParameters.brakingPIDkI, controlParameters.brakingPIDkD, -1, 1)
@/lua/vehicle/controller/powertrainControl/antiLag.lua

  turboAVPIDController = newPIDParallel(0.01, 0, 0, 0, 1, -10, 10)
@/lua/common/controlSystems.lua
--Usage:
--local myPID = newPIDParallel(1, 0.5, 0.1, 0, 1)
--local control = myPID:get(processVariable, setPoint, dt)
@/lua/vehicle/controller/drivingDynamics/actuators/activeDiffBias.lua

  biasPID = newPIDParallel(controlParameters.brakingPIDkP, controlParameters.brakingPIDkI, controlParameters.brakingPIDkD, -1, 1, 1000, 100)