blob: f1925a60648b98713761d6f9280b705d776048bb [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")
Philipp Schradercc016b32021-12-30 08:59:58 -08003load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary")
James Kuszmaulf01da392023-12-14 11:22:14 -08004load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
Philipp Schraderdada1072020-11-24 11:34:46 -08005load("//tools:platforms.bzl", "platforms")
Brian Silverman2ccf8c52016-03-15 00:22:26 -04006
James Kuszmaulf01da392023-12-14 11:22:14 -08007static_flatbuffer(
Alex Perrycb7da4b2019-08-28 19:35:56 -07008 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 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080012 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman7a7c24d2018-09-01 17:49:09 -070013 visibility = ["//visibility:public"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040014)
15
Adam Snaider13d48d92023-08-03 12:20:15 -070016proto_library(
17 name = "vision_data_proto",
Austin Schuhf9724442018-10-28 20:30:21 -070018 srcs = ["vision_data.proto"],
Philipp Schraderdada1072020-11-24 11:34:46 -080019 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040020)
21
Adam Snaider13d48d92023-08-03 12:20:15 -070022proto_library(
23 name = "calibration_proto",
Austin Schuhf9724442018-10-28 20:30:21 -070024 srcs = ["calibration.proto"],
Philipp Schraderdada1072020-11-24 11:34:46 -080025 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040026)
27
Adam Snaider13d48d92023-08-03 12:20:15 -070028cc_proto_library(
29 name = "vision_data",
30 target_compatible_with = ["@platforms//os:linux"],
31 deps = ["vision_data_proto"],
32)
33
34cc_proto_library(
35 name = "calibration",
36 target_compatible_with = ["@platforms//os:linux"],
37 deps = ["calibration_proto"],
38)
39
Brian Silverman7a7c24d2018-09-01 17:49:09 -070040_calibration_values_embedded_before = """
Brian Silverman2ccf8c52016-03-15 00:22:26 -040041#include "y2016/vision/stereo_geometry.h"
42
43#include <string>
44
Austin Schuhf9724442018-10-28 20:30:21 -070045#include "external/com_google_protobuf/src/google/protobuf/text_format.h"
Brian Silverman2ccf8c52016-03-15 00:22:26 -040046
47namespace y2016 {
48namespace vision {
49namespace {
50
Brian Silverman7a7c24d2018-09-01 17:49:09 -070051const ::std::string kEmbeddedContents ="""
Brian Silverman2ccf8c52016-03-15 00:22:26 -040052
Brian Silverman7a7c24d2018-09-01 17:49:09 -070053_calibration_values_embedded_after = """;
Brian Silverman2ccf8c52016-03-15 00:22:26 -040054
55} // namespace
56
57CalibrationFile EmbeddedCalibrationFile() {
58 CalibrationFile r;
59 ::google::protobuf::TextFormat::ParseFromString(kEmbeddedContents, &r);
60 return r;
61}
62
63} // namespace vision
Brian Silverman7a7c24d2018-09-01 17:49:09 -070064} // namespace y2016"""
Brian Silverman2ccf8c52016-03-15 00:22:26 -040065
66genrule(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070067 name = "embed_calibration_pb",
68 srcs = [
69 "calibration.pb",
70 ],
71 outs = [
72 "stereo_geometry_embedded.cc",
73 ],
74 cmd = "\n".join([
75 "echo '%s' > $@" % _calibration_values_embedded_before,
76 "cat $(location :calibration.pb) | sed 's/\"/\\\\\"/g ; s/^/\"/g ; s/$$/\\\\n\"/g' >> $@",
77 "echo '%s' >> $@" % _calibration_values_embedded_after,
78 ]),
Philipp Schraderdada1072020-11-24 11:34:46 -080079 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040080)
81
82cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070083 name = "stereo_geometry",
84 srcs = [
85 "stereo_geometry.cc",
86 "stereo_geometry_embedded.cc",
87 ],
88 hdrs = [
89 "stereo_geometry.h",
90 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080091 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman7a7c24d2018-09-01 17:49:09 -070092 deps = [
93 ":calibration",
John Park33858a32018-09-28 23:05:48 -070094 "//aos/logging",
Brian Silverman7a7c24d2018-09-01 17:49:09 -070095 "//aos/vision/math:vector",
96 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040097)
98
Austin Schuh9d92e6b2017-10-17 01:19:38 -070099cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700100 name = "target_sender",
101 srcs = ["target_sender.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800102 target_compatible_with = platforms.any_of([
103 "@platforms//cpu:x86_64",
104 "//tools/platforms/hardware:raspberry_pi",
105 ]),
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700106 deps = [
107 ":calibration",
108 ":stereo_geometry",
109 ":vision_data",
John Park33858a32018-09-28 23:05:48 -0700110 "//aos/logging",
Austin Schuhf9724442018-10-28 20:30:21 -0700111 "//aos/time",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700112 "//aos/vision/events:epoll_events",
113 "//aos/vision/events:socket_types",
114 "//aos/vision/events:udp",
115 "//aos/vision/image:image_stream",
116 "//aos/vision/image:jpeg_routines",
117 "//aos/vision/image:reader",
118 "//y2016/vision:blob_filters",
119 ],
Parker Schuh2cd173d2017-01-28 00:12:01 -0800120)
121
Austin Schuh9d92e6b2017-10-17 01:19:38 -0700122cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700123 name = "blob_filters",
124 srcs = ["blob_filters.cc"],
125 hdrs = ["blob_filters.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800126 target_compatible_with = platforms.any_of([
127 "@platforms//cpu:x86_64",
128 "//tools/platforms/hardware:raspberry_pi",
129 ]),
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700130 visibility = ["//visibility:public"],
131 deps = [
132 "//aos/vision/blob:codec",
133 "//aos/vision/blob:find_blob",
134 "//aos/vision/blob:hierarchical_contour_merge",
135 "//aos/vision/blob:range_image",
136 "//aos/vision/blob:threshold",
137 "//aos/vision/math:segment",
138 "//aos/vision/math:vector",
139 ],
Parker Schuh2cd173d2017-01-28 00:12:01 -0800140)
141
Brian Silverman2ccf8c52016-03-15 00:22:26 -0400142cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700143 name = "target_receiver",
144 srcs = [
145 "target_receiver.cc",
146 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800147 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700148 visibility = ["//visibility:public"],
149 deps = [
150 ":stereo_geometry",
151 ":vision_data",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700152 ":vision_fbs",
Austin Schuhf9724442018-10-28 20:30:21 -0700153 "//aos:init",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700154 "//aos/events:shm_event_loop",
John Park33858a32018-09-28 23:05:48 -0700155 "//aos/logging",
Austin Schuhf9724442018-10-28 20:30:21 -0700156 "//aos/time",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700157 "//aos/vision/events:udp",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700158 "//frc971/control_loops:control_loops_fbs",
159 "//frc971/control_loops/drivetrain:drivetrain_status_fbs",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700160 "//y2016:constants",
161 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -0400162)
Parker Schuhd7db83d2017-02-08 20:49:15 -0800163
164gtk_dependent_cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700165 name = "debug_receiver",
166 srcs = ["debug_receiver.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800167 target_compatible_with = platforms.any_of([
168 "@platforms//cpu:x86_64",
169 "//tools/platforms/hardware:raspberry_pi",
170 ]),
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700171 visibility = ["//visibility:public"],
172 deps = [
173 ":blob_filters",
174 ":calibration",
175 ":stereo_geometry",
176 ":vision_data",
177 "//aos/vision/blob:codec",
178 "//aos/vision/blob:range_image",
179 "//aos/vision/blob:stream_view",
180 "//aos/vision/debug:debug_window",
181 "//aos/vision/events:epoll_events",
182 "//aos/vision/events:gtk_event",
183 "//aos/vision/events:socket_types",
184 "//aos/vision/events:tcp_client",
185 "//aos/vision/image:image_types",
186 "//aos/vision/image:jpeg_routines",
187 ],
Parker Schuhd7db83d2017-02-08 20:49:15 -0800188)