blob: fed16c3e21f4aaf112e6f22140d11359026939bc [file] [log] [blame]
Adam Snaider13d48d92023-08-03 12:20:15 -07001load("@rules_cc//cc:defs.bzl", "cc_proto_library")
2load("@rules_proto//proto:defs.bzl", "proto_library")
Alex Perrycb7da4b2019-08-28 19:35:56 -07003load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
Philipp Schradercc016b32021-12-30 08:59:58 -08004load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary")
Philipp Schraderdada1072020-11-24 11:34:46 -08005load("//tools:platforms.bzl", "platforms")
Brian Silverman2ccf8c52016-03-15 00:22:26 -04006
Alex Perrycb7da4b2019-08-28 19:35:56 -07007flatbuffer_cc_library(
8 name = "vision_fbs",
Brian Silverman7a7c24d2018-09-01 17:49:09 -07009 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -070010 "vision.fbs",
Brian Silverman7a7c24d2018-09-01 17:49:09 -070011 ],
Alex Perrycb7da4b2019-08-28 19:35:56 -070012 gen_reflections = 1,
Philipp Schraderdada1072020-11-24 11:34:46 -080013 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman7a7c24d2018-09-01 17:49:09 -070014 visibility = ["//visibility:public"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040015)
16
Adam Snaider13d48d92023-08-03 12:20:15 -070017proto_library(
18 name = "vision_data_proto",
Austin Schuhf9724442018-10-28 20:30:21 -070019 srcs = ["vision_data.proto"],
Philipp Schraderdada1072020-11-24 11:34:46 -080020 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040021)
22
Adam Snaider13d48d92023-08-03 12:20:15 -070023proto_library(
24 name = "calibration_proto",
Austin Schuhf9724442018-10-28 20:30:21 -070025 srcs = ["calibration.proto"],
Philipp Schraderdada1072020-11-24 11:34:46 -080026 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040027)
28
Adam Snaider13d48d92023-08-03 12:20:15 -070029cc_proto_library(
30 name = "vision_data",
31 target_compatible_with = ["@platforms//os:linux"],
32 deps = ["vision_data_proto"],
33)
34
35cc_proto_library(
36 name = "calibration",
37 target_compatible_with = ["@platforms//os:linux"],
38 deps = ["calibration_proto"],
39)
40
Brian Silverman7a7c24d2018-09-01 17:49:09 -070041_calibration_values_embedded_before = """
Brian Silverman2ccf8c52016-03-15 00:22:26 -040042#include "y2016/vision/stereo_geometry.h"
43
44#include <string>
45
Austin Schuhf9724442018-10-28 20:30:21 -070046#include "external/com_google_protobuf/src/google/protobuf/text_format.h"
Brian Silverman2ccf8c52016-03-15 00:22:26 -040047
48namespace y2016 {
49namespace vision {
50namespace {
51
Brian Silverman7a7c24d2018-09-01 17:49:09 -070052const ::std::string kEmbeddedContents ="""
Brian Silverman2ccf8c52016-03-15 00:22:26 -040053
Brian Silverman7a7c24d2018-09-01 17:49:09 -070054_calibration_values_embedded_after = """;
Brian Silverman2ccf8c52016-03-15 00:22:26 -040055
56} // namespace
57
58CalibrationFile EmbeddedCalibrationFile() {
59 CalibrationFile r;
60 ::google::protobuf::TextFormat::ParseFromString(kEmbeddedContents, &r);
61 return r;
62}
63
64} // namespace vision
Brian Silverman7a7c24d2018-09-01 17:49:09 -070065} // namespace y2016"""
Brian Silverman2ccf8c52016-03-15 00:22:26 -040066
67genrule(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070068 name = "embed_calibration_pb",
69 srcs = [
70 "calibration.pb",
71 ],
72 outs = [
73 "stereo_geometry_embedded.cc",
74 ],
75 cmd = "\n".join([
76 "echo '%s' > $@" % _calibration_values_embedded_before,
77 "cat $(location :calibration.pb) | sed 's/\"/\\\\\"/g ; s/^/\"/g ; s/$$/\\\\n\"/g' >> $@",
78 "echo '%s' >> $@" % _calibration_values_embedded_after,
79 ]),
Philipp Schraderdada1072020-11-24 11:34:46 -080080 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040081)
82
83cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070084 name = "stereo_geometry",
85 srcs = [
86 "stereo_geometry.cc",
87 "stereo_geometry_embedded.cc",
88 ],
89 hdrs = [
90 "stereo_geometry.h",
91 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080092 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman7a7c24d2018-09-01 17:49:09 -070093 deps = [
94 ":calibration",
John Park33858a32018-09-28 23:05:48 -070095 "//aos/logging",
Brian Silverman7a7c24d2018-09-01 17:49:09 -070096 "//aos/vision/math:vector",
97 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040098)
99
Austin Schuh9d92e6b2017-10-17 01:19:38 -0700100cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700101 name = "target_sender",
102 srcs = ["target_sender.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800103 target_compatible_with = platforms.any_of([
104 "@platforms//cpu:x86_64",
105 "//tools/platforms/hardware:raspberry_pi",
106 ]),
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700107 deps = [
108 ":calibration",
109 ":stereo_geometry",
110 ":vision_data",
John Park33858a32018-09-28 23:05:48 -0700111 "//aos/logging",
Austin Schuhf9724442018-10-28 20:30:21 -0700112 "//aos/time",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700113 "//aos/vision/events:epoll_events",
114 "//aos/vision/events:socket_types",
115 "//aos/vision/events:udp",
116 "//aos/vision/image:image_stream",
117 "//aos/vision/image:jpeg_routines",
118 "//aos/vision/image:reader",
119 "//y2016/vision:blob_filters",
120 ],
Parker Schuh2cd173d2017-01-28 00:12:01 -0800121)
122
Austin Schuh9d92e6b2017-10-17 01:19:38 -0700123cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700124 name = "blob_filters",
125 srcs = ["blob_filters.cc"],
126 hdrs = ["blob_filters.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800127 target_compatible_with = platforms.any_of([
128 "@platforms//cpu:x86_64",
129 "//tools/platforms/hardware:raspberry_pi",
130 ]),
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700131 visibility = ["//visibility:public"],
132 deps = [
133 "//aos/vision/blob:codec",
134 "//aos/vision/blob:find_blob",
135 "//aos/vision/blob:hierarchical_contour_merge",
136 "//aos/vision/blob:range_image",
137 "//aos/vision/blob:threshold",
138 "//aos/vision/math:segment",
139 "//aos/vision/math:vector",
140 ],
Parker Schuh2cd173d2017-01-28 00:12:01 -0800141)
142
Brian Silverman2ccf8c52016-03-15 00:22:26 -0400143cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700144 name = "target_receiver",
145 srcs = [
146 "target_receiver.cc",
147 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800148 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700149 visibility = ["//visibility:public"],
150 deps = [
151 ":stereo_geometry",
152 ":vision_data",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700153 ":vision_fbs",
Austin Schuhf9724442018-10-28 20:30:21 -0700154 "//aos:init",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700155 "//aos/events:shm_event_loop",
John Park33858a32018-09-28 23:05:48 -0700156 "//aos/logging",
Austin Schuhf9724442018-10-28 20:30:21 -0700157 "//aos/time",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700158 "//aos/vision/events:udp",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700159 "//frc971/control_loops:control_loops_fbs",
160 "//frc971/control_loops/drivetrain:drivetrain_status_fbs",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700161 "//y2016:constants",
162 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -0400163)
Parker Schuhd7db83d2017-02-08 20:49:15 -0800164
165gtk_dependent_cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700166 name = "debug_receiver",
167 srcs = ["debug_receiver.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800168 target_compatible_with = platforms.any_of([
169 "@platforms//cpu:x86_64",
170 "//tools/platforms/hardware:raspberry_pi",
171 ]),
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700172 visibility = ["//visibility:public"],
173 deps = [
174 ":blob_filters",
175 ":calibration",
176 ":stereo_geometry",
177 ":vision_data",
178 "//aos/vision/blob:codec",
179 "//aos/vision/blob:range_image",
180 "//aos/vision/blob:stream_view",
181 "//aos/vision/debug:debug_window",
182 "//aos/vision/events:epoll_events",
183 "//aos/vision/events:gtk_event",
184 "//aos/vision/events:socket_types",
185 "//aos/vision/events:tcp_client",
186 "//aos/vision/image:image_types",
187 "//aos/vision/image:jpeg_routines",
188 ],
Parker Schuhd7db83d2017-02-08 20:49:15 -0800189)