-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCMakeLists.txt
144 lines (129 loc) · 5.07 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
cmake_minimum_required(VERSION 3.22.1)
#
# Project definition
#
project(linear_feedback_controller LANGUAGES CXX)
#
# Options
#
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
#
# Handle dependencies by reading the package.xml
#
find_package(ament_cmake_auto REQUIRED)
ament_auto_find_build_dependencies()
#
# Generate the ROS2 parameters interface automatically.
#
include(cmake/sec_generate_parameter_library.cmake)
# Main node params
sec_generate_parameter_library_markdown(${PROJECT_NAME}_parameters_doc
src/linear_feedback_controller.yaml)
sec_generate_parameter_library(
generated_parameters # Lib name
${PROJECT_NAME}_parameters # CMake target name for the parameter library.
src/linear_feedback_controller.yaml # Path to input yaml file
)
add_dependencies(${PROJECT_NAME}_parameters ${PROJECT_NAME}_parameters_doc)
# Joint estimator params
sec_generate_parameter_library_markdown(joint_state_estimator_parameters_doc
src/joint_state_estimator.yaml)
sec_generate_parameter_library(
joint_state_estimator_generated_parameters # Lib name
joint_state_estimator_parameters # CMake target name for the parameter
# library.
src/joint_state_estimator.yaml # Path to input yaml file
)
add_dependencies(joint_state_estimator_parameters
joint_state_estimator_parameters_doc)
#
# Main Library
#
set(${PROJECT_NAME}_headers
include/${PROJECT_NAME}/averaging_filter.hpp
include/${PROJECT_NAME}/averaging_filter.hxx
include/${PROJECT_NAME}/joint_state_estimator.hpp
include/${PROJECT_NAME}/lf_controller.hpp
include/${PROJECT_NAME}/linear_feedback_controller.hpp
include/${PROJECT_NAME}/linear_feedback_controller_ros.hpp
include/${PROJECT_NAME}/min_jerk.hpp
include/${PROJECT_NAME}/pd_controller.hpp
include/${PROJECT_NAME}/robot_model_builder.hpp)
set(${PROJECT_NAME}_sources
src/joint_state_estimator.cpp #
src/lf_controller.cpp #
src/linear_feedback_controller.cpp #
src/linear_feedback_controller_ros.cpp #
src/min_jerk.cpp #
src/pd_controller.cpp #
src/robot_model_builder.cpp)
ament_auto_add_library(${PROJECT_NAME} ${${PROJECT_NAME}_sources}
${${PROJECT_NAME}_headers})
target_link_libraries(${PROJECT_NAME} pinocchio::pinocchio)
target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_parameters)
#
# Unit tests
#
include(CTest)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_auto_find_test_dependencies()
ament_auto_add_gtest(test_averaging_filter tests/test_averaging_filter.cpp)
target_link_libraries(test_averaging_filter ${PROJECT_NAME})
set_tests_properties(
test_averaging_filter
PROPERTIES ENVIRONMENT_MODIFICATION
LD_LIBRARY_PATH=path_list_prepend:${CMAKE_CURRENT_BINARY_DIR})
ament_auto_add_gtest(test_min_jerk tests/test_min_jerk.cpp)
target_link_libraries(test_min_jerk ${PROJECT_NAME})
set_tests_properties(
test_min_jerk
PROPERTIES ENVIRONMENT_MODIFICATION
LD_LIBRARY_PATH=path_list_prepend:${CMAKE_CURRENT_BINARY_DIR})
ament_auto_add_gtest(test_robot_model_builder
tests/test_robot_model_builder.cpp)
target_link_libraries(test_robot_model_builder ${PROJECT_NAME}
example-robot-data::example-robot-data)
set_tests_properties(
test_robot_model_builder
PROPERTIES ENVIRONMENT_MODIFICATION
LD_LIBRARY_PATH=path_list_prepend:${CMAKE_CURRENT_BINARY_DIR})
ament_auto_add_gtest(test_pd_controller tests/test_pd_controller.cpp)
target_link_libraries(test_pd_controller ${PROJECT_NAME})
set_tests_properties(
test_pd_controller
PROPERTIES ENVIRONMENT_MODIFICATION
LD_LIBRARY_PATH=path_list_prepend:${CMAKE_CURRENT_BINARY_DIR})
ament_auto_add_gtest(test_lf_controller tests/test_lf_controller.cpp)
target_link_libraries(test_lf_controller ${PROJECT_NAME})
set_tests_properties(
test_lf_controller
PROPERTIES ENVIRONMENT_MODIFICATION
LD_LIBRARY_PATH=path_list_prepend:${CMAKE_CURRENT_BINARY_DIR})
ament_auto_add_gtest(test_linear_feedback_controller
tests/test_linear_feedback_controller.cpp)
target_link_libraries(test_linear_feedback_controller ${PROJECT_NAME})
set_tests_properties(
test_linear_feedback_controller
PROPERTIES ENVIRONMENT_MODIFICATION
LD_LIBRARY_PATH=path_list_prepend:${CMAKE_CURRENT_BINARY_DIR})
endif()
#
# Export plugins
#
pluginlib_export_plugin_description_file(controller_interface
controller_plugins.xml)
#
# Installation
#
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/linear_feedback_controller.md
${CMAKE_CURRENT_BINARY_DIR}/joint_state_estimator.md
DESTINATION share/${PROJECT_NAME}/doc)
install(
PROGRAMS tests/pd_plus_controller.py
DESTINATION lib/${PROJECT_NAME}
RENAME pd_plus_controller)
install(DIRECTORY config DESTINATION share/${PROJECT_NAME})
install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})
ament_export_libraries(${PROJECT_NAME})
ament_auto_package()