-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
157 lines (144 loc) · 2.98 KB
/
Copy pathCMakeLists.txt
File metadata and controls
157 lines (144 loc) · 2.98 KB
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
cmake_minimum_required(VERSION 3.16)
project(robot_vision)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Turn off shared libs for apriltag
set(BUILD_SHARED_LIBS OFF)
set(BUILD_EXAMPLES OFF)
set(OpenCV_STATIC ON)
# Loading 3rd party packages
find_package(absl CONFIG REQUIRED)
find_package(protobuf CONFIG REQUIRED)
find_package(gRPC CONFIG REQUIRED)
find_package(OpenCV CONFIG REQUIRED)
# Add third-party library
add_subdirectory(third_party/apriltag)
add_library(
vision_proto
STATIC
data_handling.proto)
target_include_directories(
vision_proto
INTERFACE ${CMAKE_BINARY_DIR})
target_link_libraries(
vision_proto
PUBLIC gRPC::grpc++)
protobuf_generate(
TARGET vision_proto
LANGUAGE cpp)
protobuf_generate(
TARGET vision_proto
LANGUAGE grpc
PLUGIN protoc-gen-grpc=$<TARGET_FILE:gRPC::grpc_cpp_plugin>
GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc)
add_library(
robot_vision
STATIC
camera_handling.cpp
camera.cpp
transformations.cpp
tags.cpp
apriltag_detector.cpp
camera_positions.cpp
cameras.cpp)
target_link_libraries(
robot_vision
PUBLIC
apriltag
opencv_core
opencv_videoio
opencv_calib3d
absl::flags
absl::log)
add_library(
vision_system
STATIC
vision_system.cpp)
target_link_libraries(
vision_system
PUBLIC
opencv_core
absl::flat_hash_map
absl::log
absl::status
absl::statusor
absl::synchronization
vision_proto
robot_vision)
# Camera calibration program
add_executable(
camera_calib
camera_calib.cpp)
target_link_libraries(
camera_calib
PRIVATE
apriltag
${OpenCV_LIBRARIES}
absl::flags
absl::flags_parse
absl::log
robot_vision)
# Local testing of algorithms
add_executable(
test_position_detection
test_position_detection.cpp)
target_link_libraries(
test_position_detection
PRIVATE
apriltag
${OpenCV_LIBRARIES}
absl::log
robot_vision)
add_executable(
generate_transform_matrix
generate_transform_matrix.cpp)
target_link_libraries(
generate_transform_matrix
PRIVATE
${OpenCV_LIBRARIES}
absl::log
robot_vision)
# Vision System server binary
add_executable(
robot_vision_server
server.cpp)
target_link_libraries(
robot_vision_server
PRIVATE
# API definition
vision_proto
# General vision utils
robot_vision
# Vision system controller
vision_system
# External libraries
absl::cleanup
absl::flags
absl::flags_parse)
# Vision system client binary
add_executable(
camera_client
camera_client.cpp)
target_link_libraries(
camera_client
PRIVATE
# API definition
vision_proto
# General vision utils
robot_vision
# External libraries
absl::flags
absl::flags_parse
absl::log
absl::status
apriltag
grpc
opencv_core)
# Testing camera lookup code
add_executable(
find_cameras
find_cameras.cpp)
target_link_libraries(
find_cameras
${OpenCV_LIBRARIES})