Add a Primal-dual interior-point method solver
This sets us up to solve nonlinear, convex problems efficiently. I'm
not 100% sure this has the right interfaces, but it appears to work for
a toy problem and is worth checking in.
This is from https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf
section 11.7. Parts of the code are from the multinode timestamp
solver, though that solver has enough workarounds for the problem that
is isn't easily generalized.
Change-Id: I38a727b81df3ebfc24a42a633ab1cf74cf5ac692
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/frc971/solvers/BUILD b/frc971/solvers/BUILD
new file mode 100644
index 0000000..fc89616
--- /dev/null
+++ b/frc971/solvers/BUILD
@@ -0,0 +1,22 @@
+cc_library(
+ name = "convex",
+ hdrs = ["convex.h"],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@com_github_google_glog//:glog",
+ "@org_tuxfamily_eigen//:eigen",
+ ],
+)
+
+cc_test(
+ name = "convex_test",
+ srcs = [
+ "convex_test.cc",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ ":convex",
+ "//aos/testing:googletest",
+ ],
+)