blob: 2a8031d8721e6553a380cf57aa9e50deeaae0322 [file] [log] [blame]
Austin Schuhf9724442018-10-28 20:30:21 -07001load("@com_google_protobuf//:protobuf.bzl", "cc_proto_library")
Alex Perrycb7da4b2019-08-28 19:35:56 -07002load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
Brian Silverman7a7c24d2018-09-01 17:49:09 -07003load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary", "gtk_dependent_cc_library")
Philipp Schraderdada1072020-11-24 11:34:46 -08004load("//tools:platforms.bzl", "platforms")
Brian Silverman2ccf8c52016-03-15 00:22:26 -04005
Alex Perrycb7da4b2019-08-28 19:35:56 -07006flatbuffer_cc_library(
7 name = "vision_fbs",
Brian Silverman7a7c24d2018-09-01 17:49:09 -07008 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -07009 "vision.fbs",
Brian Silverman7a7c24d2018-09-01 17:49:09 -070010 ],
Alex Perrycb7da4b2019-08-28 19:35:56 -070011 gen_reflections = 1,
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
Austin Schuhf9724442018-10-28 20:30:21 -070016cc_proto_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070017 name = "vision_data",
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
Austin Schuhf9724442018-10-28 20:30:21 -070022cc_proto_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070023 name = "calibration",
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
Brian Silverman7a7c24d2018-09-01 17:49:09 -070028_calibration_values_embedded_before = """
Brian Silverman2ccf8c52016-03-15 00:22:26 -040029#include "y2016/vision/stereo_geometry.h"
30
31#include <string>
32
Austin Schuhf9724442018-10-28 20:30:21 -070033#include "external/com_google_protobuf/src/google/protobuf/text_format.h"
Brian Silverman2ccf8c52016-03-15 00:22:26 -040034
35namespace y2016 {
36namespace vision {
37namespace {
38
Brian Silverman7a7c24d2018-09-01 17:49:09 -070039const ::std::string kEmbeddedContents ="""
Brian Silverman2ccf8c52016-03-15 00:22:26 -040040
Brian Silverman7a7c24d2018-09-01 17:49:09 -070041_calibration_values_embedded_after = """;
Brian Silverman2ccf8c52016-03-15 00:22:26 -040042
43} // namespace
44
45CalibrationFile EmbeddedCalibrationFile() {
46 CalibrationFile r;
47 ::google::protobuf::TextFormat::ParseFromString(kEmbeddedContents, &r);
48 return r;
49}
50
51} // namespace vision
Brian Silverman7a7c24d2018-09-01 17:49:09 -070052} // namespace y2016"""
Brian Silverman2ccf8c52016-03-15 00:22:26 -040053
54genrule(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070055 name = "embed_calibration_pb",
56 srcs = [
57 "calibration.pb",
58 ],
59 outs = [
60 "stereo_geometry_embedded.cc",
61 ],
62 cmd = "\n".join([
63 "echo '%s' > $@" % _calibration_values_embedded_before,
64 "cat $(location :calibration.pb) | sed 's/\"/\\\\\"/g ; s/^/\"/g ; s/$$/\\\\n\"/g' >> $@",
65 "echo '%s' >> $@" % _calibration_values_embedded_after,
66 ]),
Philipp Schraderdada1072020-11-24 11:34:46 -080067 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040068)
69
70cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070071 name = "stereo_geometry",
72 srcs = [
73 "stereo_geometry.cc",
74 "stereo_geometry_embedded.cc",
75 ],
76 hdrs = [
77 "stereo_geometry.h",
78 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080079 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman7a7c24d2018-09-01 17:49:09 -070080 deps = [
81 ":calibration",
John Park33858a32018-09-28 23:05:48 -070082 "//aos/logging",
Brian Silverman7a7c24d2018-09-01 17:49:09 -070083 "//aos/vision/math:vector",
84 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040085)
86
Austin Schuh9d92e6b2017-10-17 01:19:38 -070087cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070088 name = "target_sender",
89 srcs = ["target_sender.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -080090 target_compatible_with = platforms.any_of([
91 "@platforms//cpu:x86_64",
92 "//tools/platforms/hardware:raspberry_pi",
93 ]),
Brian Silverman7a7c24d2018-09-01 17:49:09 -070094 deps = [
95 ":calibration",
96 ":stereo_geometry",
97 ":vision_data",
John Park33858a32018-09-28 23:05:48 -070098 "//aos/logging",
99 "//aos/logging:implementations",
Austin Schuhf9724442018-10-28 20:30:21 -0700100 "//aos/time",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700101 "//aos/vision/events:epoll_events",
102 "//aos/vision/events:socket_types",
103 "//aos/vision/events:udp",
104 "//aos/vision/image:image_stream",
105 "//aos/vision/image:jpeg_routines",
106 "//aos/vision/image:reader",
107 "//y2016/vision:blob_filters",
108 ],
Parker Schuh2cd173d2017-01-28 00:12:01 -0800109)
110
Austin Schuh9d92e6b2017-10-17 01:19:38 -0700111cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700112 name = "blob_filters",
113 srcs = ["blob_filters.cc"],
114 hdrs = ["blob_filters.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800115 target_compatible_with = platforms.any_of([
116 "@platforms//cpu:x86_64",
117 "//tools/platforms/hardware:raspberry_pi",
118 ]),
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700119 visibility = ["//visibility:public"],
120 deps = [
121 "//aos/vision/blob:codec",
122 "//aos/vision/blob:find_blob",
123 "//aos/vision/blob:hierarchical_contour_merge",
124 "//aos/vision/blob:range_image",
125 "//aos/vision/blob:threshold",
126 "//aos/vision/math:segment",
127 "//aos/vision/math:vector",
128 ],
Parker Schuh2cd173d2017-01-28 00:12:01 -0800129)
130
Brian Silverman2ccf8c52016-03-15 00:22:26 -0400131cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700132 name = "target_receiver",
133 srcs = [
134 "target_receiver.cc",
135 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800136 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700137 visibility = ["//visibility:public"],
138 deps = [
139 ":stereo_geometry",
140 ":vision_data",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700141 ":vision_fbs",
Austin Schuhf9724442018-10-28 20:30:21 -0700142 "//aos:init",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700143 "//aos/events:shm_event_loop",
John Park33858a32018-09-28 23:05:48 -0700144 "//aos/logging",
Austin Schuhf9724442018-10-28 20:30:21 -0700145 "//aos/time",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700146 "//aos/vision/events:udp",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700147 "//frc971/control_loops:control_loops_fbs",
148 "//frc971/control_loops/drivetrain:drivetrain_status_fbs",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700149 "//y2016:constants",
150 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -0400151)
Parker Schuhd7db83d2017-02-08 20:49:15 -0800152
153gtk_dependent_cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700154 name = "debug_receiver",
155 srcs = ["debug_receiver.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800156 target_compatible_with = platforms.any_of([
157 "@platforms//cpu:x86_64",
158 "//tools/platforms/hardware:raspberry_pi",
159 ]),
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700160 visibility = ["//visibility:public"],
161 deps = [
162 ":blob_filters",
163 ":calibration",
164 ":stereo_geometry",
165 ":vision_data",
166 "//aos/vision/blob:codec",
167 "//aos/vision/blob:range_image",
168 "//aos/vision/blob:stream_view",
169 "//aos/vision/debug:debug_window",
170 "//aos/vision/events:epoll_events",
171 "//aos/vision/events:gtk_event",
172 "//aos/vision/events:socket_types",
173 "//aos/vision/events:tcp_client",
174 "//aos/vision/image:image_types",
175 "//aos/vision/image:jpeg_routines",
176 ],
Parker Schuhd7db83d2017-02-08 20:49:15 -0800177)