blob: 868d5b0ceba9d229964811a26f4362881d05a7c4 [file] [log] [blame]
Filip Kujawa3004f202023-02-12 16:41:40 -08001#include "y2023/vision/game_pieces.h"
2
3#include "aos/events/event_loop.h"
4#include "aos/events/shm_event_loop.h"
5#include "frc971/vision/vision_generated.h"
6
7namespace y2023 {
8namespace vision {
9GamePiecesDetector::GamePiecesDetector(aos::EventLoop *event_loop)
10 : game_pieces_sender_(
11 event_loop->MakeSender<GamePieces>("/camera")) {
12 event_loop->MakeWatcher("/camera", [this](const CameraImage &camera_image) {
13 this->ProcessImage(camera_image);
14 });
15}
16
17void GamePiecesDetector::ProcessImage(const CameraImage &image) {
18 // Param is not used for now.
19 (void)image;
20
21 auto builder = game_pieces_sender_.MakeBuilder();
22
23 auto box_builder = builder.MakeBuilder<Box>();
24 box_builder.add_h(10);
25 box_builder.add_w(20);
26 box_builder.add_x(30);
27 box_builder.add_y(40);
28 auto box_offset = box_builder.Finish();
29
30 auto game_piece_builder = builder.MakeBuilder<GamePiece>();
31 game_piece_builder.add_piece_class(y2023::vision::Class::CONE_DOWN);
32 game_piece_builder.add_box(box_offset);
33 game_piece_builder.add_confidence(0.9);
34 auto game_piece = game_piece_builder.Finish();
35
36 flatbuffers::FlatBufferBuilder fbb;
37 auto game_pieces_vector =
38 fbb.CreateVector(std::vector<flatbuffers::Offset<GamePiece>>{game_piece});
39
40 auto game_pieces_builder = builder.MakeBuilder<GamePieces>();
41 game_pieces_builder.add_game_pieces(game_pieces_vector);
42
43 builder.CheckOk(builder.Send(game_pieces_builder.Finish()));
44}
45
46} // namespace vision
47} // namespace y2023