Build hybrid velocity loop for each drivetrain
This provides a way to get to the continuous time drivetrain model from
C++ without doing crazy codegen for all gears.
Change-Id: Iadd7388b74628a94a74ec19efb972fa01efe70c9
diff --git a/y2018_bot3/control_loops/drivetrain/BUILD b/y2018_bot3/control_loops/drivetrain/BUILD
index a0d5683..d3fabe1 100644
--- a/y2018_bot3/control_loops/drivetrain/BUILD
+++ b/y2018_bot3/control_loops/drivetrain/BUILD
@@ -21,6 +21,8 @@
"polydrivetrain_dog_motor_plant.cc",
"polydrivetrain_cim_plant.h",
"polydrivetrain_cim_plant.cc",
+ "hybrid_velocity_drivetrain.h",
+ "hybrid_velocity_drivetrain.cc",
],
cmd = "$(location //y2018_bot3/control_loops/python:polydrivetrain) $(OUTS)",
tools = [
@@ -32,15 +34,18 @@
name = "polydrivetrain_plants",
srcs = [
"drivetrain_dog_motor_plant.cc",
+ "hybrid_velocity_drivetrain.cc",
"kalman_drivetrain_motor_plant.cc",
"polydrivetrain_dog_motor_plant.cc",
],
hdrs = [
"drivetrain_dog_motor_plant.h",
+ "hybrid_velocity_drivetrain.h",
"kalman_drivetrain_motor_plant.h",
"polydrivetrain_dog_motor_plant.h",
],
deps = [
+ "//frc971/control_loops:hybrid_state_feedback_loop",
"//frc971/control_loops:state_feedback_loop",
],
)
@@ -65,6 +70,7 @@
srcs = [
"drivetrain_main.cc",
],
+ visibility = ["//visibility:public"],
deps = [
":drivetrain_base",
"//aos:init",
diff --git a/y2018_bot3/control_loops/python/polydrivetrain.py b/y2018_bot3/control_loops/python/polydrivetrain.py
index d7799ae..6037138 100644
--- a/y2018_bot3/control_loops/python/polydrivetrain.py
+++ b/y2018_bot3/control_loops/python/polydrivetrain.py
@@ -7,6 +7,8 @@
import gflags
import glog
+__author__ = 'Austin Schuh (austin.linux@gmail.com)'
+
FLAGS = gflags.FLAGS
try:
@@ -17,11 +19,11 @@
def main(argv):
if FLAGS.plot:
polydrivetrain.PlotPolyDrivetrainMotions(drivetrain.kDrivetrain)
- elif len(argv) != 5:
+ elif len(argv) != 7:
glog.fatal('Expected .h file name and .cc file name')
else:
- polydrivetrain.WritePolyDrivetrain(argv[1:3], argv[3:5], 'y2018_bot3',
- drivetrain.kDrivetrain)
+ polydrivetrain.WritePolyDrivetrain(argv[1:3], argv[3:5], argv[5:7],
+ 'y2018_bot3', drivetrain.kDrivetrain)
if __name__ == '__main__':
argv = FLAGS(sys.argv)