cascade.py 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. from core.utils import *
  2. from pid.pid_base import BasePID
  3. '''
  4. reward primary PID controller.
  5. '''
  6. class RPID(BasePID):
  7. def __init__(self, controller_type, kp=0, ki=0, kd=0, dt=1, Kc=0, Ti=0, Td=0, Ts=0, debug=False):
  8. BasePID.__init__(self, REWARD_MIN, REWARD_MAX, PRIMARY_REWARD_TARGET, controller_type, kp=kp, ki=ki, kd=kd, dt=dt, Kc=Kc, Ti=Ti, Td=Td, Ts=Ts, debug=debug, type='reward', swap_error_fn=True)
  9. class PrimaryDiscretePID(RPID):
  10. def __init__(self, kp, ki, kd):
  11. RPID.__init__(self, CONTROLLER_TYPE_DISCRETE, kp=kp, ki=ki, kd=kd)
  12. class PrimaryTakahashiPID(RPID):
  13. def __init__(self, kc, ti, td, ts):
  14. RPID.__init__(self, CONTROLLER_TYPE_TAKAHASHI, Kc=kc, Ti=ti, Td=td, Ts=ts)
  15. '''
  16. lead secondary PID controller
  17. '''
  18. class LeadPID(BasePID):
  19. def __init__(self, controller_type, kp=0, ki=0, kd=0, dt=1, Kc=0, Ti=0, Td=0, Ts=0, debug=False):
  20. BasePID.__init__(self, F_MIN, F_MAX, SECONDARY_LEAD_TARGET, controller_type, kp=kp, ki=ki, kd=kd, dt=dt, Kc=Kc, Ti=Ti, Td=Td, Ts=Ts, debug=debug, type='f')
  21. class SecondaryDiscretePID(LeadPID):
  22. def __init__(self, kp, ki, kd):
  23. LeadPID.__init__(self, CONTROLLER_TYPE_DISCRETE, kp=kp, ki=ki, kd=kd)
  24. class SecondaryTakahashiPID(LeadPID):
  25. def __init__(self, kc, ti, td, ts):
  26. LeadPID.__init__(self, CONTROLLER_TYPE_TAKAHASHI, Kc=kc, Ti=ti, Td=td, Ts=ts)