forked from pz4kybsvg/Conception
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.
303 lines
8.0 KiB
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()
|