Added //external:python-gflags and //external:python-glog
Change-Id: Iebaf8f4fa8574eba0636cf4a2804afbf979a197c
diff --git a/WORKSPACE b/WORKSPACE
index 999c66a..43ee6e5 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -44,3 +44,28 @@
sha256 = '9d92b513b627c4aaa93d4d8049b4c6b96a532b64df11b27fde4dead58347a9f6',
url = 'http://frc971.org/Build-Dependencies/arm-frc-linux-gnueabi_4.9.3.tar.gz',
)
+
+new_git_repository(
+ name = 'python-gflags-repo',
+ remote = 'https://github.com/gflags/python-gflags.git',
+ build_file = 'debian/gflags.BUILD',
+ commit = '41c4571864f0db5823e07715317e7388e94faabc',
+)
+
+bind(
+ name = 'python-gflags',
+ actual = '@python-gflags-repo//:gflags',
+)
+
+new_http_archive(
+ name = 'python-glog-repo',
+ build_file = 'debian/glog.BUILD',
+ sha256 = '953fd80122c48023d1148e6d1bda2763fcab59c8a81682bb298238a5935547b0',
+ url = 'https://pypi.python.org/packages/source/g/glog/glog-0.1.tar.gz',
+ strip_prefix = 'glog-0.1',
+)
+
+bind(
+ name = 'python-glog',
+ actual = '@python-glog-repo//:glog',
+)
diff --git a/debian/gflags.BUILD b/debian/gflags.BUILD
new file mode 100644
index 0000000..73037db
--- /dev/null
+++ b/debian/gflags.BUILD
@@ -0,0 +1,67 @@
+py_library(
+ name = 'gflags',
+ visibility = ['//visibility:public'],
+ srcs = [
+ 'gflags_validators.py',
+ 'gflags2man.py',
+ 'gflags.py',
+ ],
+)
+
+py_library(
+ name = 'gflags_googletest',
+ srcs = [
+ 'tests/gflags_googletest.py',
+ ],
+)
+
+py_test(
+ name = 'gflags_validators_test',
+ srcs = [
+ 'tests/gflags_validators_test.py',
+ ],
+ deps = [
+ ':gflags',
+ ':gflags_googletest',
+ ],
+ size = 'small',
+)
+
+py_library(
+ name = 'flags_modules_for_testing',
+ srcs = [
+ 'tests/flags_modules_for_testing/__init__.py',
+ 'tests/flags_modules_for_testing/module_bar.py',
+ 'tests/flags_modules_for_testing/module_baz.py',
+ 'tests/flags_modules_for_testing/module_foo.py',
+ ],
+ deps = [
+ ':gflags',
+ ],
+)
+
+py_test(
+ name = 'gflags_unittest',
+ srcs = [
+ 'tests/gflags_unittest.py',
+ ],
+ deps = [
+ ':flags_modules_for_testing',
+ ':gflags',
+ ':gflags_googletest',
+ ],
+ size = 'small',
+)
+
+py_test(
+ name = 'gflags_helpxml_test',
+ srcs = [
+ 'tests/gflags_helpxml_test.py',
+ ],
+ deps = [
+ ':flags_modules_for_testing',
+ ':gflags',
+ ':gflags_googletest',
+ ],
+ size = 'small',
+)
diff --git a/y2014/control_loops/python/BUILD b/y2014/control_loops/python/BUILD
index 21406e3..f900152 100644
--- a/y2014/control_loops/python/BUILD
+++ b/y2014/control_loops/python/BUILD
@@ -6,6 +6,8 @@
'drivetrain.py',
],
deps = [
+ '//external:python-gflags',
+ '//external:python-glog',
'//frc971/control_loops/python:controls',
],
)
@@ -18,6 +20,8 @@
],
deps = [
'//frc971/control_loops/python:controls',
+ '//external:python-gflags',
+ '//external:python-glog',
],
)
diff --git a/y2014/control_loops/python/drivetrain.py b/y2014/control_loops/python/drivetrain.py
index 8b17853..43d5a19 100755
--- a/y2014/control_loops/python/drivetrain.py
+++ b/y2014/control_loops/python/drivetrain.py
@@ -7,6 +7,12 @@
import argparse
from matplotlib import pylab
+import gflags
+import glog
+
+FLAGS = gflags.FLAGS
+
+gflags.DEFINE_bool('plot', False, 'If true, plot the loop response.')
class CIM(control_loop.ControlLoop):
def __init__(self):
@@ -142,9 +148,9 @@
[0.0, (1.0 / (12.0 ** 2.0))]])
self.K = controls.dlqr(self.A, self.B, self.Q, self.R)
- print "DT K", name
- print self.K
- print numpy.linalg.eig(self.A - self.B * self.K)[0]
+ glog.debug('DT K %s', name)
+ glog.debug(str(self.K))
+ glog.debug(str(numpy.linalg.eig(self.A - self.B * self.K)[0]))
self.hlp = 0.3
self.llp = 0.4
@@ -215,14 +221,7 @@
def main(argv):
- parser = argparse.ArgumentParser(description='Calculate drivetrain.')
- parser.add_argument('--plot', action='store_true', default=False, help='If true, plot')
- parser.add_argument('drivetrainh')
- parser.add_argument('drivetraincc')
- parser.add_argument('kalman_drivetrainh')
- parser.add_argument('kalman_drivetraincc')
-
- args = parser.parse_args(argv[1:])
+ argv = FLAGS(argv)
# Simulate the response of the system to a step input.
drivetrain = Drivetrain()
@@ -233,7 +232,7 @@
simulated_left.append(drivetrain.X[0, 0])
simulated_right.append(drivetrain.X[2, 0])
- if args.plot:
+ if FLAGS.plot:
pylab.plot(range(100), simulated_left)
pylab.plot(range(100), simulated_right)
pylab.show()
@@ -251,7 +250,7 @@
close_loop_left.append(drivetrain.X[0, 0])
close_loop_right.append(drivetrain.X[2, 0])
- if args.plot:
+ if FLAGS.plot:
pylab.plot(range(100), close_loop_left)
pylab.plot(range(100), close_loop_right)
pylab.show()
@@ -269,7 +268,7 @@
close_loop_left.append(drivetrain.X[0, 0])
close_loop_right.append(drivetrain.X[2, 0])
- if args.plot:
+ if FLAGS.plot:
pylab.plot(range(100), close_loop_left)
pylab.plot(range(100), close_loop_right)
pylab.show()
@@ -287,7 +286,7 @@
close_loop_left.append(drivetrain.X[0, 0])
close_loop_right.append(drivetrain.X[2, 0])
- if args.plot:
+ if FLAGS.plot:
pylab.plot(range(100), close_loop_left)
pylab.plot(range(100), close_loop_right)
pylab.show()
@@ -344,13 +343,13 @@
dog_loop_writer.AddConstant(control_loop.Constant("kT", "%f",
drivetrain_low_low.Kt))
- dog_loop_writer.Write(args.drivetrainh, args.drivetraincc)
+ dog_loop_writer.Write(argv[1], argv[2])
kf_loop_writer = control_loop.ControlLoopWriter(
"KFDrivetrain", [kf_drivetrain_low_low, kf_drivetrain_low_high,
- kf_drivetrain_high_low, kf_drivetrain_high_high],
+ kf_drivetrain_high_low, kf_drivetrain_high_high],
namespaces = namespaces)
- kf_loop_writer.Write(args.kalman_drivetrainh, args.kalman_drivetraincc)
+ kf_loop_writer.Write(argv[3], argv[4])
if __name__ == '__main__':
sys.exit(main(sys.argv))