-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathCMakeLists.txt
225 lines (197 loc) · 6.34 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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
cmake_minimum_required(VERSION 3.5)
project(visp_ros)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra)
endif()
find_package(ament_cmake_auto REQUIRED)
ament_auto_find_build_dependencies()
find_package(rclcpp REQUIRED)
find_package(cv_bridge REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(image_geometry REQUIRED)
find_package(image_transport REQUIRED)
find_package(kdl_parser REQUIRED)
find_package(nav_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(std_msgs REQUIRED)
find_package(std_srvs REQUIRED)
find_package(tf2_ros REQUIRED)
find_package(visp_bridge REQUIRED)
find_package(VISP REQUIRED COMPONENTS visp_core visp_robot)
# Specific packages for franka simulator
find_package(orocos_kdl QUIET)
find_package(iir QUIET)
# messages and services interface generation
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/BlobTracker.msg"
"msg/ImagePoint.msg"
"msg/PoseStampedStatus.msg"
"msg/ProjectedPoint.msg"
DEPENDENCIES sensor_msgs geometry_msgs
)
set(orocos_kdl_VERSION_MINIMUM "1.3.2")
if(orocos_kdl_FOUND AND(${orocos_kdl_VERSION} VERSION_GREATER ${orocos_kdl_VERSION_MINIMUM}))
add_definitions("-DVISP_HAVE_OROCOS_KDL")
message("-- orocos kdl ${orocos_kdl_VERSION} found: We can build franka simulator")
if(iir_FOUND)
message("-- iir found")
add_definitions("-DVISP_HAVE_IIR")
endif()
elseif(orocos_kdl_FOUND AND((${orocos_kdl_VERSION} VERSION_EQUAL ${orocos_kdl_VERSION_MINIMUM})
OR(${orocos_kdl_VERSION} VERSION_LESS ${orocos_kdl_VERSION_MINIMUM})))
message("-- orocos kdl ${orocos_kdl_VERSION} found: but version to old to build franka simulator")
else()
message("-- orocos kdl not found: Unable to build franka simulator")
endif()
set(srcs
src/device/framegrabber/vpROSGrabber.cpp
# src/robot/real-robot/pioneer/vpROSRobotPioneer.cpp
src/robot/vpROSRobot.cpp
)
if(orocos_kdl_FOUND AND(${orocos_kdl_VERSION} VERSION_GREATER ${orocos_kdl_VERSION_MINIMUM}))
# Add Franka simulator
list(APPEND srcs
src/robot/sim-robot/franka/vpRobotFrankaSim.cpp
src/robot/sim-robot/franka/vpROSRobotFrankaCoppeliasim.cpp
src/robot/sim-robot/franka/model/CoriolisMatrix.cpp
src/robot/sim-robot/franka/model/franka_model.h
src/robot/sim-robot/franka/model/FrictionTorque.cpp
src/robot/sim-robot/franka/model/GravityVector.cpp
src/robot/sim-robot/franka/model/MassMatrix.cpp
)
endif()
# Declare library
add_library(${PROJECT_NAME}_common ${srcs})
ament_export_dependencies(VISP)
ament_target_dependencies(${PROJECT_NAME}_common
cv_bridge
geometry_msgs
image_geometry
image_transport
nav_msgs
rclcpp
std_srvs
visp_bridge
VISP
orocos_kdl
)
rosidl_get_typesupport_target(cpp_typesupport_target "${PROJECT_NAME}" "rosidl_typesupport_cpp")
target_include_directories(${PROJECT_NAME}_common PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
${VISP_INCLUDE_DIRS}
)
# Node to control Afma6 robot
add_executable(${PROJECT_NAME}_afma6_node nodes/afma6.cpp)
target_link_libraries(${PROJECT_NAME}_afma6_node
"${cpp_typesupport_target}"
)
ament_target_dependencies(${PROJECT_NAME}_afma6_node
geometry_msgs
rclcpp
visp_bridge
VISP
)
# Node to track a square made of 4 blobs
add_executable(${PROJECT_NAME}_blob_tracker_node nodes/blob_tracker.cpp)
target_link_libraries(${PROJECT_NAME}_blob_tracker_node
# ${PROJECT_NAME}_common
"${cpp_typesupport_target}"
# ${VISP_LIBRARIES}
)
ament_target_dependencies(${PROJECT_NAME}_blob_tracker_node
cv_bridge
rclcpp
std_msgs
visp_bridge
VISP
)
# Node to control Viper650 robot
add_executable(${PROJECT_NAME}_viper650_node nodes/viper650.cpp)
target_link_libraries(${PROJECT_NAME}_viper650_node
"${cpp_typesupport_target}"
)
ament_target_dependencies(${PROJECT_NAME}_viper650_node
geometry_msgs
rclcpp
sensor_msgs
visp_bridge
VISP
)
# Node to control Viper850 robot
add_executable(${PROJECT_NAME}_viper850_node nodes/viper850.cpp)
target_link_libraries(${PROJECT_NAME}_viper850_node
"${cpp_typesupport_target}"
)
ament_target_dependencies(${PROJECT_NAME}_viper850_node
geometry_msgs
rclcpp
sensor_msgs
visp_bridge
VISP
)
# Tutorial for ROS Grabber
add_executable(tutorial-ros-grabber tutorial/grabber/ros/tutorial-ros-grabber.cpp)
target_link_libraries(tutorial-ros-grabber
${PROJECT_NAME}_common
"${cpp_typesupport_target}"
)
ament_target_dependencies(tutorial-ros-grabber
rclcpp
sensor_msgs
visp_bridge
VISP
)
# ###########################################################
# Build tutorial to simulate franka robot with coppeliasim
# ###########################################################
if(orocos_kdl_FOUND AND(${orocos_kdl_VERSION} VERSION_GREATER ${orocos_kdl_VERSION_MINIMUM}))
set(tutorial_franka
tutorial/franka/coppeliasim/test-franka-coppeliasim-controller.cpp
tutorial/franka/coppeliasim/tutorial-franka-coppeliasim-ibvs-apriltag.cpp
tutorial/franka/coppeliasim/tutorial-franka-coppeliasim-pbvs-apriltag.cpp
tutorial/franka/coppeliasim/tutorial-franka-coppeliasim-cartesian-impedance-control.cpp
tutorial/franka/coppeliasim/tutorial-franka-coppeliasim-joint-impedance-control.cpp
tutorial/franka/coppeliasim/tutorial-franka-coppeliasim-dual-arm.cpp
)
foreach(cpp ${tutorial_franka})
get_filename_component(bin_name ${cpp} NAME_WE)
add_executable(${bin_name} ${cpp})
target_link_libraries(${bin_name}
${PROJECT_NAME}_common
"${cpp_typesupport_target}"
)
ament_target_dependencies(${bin_name}
geometry_msgs
rclcpp
sensor_msgs
visp_bridge
VISP
)
# Installation
install(
TARGETS ${bin_name}
DESTINATION lib/${PROJECT_NAME}
)
endforeach()
endif()
# Installation
install(
TARGETS
${PROJECT_NAME}_afma6_node
${PROJECT_NAME}_blob_tracker_node
${PROJECT_NAME}_viper650_node
${PROJECT_NAME}_viper850_node
tutorial-ros-grabber
DESTINATION lib/${PROJECT_NAME}
# ARCHIVE DESTINATION lib
# LIBRARY DESTINATION lib
# RUNTIME DESTINATION bin
)
install(DIRECTORY
launch
config
DESTINATION share/${PROJECT_NAME}
)
ament_export_dependencies(rosidl_default_runtime)
ament_package()