Skip to content

Commit

Permalink
[simpleflihtapi] add gain types to types.py
Browse files Browse the repository at this point in the history
  • Loading branch information
madratman committed Mar 25, 2020
1 parent 402e105 commit 89fadac
Showing 1 changed file with 95 additions and 1 deletion.
96 changes: 95 additions & 1 deletion PythonClient/airsim/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -403,4 +403,98 @@ class DistanceSensorData(MsgpackMixin):
distance = Quaternionr()
min_distance = Quaternionr()
max_distance = Quaternionr()
relative_pose = Pose()
relative_pose = Pose()

class PIDGains():
"""
Struct to store values of PID gains. Used to transmit controller gain values while instantiating
AngleLevel/AngleRate/Velocity/PositionControllerGains objects.
Attributes:
kP (float): Proportional gain
kI (float): Integrator gain
kD (float): Derivative gain
"""
def __init__(self, kp, ki, kd):
self.kp = kp
self.ki = ki
self.kd = kd

def to_list(self):
return [self.kp, self.ki, self.kd]

class AngleRateControllerGains():
"""
Struct to contain controller gains used by angle level PID controller
Attributes:
rollGains (PIDGains): kP, kI, kD for roll axis
pitchGains (PIDGains): kP, kI, kD for pitch axis
yawGains (PIDGains): kP, kI, kD for yaw axis
"""
def __init__(self, rollGains = PIDGains(0.25, 0, 0),
pitchGains = PIDGains(0.25, 0, 0),
yawGains = PIDGains(0.25, 0, 0)):
self.rollGains = rollGains
self.pitchGains = pitchGains
self.yawGains = yawGains

def to_lists(self):
return [self.rollGains.kp, self.pitchGains.kp, self.yawGains.kp], [self.rollGains.ki, self.pitchGains.ki, self.yawGains.ki], [self.rollGains.kd, self.pitchGains.kd, self.yawGains.kd]

class AngleLevelControllerGains():
"""
Struct to contain controller gains used by angle rate PID controller
Attributes:
rollGains (PIDGains): kP, kI, kD for roll axis
pitchGains (PIDGains): kP, kI, kD for pitch axis
yawGains (PIDGains): kP, kI, kD for yaw axis
"""
def __init__(self, rollGains = PIDGains(2.5, 0, 0),
pitchGains = PIDGains(2.5, 0, 0),
yawGains = PIDGains(2.5, 0, 0)):
self.rollGains = rollGains
self.pitchGains = pitchGains
self.yawGains = yawGains

def to_lists(self):
return [self.rollGains.kp, self.pitchGains.kp, self.yawGains.kp], [self.rollGains.ki, self.pitchGains.ki, self.yawGains.ki], [self.rollGains.kd, self.pitchGains.kd, self.yawGains.kd]

class VelocityControllerGains():
"""
Struct to contain controller gains used by velocity PID controller
Attributes:
xGains (PIDGains): kP, kI, kD for X axis
yGains (PIDGains): kP, kI, kD for Y axis
zGains (PIDGains): kP, kI, kD for Z axis
"""
def __init__(self, xGains = PIDGains(0.2, 0, 0),
yGains = PIDGains(0.2, 0, 0),
zGains = PIDGains(2.0, 2.0, 0)):
self.xGains = xGains
self.yGains = yGains
self.zGains = zGains

def to_lists(self):
return [self.xGains.kp, self.yGains.kp, self.zGains.kp], [self.xGains.ki, self.yGains.ki, self.zGains.ki], [self.xGains.kd, self.yGains.kd, self.zGains.kd]

class PositionControllerGains():
"""
Struct to contain controller gains used by position PID controller
Attributes:
xGains (PIDGains): kP, kI, kD for X axis
yGains (PIDGains): kP, kI, kD for Y axis
zGains (PIDGains): kP, kI, kD for Z axis
"""
def __init__(self, xGains = PIDGains(0.25, 0, 0),
yGains = PIDGains(0.25, 0, 0),
zGains = PIDGains(0.25, 0, 0)):
self.xGains = xGains
self.yGains = yGains
self.zGains = zGains

def to_lists(self):
return [self.xGains.kp, self.yGains.kp, self.zGains.kp], [self.xGains.ki, self.yGains.ki, self.zGains.ki], [self.xGains.kd, self.yGains.kd, self.zGains.kd]

0 comments on commit 89fadac

Please sign in to comment.