blob: 90a258087856246195a1a7063f07388b373b51e5 [file] [log] [blame]
Austin Schuh99f7c6a2024-06-25 22:07:44 -07001#include "absl/flags/flag.h"
2#include "absl/log/check.h"
3
James Kuszmaulfe30a742021-11-13 11:31:00 -08004#include "aos/events/shm_event_loop.h"
5#include "aos/init.h"
6#include "y2020/vision/camera_reader.h"
7
8// config used to allow running camera_reader independently. E.g.,
Austin Schuhc5fa6d92022-02-25 14:36:28 -08009// bazel run //y2020/vision:camera_reader -- --config y2020/aos_config.json
James Kuszmaulfe30a742021-11-13 11:31:00 -080010// --override_hostname pi-7971-1 --ignore_timestamps true
Austin Schuh99f7c6a2024-06-25 22:07:44 -070011ABSL_FLAG(std::string, config, "aos_config.json",
12 "Path to the config file to use.");
Stephan Pleinesf63bde82024-01-13 15:59:33 -080013
14namespace frc971::vision {
James Kuszmaulfe30a742021-11-13 11:31:00 -080015namespace {
16
17void CameraReaderMain() {
18 aos::FlatbufferDetachedBuffer<aos::Configuration> config =
Austin Schuh99f7c6a2024-06-25 22:07:44 -070019 aos::configuration::ReadConfig(absl::GetFlag(FLAGS_config));
James Kuszmaulfe30a742021-11-13 11:31:00 -080020
21 const aos::FlatbufferSpan<sift::TrainingData> training_data(
22 SiftTrainingData());
23 CHECK(training_data.Verify());
24
25 const auto index_params = cv::makePtr<cv::flann::IndexParams>();
26 index_params->setAlgorithm(cvflann::FLANN_INDEX_KDTREE);
27 index_params->setInt("trees", 5);
28 const auto search_params =
29 cv::makePtr<cv::flann::SearchParams>(/* checks */ 50);
30 cv::FlannBasedMatcher matcher(index_params, search_params);
31
32 aos::ShmEventLoop event_loop(&config.message());
33
34 // First, log the data for future reference.
35 {
36 aos::Sender<sift::TrainingData> training_data_sender =
37 event_loop.MakeSender<sift::TrainingData>("/camera");
38 CHECK_EQ(training_data_sender.Send(training_data),
39 aos::RawSender::Error::kOk);
40 }
41
42 V4L2Reader v4l2_reader(&event_loop, "/dev/video0");
43 CameraReader camera_reader(&event_loop, &training_data.message(),
44 &v4l2_reader, index_params, search_params);
45
46 event_loop.Run();
47}
48
49} // namespace
Stephan Pleinesf63bde82024-01-13 15:59:33 -080050} // namespace frc971::vision
James Kuszmaulfe30a742021-11-13 11:31:00 -080051
52int main(int argc, char **argv) {
53 aos::InitGoogle(&argc, &argv);
54 frc971::vision::CameraReaderMain();
55}