diff --git a/y2018_bot3/control_loops/BUILD b/y2018_bot3/control_loops/BUILD
new file mode 100644
index 0000000..da1a4aa
--- /dev/null
+++ b/y2018_bot3/control_loops/BUILD
@@ -0,0 +1,6 @@
+py_library(
+    name = "python_init",
+    srcs = ["__init__.py"],
+    visibility = ["//visibility:public"],
+    deps = ["//y2018_bot3:python_init"],
+)
diff --git a/y2018_bot3/control_loops/__init__.py b/y2018_bot3/control_loops/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/y2018_bot3/control_loops/__init__.py
diff --git a/y2018_bot3/control_loops/drivetrain/BUILD b/y2018_bot3/control_loops/drivetrain/BUILD
new file mode 100644
index 0000000..19edec6
--- /dev/null
+++ b/y2018_bot3/control_loops/drivetrain/BUILD
@@ -0,0 +1,73 @@
+load('//aos/build:queues.bzl', 'queue_library')
+
+genrule(
+  name = 'genrule_drivetrain',
+  cmd = '$(location //y2018_bot3/control_loops/python:drivetrain) $(OUTS)',
+  tools = [
+    '//y2018_bot3/control_loops/python:drivetrain',
+  ],
+  outs = [
+    'drivetrain_dog_motor_plant.h',
+    'drivetrain_dog_motor_plant.cc',
+    'kalman_drivetrain_motor_plant.h',
+    'kalman_drivetrain_motor_plant.cc',
+  ],
+)
+
+genrule(
+  name = 'genrule_polydrivetrain',
+  cmd = '$(location //y2018_bot3/control_loops/python:polydrivetrain) $(OUTS)',
+  tools = [
+    '//y2018_bot3/control_loops/python:polydrivetrain',
+  ],
+  outs = [
+    'polydrivetrain_dog_motor_plant.h',
+    'polydrivetrain_dog_motor_plant.cc',
+    'polydrivetrain_cim_plant.h',
+    'polydrivetrain_cim_plant.cc',
+  ],
+)
+
+cc_library(
+  name = 'polydrivetrain_plants',
+  srcs = [
+    'polydrivetrain_dog_motor_plant.cc',
+    'drivetrain_dog_motor_plant.cc',
+    'kalman_drivetrain_motor_plant.cc',
+  ],
+  hdrs = [
+    'polydrivetrain_dog_motor_plant.h',
+    'drivetrain_dog_motor_plant.h',
+    'kalman_drivetrain_motor_plant.h',
+  ],
+  deps = [
+    '//frc971/control_loops:state_feedback_loop',
+  ],
+)
+
+cc_library(
+  name = 'drivetrain_base',
+  srcs = [
+    'drivetrain_base.cc',
+  ],
+  hdrs = [
+    'drivetrain_base.h',
+  ],
+  deps = [
+    ':polydrivetrain_plants',
+    '//frc971/control_loops/drivetrain:drivetrain_config',
+    '//frc971:shifter_hall_effect',
+  ],
+)
+
+cc_binary(
+  name = 'drivetrain',
+  srcs = [
+    'drivetrain_main.cc',
+  ],
+  deps = [
+    ':drivetrain_base',
+    '//aos/linux_code:init',
+    '//frc971/control_loops/drivetrain:drivetrain_lib',
+  ],
+)
diff --git a/y2018_bot3/control_loops/drivetrain/drivetrain_base.cc b/y2018_bot3/control_loops/drivetrain/drivetrain_base.cc
new file mode 100644
index 0000000..305b7c2
--- /dev/null
+++ b/y2018_bot3/control_loops/drivetrain/drivetrain_base.cc
@@ -0,0 +1,47 @@
+#include "y2018_bot3/control_loops/drivetrain/drivetrain_base.h"
+
+#include "frc971/control_loops/drivetrain/drivetrain_config.h"
+#include "frc971/control_loops/state_feedback_loop.h"
+#include "y2018_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2018_bot3/control_loops/drivetrain/kalman_drivetrain_motor_plant.h"
+#include "y2018_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
+
+using ::frc971::control_loops::drivetrain::DrivetrainConfig;
+
+namespace y2018_bot3 {
+namespace control_loops {
+namespace drivetrain {
+
+namespace {
+const ::frc971::constants::ShifterHallEffect kThreeStateDriveShifter{
+    0.0, 0.0, 0.25, 0.75};
+}  // namespace
+
+const DrivetrainConfig<double> &GetDrivetrainConfig() {
+  static DrivetrainConfig<double> kDrivetrainConfig{
+      ::frc971::control_loops::drivetrain::ShifterType::SIMPLE_SHIFTER,
+      ::frc971::control_loops::drivetrain::LoopType::CLOSED_LOOP,
+      ::frc971::control_loops::drivetrain::GyroType::SPARTAN_GYRO,
+      ::frc971::control_loops::drivetrain::IMUType::IMU_X,
+
+      ::y2018_bot3::control_loops::drivetrain::MakeDrivetrainLoop,
+      ::y2018_bot3::control_loops::drivetrain::MakeVelocityDrivetrainLoop,
+      ::y2018_bot3::control_loops::drivetrain::MakeKFDrivetrainLoop,
+
+      drivetrain::kDt, drivetrain::kRobotRadius, drivetrain::kWheelRadius,
+      drivetrain::kV,
+
+      drivetrain::kHighGearRatio, drivetrain::kHighGearRatio,
+      kThreeStateDriveShifter, kThreeStateDriveShifter,
+      // TODO(sabina): confirm once robot is built
+      true /* default_high_gear */, 0 /* down_offset */,
+      0.4 /* wheel_non_linearity */, 1.0 /* quickturn_wheel_multiplier */,
+      1.0 /* wheel_multiplier */,
+  };
+
+  return kDrivetrainConfig;
+};
+
+}  // namespace drivetrain
+}  // namespace control_loops
+}  // namespace y2018_bot3
diff --git a/y2018_bot3/control_loops/drivetrain/drivetrain_base.h b/y2018_bot3/control_loops/drivetrain/drivetrain_base.h
new file mode 100644
index 0000000..2368c96
--- /dev/null
+++ b/y2018_bot3/control_loops/drivetrain/drivetrain_base.h
@@ -0,0 +1,17 @@
+#ifndef Y2018_BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_BASE_H_
+#define Y2018_BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_BASE_H_
+
+#include "frc971/control_loops/drivetrain/drivetrain_config.h"
+
+namespace y2018_bot3 {
+namespace control_loops {
+namespace drivetrain {
+
+const ::frc971::control_loops::drivetrain::DrivetrainConfig<double>
+    &GetDrivetrainConfig();
+
+}  // namespace drivetrain
+}  // namespace control_loops
+}  // namespace y2018_bot3
+
+#endif  // Y2018_BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_BASE_H_
diff --git a/y2018_bot3/control_loops/drivetrain/drivetrain_main.cc b/y2018_bot3/control_loops/drivetrain/drivetrain_main.cc
new file mode 100644
index 0000000..e1a859d
--- /dev/null
+++ b/y2018_bot3/control_loops/drivetrain/drivetrain_main.cc
@@ -0,0 +1,15 @@
+#include "aos/linux_code/init.h"
+
+#include "frc971/control_loops/drivetrain/drivetrain.h"
+#include "y2018_bot3/control_loops/drivetrain/drivetrain_base.h"
+
+using ::frc971::control_loops::drivetrain::DrivetrainLoop;
+
+int main() {
+  ::aos::Init();
+  DrivetrainLoop drivetrain(
+      ::y2018_bot3::control_loops::drivetrain::GetDrivetrainConfig());
+  drivetrain.Run();
+  ::aos::Cleanup();
+  return 0;
+}
diff --git a/y2018_bot3/control_loops/python/BUILD b/y2018_bot3/control_loops/python/BUILD
new file mode 100644
index 0000000..5b6f0a2
--- /dev/null
+++ b/y2018_bot3/control_loops/python/BUILD
@@ -0,0 +1,54 @@
+package(default_visibility = ["//y2018_bot3:__subpackages__"])
+
+py_binary(
+    name = "drivetrain",
+    srcs = [
+        "drivetrain.py",
+    ],
+    legacy_create_init = False,
+    restricted_to = ["//tools:k8"],
+    deps = [
+        ":python_init",
+        "//external:python-gflags",
+        "//external:python-glog",
+        "//frc971/control_loops/python:drivetrain",
+    ],
+)
+
+py_binary(
+    name = "polydrivetrain",
+    srcs = [
+        "drivetrain.py",
+        "polydrivetrain.py",
+    ],
+    legacy_create_init = False,
+    restricted_to = ["//tools:k8"],
+    deps = [
+        ":python_init",
+        "//external:python-gflags",
+        "//external:python-glog",
+        "//frc971/control_loops/python:polydrivetrain",
+    ],
+)
+
+py_library(
+    name = "polydrivetrain_lib",
+    srcs = [
+        "drivetrain.py",
+        "polydrivetrain.py",
+    ],
+    restricted_to = ["//tools:k8"],
+    deps = [
+        "//external:python-gflags",
+        "//external:python-glog",
+        "//frc971/control_loops/python:controls",
+        "//frc971/control_loops/python:drivetrain",
+    ],
+)
+
+py_library(
+    name = "python_init",
+    srcs = ["__init__.py"],
+    visibility = ["//visibility:public"],
+    deps = ["//y2018_bot3/control_loops:python_init"],
+)
diff --git a/y2018_bot3/control_loops/python/__init__.py b/y2018_bot3/control_loops/python/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/y2018_bot3/control_loops/python/__init__.py
diff --git a/y2018_bot3/control_loops/python/drivetrain.py b/y2018_bot3/control_loops/python/drivetrain.py
new file mode 100644
index 0000000..1d3ad4b
--- /dev/null
+++ b/y2018_bot3/control_loops/python/drivetrain.py
@@ -0,0 +1,40 @@
+#!/usr/bin/python
+
+from frc971.control_loops.python import drivetrain
+import sys
+
+import gflags
+import glog
+
+FLAGS = gflags.FLAGS
+
+gflags.DEFINE_bool('plot', False, 'If true, plot the loop response.')
+
+#TODO(sabina): update values
+kDrivetrain = drivetrain.DrivetrainParams(
+    J=1.0,
+    mass=1.0,
+    robot_radius=0.6 / 2.0,
+    wheel_radius=4.0 / 2.0,
+    G_high=1.0,
+    G_low=1.0,
+    q_pos_low=0.12,
+    q_pos_high=0.14,
+    q_vel_low=1.0,
+    q_vel_high=0.95,
+    has_imu=False)
+
+def main(argv):
+    argv = FLAGS(argv)
+    glog.init()
+
+    if FLAGS.plot:
+        drivetrain.PlotDrivetrainMotions(kDrivetrain)
+    elif len(argv) != 5:
+        print "Expected .h file name and .cc file name"
+    else:
+        # Write the generated constants out to a file.
+        drivetrain.WriteDrivetrain(argv[1:3], argv[3:5], 'y2018_bot3', kDrivetrain)
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv))
diff --git a/y2018_bot3/control_loops/python/polydrivetrain.py b/y2018_bot3/control_loops/python/polydrivetrain.py
new file mode 100644
index 0000000..d7799ae
--- /dev/null
+++ b/y2018_bot3/control_loops/python/polydrivetrain.py
@@ -0,0 +1,29 @@
+#!/usr/bin/python
+
+import sys
+from y2018_bot3.control_loops.python import drivetrain
+from frc971.control_loops.python import polydrivetrain
+
+import gflags
+import glog
+
+FLAGS = gflags.FLAGS
+
+try:
+  gflags.DEFINE_bool('plot', False, 'If true, plot the loop response.')
+except gflags.DuplicateFlagError:
+  pass
+
+def main(argv):
+  if FLAGS.plot:
+    polydrivetrain.PlotPolyDrivetrainMotions(drivetrain.kDrivetrain)
+  elif len(argv) != 5:
+    glog.fatal('Expected .h file name and .cc file name')
+  else:
+    polydrivetrain.WritePolyDrivetrain(argv[1:3], argv[3:5], 'y2018_bot3',
+                                       drivetrain.kDrivetrain)
+
+if __name__ == '__main__':
+  argv = FLAGS(sys.argv)
+  glog.init()
+  sys.exit(main(argv))
