Refactor linear_system out of 2017 intake
So we can reuse it!
Change-Id: I0583dbd1fd1a8765468f861a9acba0194aaa8ef6
diff --git a/frc971/control_loops/python/control_loop.py b/frc971/control_loops/python/control_loop.py
index 2ef2ece..74cd389 100644
--- a/frc971/control_loops/python/control_loop.py
+++ b/frc971/control_loops/python/control_loop.py
@@ -246,6 +246,11 @@
"""
self._name = name
+ @property
+ def name(self):
+ """Returns the name"""
+ return self._name
+
def ContinuousToDiscrete(self, A_continuous, B_continuous, dt):
"""Calculates the discrete time values for A and B.
@@ -531,6 +536,40 @@
self.Kt = self.stall_torque / self.stall_current
+class NMotor(object):
+ def __init__(self, motor, n):
+ """Gangs together n motors."""
+ self.motor = motor
+ self.stall_torque = motor.stall_torque * n
+ self.stall_current = motor.stall_current * n
+ self.free_speed = motor.free_speed
+
+ self.free_current = motor.free_current * n
+ self.resistance = motor.resistance / n
+ self.Kv = motor.Kv
+ self.Kt = motor.Kt
+
+
+class Vex775Pro(object):
+ def __init__(self):
+ # Stall Torque in N m
+ self.stall_torque = 0.71
+ # Stall Current in Amps
+ self.stall_current = 134.0
+ # Free Speed in rad/s
+ self.free_speed = 18730.0 / 60.0 * 2.0 * numpy.pi
+ # Free Current in Amps
+ self.free_current = 0.7
+ # Resistance of the motor
+ self.resistance = 12.0 / self.stall_current
+ # Motor velocity constant
+ self.Kv = (self.free_speed / (12.0 - self.resistance * self.free_current))
+ # Torque constant
+ self.Kt = self.stall_torque / self.stall_current
+ # Motor inertia in kg m^2
+ self.motor_inertia = 0.00001187
+
+
class BAG(object):
# BAG motor specs available at http://motors.vex.com/vexpro-motors/bag-motor
def __init__(self):