-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
175 lines (142 loc) · 4.95 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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
cmake_minimum_required(VERSION 3.16)
project(kalman_arm_controller LANGUAGES CXX)
add_definitions("-DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_CXX_COMPILER=clang++")
if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)")
add_compile_options(-Wall -Wextra)
endif()
# find dependencies
set(HW_IF_INCLUDE_DEPENDS
pluginlib
rcpputils
hardware_interface
rclcpp
)
set(THIS_PACKAGE_INCLUDE_DEPENDS
control_msgs
geometry_msgs
moveit_core
moveit_msgs
moveit_ros_planning
moveit_ros_planning_interface
pluginlib
rclcpp
rclcpp_components
realtime_tools
sensor_msgs
std_msgs
std_srvs
tf2_eigen
kalman_interfaces
trajectory_msgs)
set(TWIST_REPUB_DEPS
control_msgs
geometry_msgs
moveit_core
moveit_msgs
moveit_ros_planning
moveit_ros_planning_interface
pluginlib
rclcpp
rclcpp_components
realtime_tools
sensor_msgs
std_msgs
std_srvs
tf2_eigen
builtin_interfaces)
# find dependencies
find_package(ament_cmake REQUIRED)
foreach(Dependency IN ITEMS ${HW_IF_INCLUDE_DEPENDS})
find_package(${Dependency} REQUIRED)
endforeach()
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
find_package(${Dependency} REQUIRED)
endforeach()
foreach(Dependency IN ITEMS ${TWIST_REPUB_DEPS})
find_package(${Dependency} REQUIRED)
endforeach()
# Component Nodes (Shared libraries) ############################
set(SERVO_CONTROLLER_INPUT servo_controller_input)
# Add executable for using a controller
add_library(${SERVO_CONTROLLER_INPUT} SHARED scripts/joystick_servo_example.cpp)
ament_target_dependencies(${SERVO_CONTROLLER_INPUT} ${THIS_PACKAGE_INCLUDE_DEPENDS})
rclcpp_components_register_nodes(${SERVO_CONTROLLER_INPUT} "moveit_servo::JoyToServoPub")
set(SERVO_PUBLISHER servo_publisher)
add_library(${SERVO_PUBLISHER} SHARED scripts/servo_publisher.cpp)
target_compile_features(${SERVO_PUBLISHER} PUBLIC cxx_std_20)
ament_target_dependencies(${SERVO_PUBLISHER} ${THIS_PACKAGE_INCLUDE_DEPENDS})
rclcpp_components_register_nodes(${SERVO_PUBLISHER} "arm_master::MasterToServo")
set(EXTRA_CAN extra_can)
add_library(${EXTRA_CAN} SHARED
scripts/extra_can_node.cpp
hardware/can_src/can_driver.cpp
hardware/can_src/arm_config.cpp
hardware/can_src/can_driver.cpp
hardware/can_src/can_handlers.cpp
hardware/can_src/can_vars.cpp
)
target_compile_features(${EXTRA_CAN} PUBLIC cxx_std_20)
ament_target_dependencies(${EXTRA_CAN} ${THIS_PACKAGE_INCLUDE_DEPENDS})
rclcpp_components_register_nodes(${EXTRA_CAN} "kalman_arm::ExtraCanNode")
add_executable(servo_keyboard_input scripts/servo_keyboard_input.cpp)
target_include_directories(servo_keyboard_input PUBLIC include)
ament_target_dependencies(servo_keyboard_input ${THIS_PACKAGE_INCLUDE_DEPENDS})
# add_executable(monitor_planning_scene scripts/planning_scene_tutorial.cpp)
# target_include_directories(monitor_planning_scene PUBLIC include)
# ament_target_dependencies(monitor_planning_scene ${THIS_PACKAGE_INCLUDE_DEPENDS})
add_executable(twist_republisher scripts/twist_republisher.cpp)
target_include_directories(twist_republisher PUBLIC include)
ament_target_dependencies(twist_republisher ${TWIST_REPUB_DEPS})
include_directories(hardware/include)
add_library(
kalman_arm_controller
SHARED
hardware/arm_hardware.cpp
hardware/can_src/arm_config.cpp
hardware/can_src/can_driver.cpp
hardware/can_src/can_handlers.cpp
hardware/can_src/can_vars.cpp
)
target_compile_features(kalman_arm_controller PUBLIC cxx_std_20)
target_compile_options(kalman_arm_controller PRIVATE -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_CXX_COMPILER=clang++)
target_include_directories(kalman_arm_controller PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/hardware/include>
$<INSTALL_INTERFACE:include/kalman_arm_controller>
)
ament_target_dependencies(
kalman_arm_controller PUBLIC
${HW_IF_INCLUDE_DEPENDS}
)
# Causes the visibility macros to use dllexport rather than dllimport,
# which is appropriate when building the dll but not consuming it.
target_compile_definitions(${PROJECT_NAME} PRIVATE "KALMAN_ARM_CONTROLLER_BUILDING_DLL")
# Export hardware plugins
pluginlib_export_plugin_description_file(hardware_interface kalman_arm_controller.xml)
# INSTALL
install(
DIRECTORY hardware/include/
DESTINATION include/kalman_arm_controller
)
install(
DIRECTORY bringup/launch bringup/config
DESTINATION share/kalman_arm_controller
)
install(TARGETS servo_keyboard_input
DESTINATION lib/${PROJECT_NAME})
# install(TARGETS monitor_planning_scene
# DESTINATION lib/${PROJECT_NAME})
install(TARGETS twist_republisher
DESTINATION lib/${PROJECT_NAME})
install(TARGETS kalman_arm_controller
${SERVO_CONTROLLER_INPUT}
${SERVO_PUBLISHER}
${EXTRA_CAN}
EXPORT export_kalman_arm_controller
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
## EXPORTS
ament_export_targets(export_kalman_arm_controller HAS_LIBRARY_TARGET)
ament_export_dependencies(${HW_IF_INCLUDE_DEPENDS} ${THIS_PACKAGE_INCLUDE_DEPENDS})
ament_package()