@@ -18,18 +18,186 @@ endif()
1818find_package (rclcpp REQUIRED )
1919find_package (std_msgs REQUIRED )
2020find_package (nav_msgs REQUIRED )
21+ find_package (Protobuf REQUIRED )
22+ find_package (kalman_interfaces REQUIRED )
23+ find_package (pluginlib REQUIRED )
24+ find_package (Qt5 REQUIRED COMPONENTS Widgets )
25+ find_package (qt_gui_cpp REQUIRED )
26+ find_package (rqt_gui_cpp REQUIRED )
27+
28+ # darkest rock finder deps
29+ find_package (rclcpp_components REQUIRED )
30+ find_package (pcl_ros REQUIRED )
31+ find_package (pcl_conversions REQUIRED )
32+ find_package (vision_msgs REQUIRED )
33+ find_package (tf2_ros REQUIRED )
34+ find_package (tf2_geometry_msgs REQUIRED )
35+ find_package (std_srvs REQUIRED )
36+
37+ add_library (rscp_proto_messages
38+ proto/rscp.proto
39+ )
40+
41+ set_target_properties (rscp_proto_messages PROPERTIES POSITION_INDEPENDENT_CODE ON )
42+
43+ protobuf_generate (
44+ TARGET rscp_proto_messages
45+ LANGUAGE cpp
46+ PROTOS proto/rscp.proto
47+ )
48+
49+ target_link_libraries (rscp_proto_messages
50+ protobuf::libprotobuf
51+ )
52+
53+ target_include_directories (rscp_proto_messages
54+ PUBLIC
55+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
56+ $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } >
57+ $<INSTALL_INTERFACE :include >
58+ )
59+
60+ add_library (kalman_arc_cobs
61+ src/cobs.cpp
62+ )
63+
64+ set_target_properties (kalman_arc_cobs PROPERTIES POSITION_INDEPENDENT_CODE ON )
65+
66+ target_include_directories (kalman_arc_cobs
67+ PUBLIC
68+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
69+ $<INSTALL_INTERFACE :include >
70+ )
71+
72+ add_executable (rscp_node src/proto_node.cpp )
73+
74+ target_link_libraries (rscp_node
75+ kalman_arc_cobs
76+ rscp_proto_messages
77+ )
78+
79+ ament_target_dependencies (rscp_node
80+ rclcpp
81+ std_msgs
82+ kalman_interfaces
83+ )
84+
85+ add_library (rqt_rscp SHARED
86+ include /kalman_arc/rqt_rscp.hpp
87+ src/rqt_rscp.cpp
88+ )
89+
90+ set_target_properties (rqt_rscp PROPERTIES AUTOMOC ON )
91+
92+ target_include_directories (rqt_rscp
93+ PRIVATE
94+ ${CMAKE_CURRENT_SOURCE_DIR } /include
95+ ${CMAKE_CURRENT_BINARY_DIR }
96+ )
97+
98+ target_link_libraries (rqt_rscp
99+ Qt5::Widgets
100+ )
101+
102+ ament_target_dependencies (rqt_rscp
103+ pluginlib
104+ qt_gui_cpp
105+ rclcpp
106+ rqt_gui_cpp
107+ kalman_interfaces
108+ )
109+ find_package (sensor_msgs REQUIRED )
110+ find_package (geometry_msgs REQUIRED )
111+ find_package (tf2_ros REQUIRED )
112+ find_package (tf2_sensor_msgs REQUIRED )
113+ find_package (grid_map_ros REQUIRED )
114+ find_package (grid_map_core REQUIRED )
115+ find_package (grid_map_msgs REQUIRED )
116+ find_package (rclcpp_components REQUIRED )
117+ find_package (std_srvs REQUIRED )
118+
119+ add_library (peak_finder_node SHARED src/peak_finder_node.cpp )
120+ ament_target_dependencies (peak_finder_node
121+ rclcpp
122+ rclcpp_components
123+ sensor_msgs
124+ tf2_ros
125+ tf2_sensor_msgs
126+ grid_map_ros
127+ grid_map_core
128+ grid_map_msgs
129+ geometry_msgs
130+ std_srvs
131+ )
132+ rclcpp_components_register_node (
133+ peak_finder_node
134+ PLUGIN "kalman_arc::PeakFinder"
135+ EXECUTABLE peak_finder
136+ )
137+ install (TARGETS peak_finder_node peak_finder
138+ EXPORT kalman_arc-targets
139+ RUNTIME DESTINATION bin
140+ LIBRARY DESTINATION lib
141+ ARCHIVE DESTINATION lib
142+ )
143+
144+ # >>> darkest rock finder
145+
146+ add_library (darkest_rock_finder_node SHARED src/darkest_rock_finder_node.cpp )
147+ ament_target_dependencies (darkest_rock_finder_node
148+ rclcpp
149+ rclcpp_components
150+ pcl_ros
151+ pcl_conversions
152+ vision_msgs
153+ tf2_ros
154+ tf2_geometry_msgs
155+ std_srvs
156+ # This dependency is completely unnnecessary, but compilation fails without it. I don't know why. I don't think I want to know:
157+ grid_map_core # 67
158+ )
159+ rclcpp_components_register_node (
160+ darkest_rock_finder_node
161+ PLUGIN "rock_finder::DarkestRockFinder"
162+ EXECUTABLE darkest_rock_finder
163+ )
164+
165+ # <<< darkest rock finder
21166
22167install (PROGRAMS
23168 scripts/travel_distance_meter
24169 DESTINATION lib/${PROJECT_NAME }
25170)
26171
172+ install (TARGETS
173+ kalman_arc_cobs
174+ rscp_proto_messages
175+ rscp_node
176+ rqt_rscp
177+ darkest_rock_finder_node
178+ ARCHIVE DESTINATION lib
179+ LIBRARY DESTINATION lib
180+ RUNTIME DESTINATION lib/${PROJECT_NAME }
181+ )
182+
27183install (DIRECTORY launch
28184 DESTINATION share/${PROJECT_NAME }
29185)
30186
187+ pluginlib_export_plugin_description_file (rqt_gui plugin.xml )
188+
31189if (BUILD_TESTING)
190+ find_package (ament_cmake_gtest REQUIRED )
191+
192+ ament_add_gtest (cobs_test test /cobs_test.cpp )
193+ target_link_libraries (cobs_test
194+ kalman_arc_cobs
195+ )
196+
32197 find_package (ament_lint_auto REQUIRED )
198+ set (ament_cmake_copyright_FOUND TRUE )
199+ set (ament_cmake_cpplint_FOUND TRUE )
200+ set (ament_cmake_uncrustify_FOUND TRUE )
33201 ament_lint_auto_find_test_dependencies ()
34202endif ()
35203
0 commit comments