1
- cmake_minimum_required (VERSION 3.5 )
2
- project (admittance_controller)
1
+ cmake_minimum_required (VERSION 3.16 )
2
+ project (admittance_controller LANGUAGES CXX )
3
3
4
- if (NOT CMAKE_CXX_STANDARD)
5
- set (CMAKE_CXX_STANDARD 17)
6
- endif ()
7
-
8
- if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
4
+ if (CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)" )
9
5
add_compile_options (-Wall -Wextra -Wpedantic)
10
6
endif ()
11
7
12
- # find dependencies
13
- set (THIS_PACKAGE_INCLUDE_DEPENDS
8
+ find_package (ament_cmake REQUIRED)
9
+ find_package (backward_ros REQUIRED)
10
+
11
+ find_package (angles REQUIRED)
12
+ find_package (control_msgs REQUIRED)
13
+ find_package (control_toolbox REQUIRED)
14
+ find_package (controller_interface REQUIRED)
15
+ find_package (Eigen3 REQUIRED)
16
+ find_package (generate_parameter_library REQUIRED)
17
+ find_package (geometry_msgs REQUIRED)
18
+ find_package (hardware_interface REQUIRED)
19
+ find_package (joint_trajectory_controller REQUIRED)
20
+ find_package (kinematics_interface REQUIRED)
21
+ find_package (pluginlib REQUIRED)
22
+ find_package (rclcpp REQUIRED)
23
+ find_package (rclcpp_lifecycle REQUIRED)
24
+ find_package (realtime_tools REQUIRED)
25
+ find_package (tf2 REQUIRED)
26
+ find_package (tf2_eigen REQUIRED)
27
+ find_package (tf2_geometry_msgs REQUIRED)
28
+ find_package (tf2_kdl REQUIRED)
29
+ find_package (tf2_ros REQUIRED)
30
+ find_package (trajectory_msgs REQUIRED)
31
+
32
+ generate_parameter_library(admittance_controller_parameters
33
+ src/admittance_controller_parameters.yaml
34
+ )
35
+
36
+ add_library (admittance_controller SHARED
37
+ src/admittance_controller.cpp
38
+ )
39
+ target_compile_features (admittance_controller PUBLIC cxx_std_17)
40
+ target_include_directories (admittance_controller PUBLIC
41
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /include >
42
+ $<INSTALL_INTERFACE:include /admittance_controller>
43
+ )
44
+ target_link_libraries (admittance_controller PUBLIC
45
+ admittance_controller_parameters
46
+ )
47
+ ament_target_dependencies(admittance_controller PUBLIC
14
48
angles
15
49
control_msgs
16
50
control_toolbox
17
51
controller_interface
18
- kinematics_interface
19
52
Eigen3
20
53
generate_parameter_library
21
54
geometry_msgs
22
55
hardware_interface
23
56
joint_trajectory_controller
57
+ kinematics_interface
24
58
pluginlib
25
59
rclcpp
26
60
rclcpp_lifecycle
@@ -33,72 +67,78 @@ set(THIS_PACKAGE_INCLUDE_DEPENDS
33
67
trajectory_msgs
34
68
)
35
69
36
- find_package (ament_cmake REQUIRED)
37
- find_package (backward_ros REQUIRED)
38
- foreach (Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS} )
39
- find_package (${Dependency} REQUIRED)
40
- endforeach ()
41
-
42
- add_library (admittance_controller SHARED src/admittance_controller.cpp)
43
- target_include_directories (admittance_controller PRIVATE include )
44
- generate_parameter_library(admittance_controller_parameters src/admittance_controller_parameters.yaml)
45
- target_link_libraries (admittance_controller admittance_controller_parameters)
46
- ament_target_dependencies(admittance_controller ${THIS_PACKAGE_INCLUDE_DEPENDS} )
47
-
48
70
# Causes the visibility macros to use dllexport rather than dllimport,
49
71
# which is appropriate when building the dll but not consuming it.
50
72
target_compile_definitions (admittance_controller PRIVATE "ADMITTANCE_CONTROLLER_BUILDING_DLL" )
51
73
52
74
pluginlib_export_plugin_description_file(controller_interface admittance_controller.xml)
53
75
54
- install (DIRECTORY include /
55
- DESTINATION include
56
- )
57
-
58
- install (TARGETS admittance_controller admittance_controller_parameters
59
- EXPORT export_admittance_controller
60
- RUNTIME DESTINATION bin
61
- ARCHIVE DESTINATION lib
62
- LIBRARY DESTINATION lib
63
- )
64
-
65
76
if (BUILD_TESTING)
66
77
find_package (ament_cmake_gmock REQUIRED)
67
- find_package (control_msgs REQUIRED)
68
78
find_package (controller_manager REQUIRED)
69
- find_package (controller_interface REQUIRED)
70
- find_package (hardware_interface REQUIRED)
71
79
find_package (ros2_control_test_assets REQUIRED)
72
80
81
+ # Dynamically loaded durrint test
82
+ find_package (kinematics_interface_kdl REQUIRED)
83
+
73
84
# test loading admittance controller
74
- add_rostest_with_parameters_gmock(test_load_admittance_controller test /test_load_admittance_controller.cpp
75
- ${CMAKE_CURRENT_SOURCE_DIR} /test /test_params.yaml)
76
- target_include_directories (test_load_admittance_controller PUBLIC ${GMOCK_INCLUDE_DIRS} )
77
- target_link_libraries (test_load_admittance_controller ${GMOCK_LIBRARIES} )
78
- ament_target_dependencies(
79
- test_load_admittance_controller
85
+ add_rostest_with_parameters_gmock(test_load_admittance_controller
86
+ test /test_load_admittance_controller.cpp
87
+ ${CMAKE_CURRENT_SOURCE_DIR} /test /test_params.yaml
88
+ )
89
+ ament_target_dependencies(test_load_admittance_controller
80
90
controller_manager
81
91
hardware_interface
82
92
ros2_control_test_assets
83
93
)
94
+
84
95
# test admittance controller function
85
- add_rostest_with_parameters_gmock(test_admittance_controller test /test_admittance_controller.cpp
86
- ${CMAKE_CURRENT_SOURCE_DIR} /test /test_params.yaml)
87
- target_include_directories (test_admittance_controller PRIVATE include )
96
+ add_rostest_with_parameters_gmock(test_admittance_controller
97
+ test /test_admittance_controller.cpp
98
+ ${CMAKE_CURRENT_SOURCE_DIR} /test /test_params.yaml
99
+ )
88
100
target_link_libraries (test_admittance_controller admittance_controller)
89
- ament_target_dependencies(
90
- test_admittance_controller
101
+ ament_target_dependencies(test_admittance_controller
91
102
control_msgs
92
103
controller_interface
93
104
hardware_interface
94
105
ros2_control_test_assets
95
106
)
96
107
endif ()
97
108
98
- ament_export_targets(
99
- export_admittance_controller HAS_LIBRARY_TARGET
109
+ install (
110
+ DIRECTORY include /
111
+ DESTINATION include /admittance_controller
112
+ )
113
+
114
+ install (TARGETS admittance_controller admittance_controller_parameters
115
+ EXPORT export_admittance_controller
116
+ RUNTIME DESTINATION bin
117
+ ARCHIVE DESTINATION lib
118
+ LIBRARY DESTINATION lib
100
119
)
120
+
121
+ ament_export_targets(export_admittance_controller HAS_LIBRARY_TARGET)
101
122
ament_export_dependencies(
102
- ${THIS_PACKAGE_INCLUDE_DEPENDS}
123
+ angles
124
+ control_msgs
125
+ control_toolbox
126
+ controller_interface
127
+ Eigen3
128
+ generate_parameter_library
129
+ geometry_msgs
130
+ hardware_interface
131
+ joint_trajectory_controller
132
+ kinematics_interface
133
+ pluginlib
134
+ rclcpp
135
+ rclcpp_lifecycle
136
+ realtime_tools
137
+ tf2
138
+ tf2_eigen
139
+ tf2_geometry_msgs
140
+ tf2_kdl
141
+ tf2_ros
142
+ trajectory_msgs
103
143
)
104
144
ament_package()
0 commit comments