You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Conception/drake-master/systems/controllers/BUILD.bazel

303 lines
8.0 KiB

load(
"@drake//tools/skylark:drake_cc.bzl",
"drake_cc_googletest",
"drake_cc_library",
"drake_cc_package_library",
)
load("//tools/lint:lint.bzl", "add_lint_tests")
package(default_visibility = ["//visibility:public"])
drake_cc_package_library(
name = "controllers",
visibility = ["//visibility:public"],
deps = [
":dynamic_programming",
":finite_horizon_linear_quadratic_regulator",
":inverse_dynamics",
":inverse_dynamics_controller",
":joint_stiffness_controller",
":linear_model_predictive_controller",
":linear_quadratic_regulator",
":pid_controlled_system",
":pid_controller",
":state_feedback_controller_interface",
":zmp_planner",
],
)
drake_cc_library(
name = "state_feedback_controller_interface",
hdrs = ["state_feedback_controller_interface.h"],
deps = [
"//systems/framework:system",
],
)
drake_cc_library(
name = "dynamic_programming",
srcs = ["dynamic_programming.cc"],
hdrs = ["dynamic_programming.h"],
deps = [
"//common:essential",
"//math:wrap_to",
"//solvers:mathematical_program",
"//solvers:solve",
"//systems/analysis:simulator",
"//systems/framework",
"//systems/primitives:barycentric_system",
],
)
drake_cc_library(
name = "finite_horizon_linear_quadratic_regulator",
srcs = ["finite_horizon_linear_quadratic_regulator.cc"],
hdrs = ["finite_horizon_linear_quadratic_regulator.h"],
deps = [
"//common/trajectories",
"//math:autodiff",
"//math:gradient",
"//math:matrix_util",
"//systems/analysis:simulator",
"//systems/framework",
],
)
drake_cc_library(
name = "inverse_dynamics",
srcs = ["inverse_dynamics.cc"],
hdrs = ["inverse_dynamics.h"],
deps = [
"//multibody/plant",
"//systems/framework",
],
)
drake_cc_library(
name = "inverse_dynamics_controller",
srcs = ["inverse_dynamics_controller.cc"],
hdrs = ["inverse_dynamics_controller.h"],
deps = [
":inverse_dynamics",
":pid_controller",
":state_feedback_controller_interface",
"//multibody/plant",
"//systems/framework",
"//systems/primitives:adder",
"//systems/primitives:constant_vector_source",
"//systems/primitives:demultiplexer",
"//systems/primitives:pass_through",
],
)
drake_cc_library(
name = "joint_stiffness_controller",
srcs = ["joint_stiffness_controller.cc"],
hdrs = ["joint_stiffness_controller.h"],
deps = [
"//multibody/plant",
"//systems/framework",
],
)
drake_cc_library(
name = "linear_model_predictive_controller",
srcs = ["linear_model_predictive_controller.cc"],
hdrs = ["linear_model_predictive_controller.h"],
deps = [
"//common/trajectories:piecewise_polynomial",
"//planning/trajectory_optimization:direct_transcription",
"//solvers:solve",
"//systems/primitives:linear_system",
],
)
drake_cc_library(
name = "linear_quadratic_regulator",
srcs = ["linear_quadratic_regulator.cc"],
hdrs = ["linear_quadratic_regulator.h"],
deps = [
"//common:is_approx_equal_abstol",
"//math:continuous_algebraic_riccati_equation",
"//math:discrete_algebraic_riccati_equation",
"//systems/framework",
"//systems/primitives:linear_system",
],
)
drake_cc_library(
name = "pid_controller",
srcs = ["pid_controller.cc"],
hdrs = ["pid_controller.h"],
deps = [
":state_feedback_controller_interface",
"//systems/framework:leaf_system",
"//systems/primitives:matrix_gain",
],
)
drake_cc_library(
name = "pid_controlled_system",
srcs = ["pid_controlled_system.cc"],
hdrs = ["pid_controlled_system.h"],
deps = [
":pid_controller",
"//systems/primitives:adder",
"//systems/primitives:constant_vector_source",
"//systems/primitives:saturation",
],
)
drake_cc_library(
name = "zmp_planner",
srcs = ["zmp_planner.cc"],
hdrs = ["zmp_planner.h"],
deps = [
":linear_quadratic_regulator",
"//common:essential",
"//common/trajectories:piecewise_polynomial",
],
)
# === test/ ===
drake_cc_library(
name = "zmp_test_util",
testonly = 1,
srcs = ["test/zmp_test_util.cc"],
hdrs = ["test/zmp_test_util.h"],
deps = [
":zmp_planner",
],
)
drake_cc_googletest(
name = "dynamic_programming_test",
# Test timeout increased to not timeout when run with Valgrind.
timeout = "long",
data = [
"//examples/pendulum:models",
],
deps = [
":dynamic_programming",
":linear_quadratic_regulator",
"//common/proto:call_python",
"//common/test_utilities:eigen_matrix_compare",
"//multibody/parsing",
"//multibody/plant",
"//systems/framework:diagram_builder",
"//systems/primitives:integrator",
"//systems/primitives:linear_system",
],
)
drake_cc_googletest(
name = "finite_horizon_linear_quadratic_regulator_test",
deps = [
":finite_horizon_linear_quadratic_regulator",
":linear_quadratic_regulator",
"//common/test_utilities:eigen_matrix_compare",
"//common/test_utilities:expect_no_throw",
"//systems/framework/test_utilities:scalar_conversion",
"//systems/primitives:linear_system",
"//systems/primitives:symbolic_vector_system",
],
)
drake_cc_googletest(
name = "inverse_dynamics_test",
data = [
"//manipulation/models/iiwa_description:models",
],
deps = [
":inverse_dynamics",
"//common:find_resource",
"//common/test_utilities:eigen_matrix_compare",
"//common/test_utilities:expect_throws_message",
"//multibody/parsing",
"//systems/controllers/test_utilities",
],
)
drake_cc_googletest(
name = "inverse_dynamics_controller_test",
data = [
"//manipulation/models/iiwa_description:models",
],
deps = [
":inverse_dynamics_controller",
"//common:find_resource",
"//common/test_utilities:eigen_matrix_compare",
"//common/test_utilities:expect_throws_message",
"//multibody/parsing",
"//systems/controllers/test_utilities",
],
)
drake_cc_googletest(
name = "joint_stiffness_controller_test",
data = [
"//manipulation/models/iiwa_description:models",
"//multibody/benchmarks/acrobot:models",
],
deps = [
":joint_stiffness_controller",
"//common:find_resource",
"//common/test_utilities:eigen_matrix_compare",
"//common/test_utilities:expect_throws_message",
"//multibody/parsing",
],
)
drake_cc_googletest(
name = "linear_model_predictive_controller_test",
deps = [
":linear_model_predictive_controller",
"//common/test_utilities:eigen_matrix_compare",
"//math:discrete_algebraic_riccati_equation",
"//systems/analysis:simulator",
],
)
drake_cc_googletest(
name = "linear_quadratic_regulator_test",
data = ["//examples/acrobot:models"],
deps = [
":linear_quadratic_regulator",
"//common:find_resource",
"//common/test_utilities:eigen_matrix_compare",
"//common/test_utilities:expect_no_throw",
"//examples/acrobot:acrobot_plant",
"//multibody/parsing",
"//multibody/plant",
],
)
drake_cc_googletest(
name = "pid_controlled_system_test",
deps = [
":pid_controlled_system",
"//common/test_utilities:eigen_matrix_compare",
"//common/test_utilities:expect_no_throw",
],
)
drake_cc_googletest(
name = "pid_controller_test",
deps = [
":pid_controller",
"//common/test_utilities:eigen_matrix_compare",
"//common/test_utilities:expect_no_throw",
],
)
drake_cc_googletest(
name = "zmp_planner_test",
deps = [
":zmp_test_util",
"//common/test_utilities:eigen_matrix_compare",
],
)
add_lint_tests()