blob: 1220946b639b85dbe3833c0f37541bae1ab018e3 [file] [log] [blame]
Brian Silverman7a7c24d2018-09-01 17:49:09 -07001load("//tools/build_rules:protobuf.bzl", "proto_cc_library")
2load("//aos/build:queues.bzl", "queue_library")
3load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary", "gtk_dependent_cc_library")
Brian Silverman2ccf8c52016-03-15 00:22:26 -04004
5queue_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -07006 name = "vision_queue",
7 srcs = [
8 "vision.q",
9 ],
10 compatible_with = [
11 "//tools:armhf-debian",
12 ],
13 visibility = ["//visibility:public"],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040014)
15
16proto_cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070017 name = "vision_data",
18 src = "vision_data.proto",
19 compatible_with = [
20 "//tools:armhf-debian",
21 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040022)
23
24proto_cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070025 name = "calibration",
26 src = "calibration.proto",
27 compatible_with = [
28 "//tools:armhf-debian",
29 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040030)
31
Brian Silverman7a7c24d2018-09-01 17:49:09 -070032_calibration_values_embedded_before = """
Brian Silverman2ccf8c52016-03-15 00:22:26 -040033#include "y2016/vision/stereo_geometry.h"
34
35#include <string>
36
37#include "third_party/protobuf/src/google/protobuf/text_format.h"
38
39namespace y2016 {
40namespace vision {
41namespace {
42
Brian Silverman7a7c24d2018-09-01 17:49:09 -070043const ::std::string kEmbeddedContents ="""
Brian Silverman2ccf8c52016-03-15 00:22:26 -040044
Brian Silverman7a7c24d2018-09-01 17:49:09 -070045_calibration_values_embedded_after = """;
Brian Silverman2ccf8c52016-03-15 00:22:26 -040046
47} // namespace
48
49CalibrationFile EmbeddedCalibrationFile() {
50 CalibrationFile r;
51 ::google::protobuf::TextFormat::ParseFromString(kEmbeddedContents, &r);
52 return r;
53}
54
55} // namespace vision
Brian Silverman7a7c24d2018-09-01 17:49:09 -070056} // namespace y2016"""
Brian Silverman2ccf8c52016-03-15 00:22:26 -040057
58genrule(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070059 name = "embed_calibration_pb",
60 srcs = [
61 "calibration.pb",
62 ],
63 outs = [
64 "stereo_geometry_embedded.cc",
65 ],
66 cmd = "\n".join([
67 "echo '%s' > $@" % _calibration_values_embedded_before,
68 "cat $(location :calibration.pb) | sed 's/\"/\\\\\"/g ; s/^/\"/g ; s/$$/\\\\n\"/g' >> $@",
69 "echo '%s' >> $@" % _calibration_values_embedded_after,
70 ]),
71 compatible_with = [
72 "//tools:armhf-debian",
73 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040074)
75
76cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070077 name = "stereo_geometry",
78 srcs = [
79 "stereo_geometry.cc",
80 "stereo_geometry_embedded.cc",
81 ],
82 hdrs = [
83 "stereo_geometry.h",
84 ],
85 compatible_with = [
86 "//tools:armhf-debian",
87 ],
88 deps = [
89 ":calibration",
90 "//aos/common/logging",
91 "//aos/vision/math:vector",
92 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -040093)
94
Austin Schuh9d92e6b2017-10-17 01:19:38 -070095cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -070096 name = "target_sender",
97 srcs = ["target_sender.cc"],
98 restricted_to = [
99 "//tools:k8",
100 "//tools:armhf-debian",
101 ],
102 deps = [
103 ":calibration",
104 ":stereo_geometry",
105 ":vision_data",
106 "//aos/common:time",
107 "//aos/common/logging",
108 "//aos/common/logging:implementations",
109 "//aos/vision/events:epoll_events",
110 "//aos/vision/events:socket_types",
111 "//aos/vision/events:udp",
112 "//aos/vision/image:image_stream",
113 "//aos/vision/image:jpeg_routines",
114 "//aos/vision/image:reader",
115 "//y2016/vision:blob_filters",
116 ],
Parker Schuh2cd173d2017-01-28 00:12:01 -0800117)
118
Austin Schuh9d92e6b2017-10-17 01:19:38 -0700119cc_library(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700120 name = "blob_filters",
121 srcs = ["blob_filters.cc"],
122 hdrs = ["blob_filters.h"],
123 restricted_to = [
124 "//tools:k8",
125 "//tools:armhf-debian",
126 ],
127 visibility = ["//visibility:public"],
128 deps = [
129 "//aos/vision/blob:codec",
130 "//aos/vision/blob:find_blob",
131 "//aos/vision/blob:hierarchical_contour_merge",
132 "//aos/vision/blob:range_image",
133 "//aos/vision/blob:threshold",
134 "//aos/vision/math:segment",
135 "//aos/vision/math:vector",
136 ],
Parker Schuh2cd173d2017-01-28 00:12:01 -0800137)
138
Brian Silverman2ccf8c52016-03-15 00:22:26 -0400139cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700140 name = "target_receiver",
141 srcs = [
142 "target_receiver.cc",
143 ],
144 compatible_with = [
145 "//tools:armhf-debian",
146 ],
147 visibility = ["//visibility:public"],
148 deps = [
149 ":stereo_geometry",
150 ":vision_data",
151 ":vision_queue",
152 "//aos/common:mutex",
153 "//aos/common:time",
154 "//aos/common/logging",
155 "//aos/common/logging:queue_logging",
156 "//aos/linux_code:init",
157 "//aos/vision/events:udp",
158 "//frc971/control_loops/drivetrain:drivetrain_queue",
159 "//y2016:constants",
160 ],
Brian Silverman2ccf8c52016-03-15 00:22:26 -0400161)
Parker Schuhd7db83d2017-02-08 20:49:15 -0800162
163gtk_dependent_cc_binary(
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700164 name = "debug_receiver",
165 srcs = ["debug_receiver.cc"],
166 compatible_with = [
167 "//tools:armhf-debian",
168 ],
169 visibility = ["//visibility:public"],
170 deps = [
171 ":blob_filters",
172 ":calibration",
173 ":stereo_geometry",
174 ":vision_data",
175 "//aos/vision/blob:codec",
176 "//aos/vision/blob:range_image",
177 "//aos/vision/blob:stream_view",
178 "//aos/vision/debug:debug_window",
179 "//aos/vision/events:epoll_events",
180 "//aos/vision/events:gtk_event",
181 "//aos/vision/events:socket_types",
182 "//aos/vision/events:tcp_client",
183 "//aos/vision/image:image_types",
184 "//aos/vision/image:jpeg_routines",
185 ],
Parker Schuhd7db83d2017-02-08 20:49:15 -0800186)