blob: 034ecdbc51ddc35b4962532ef9b466278d406416 [file] [log] [blame]
Jim Ostrowskicb8b4082024-01-21 02:23:46 -08001#include "y2024/vision/vision_util.h"
2
Austin Schuh99f7c6a2024-06-25 22:07:44 -07003#include "absl/log/check.h"
4#include "absl/log/log.h"
Jim Ostrowskicb8b4082024-01-21 02:23:46 -08005
6namespace y2024::vision {
7
Jim Ostrowski67726282024-03-24 14:39:33 -07008// Store a list of ordered cameras as you progress around the robot/box of orins
9std::vector<CameraNode> CreateNodeList() {
10 std::vector<CameraNode> list;
11
12 list.push_back({.node_name = "imu", .camera_number = 0});
13 list.push_back({.node_name = "imu", .camera_number = 1});
14 list.push_back({.node_name = "orin1", .camera_number = 1});
15 list.push_back({.node_name = "orin1", .camera_number = 0});
16
17 return list;
18}
19
20// From the node_list, create a numbering scheme from 0 to 3
21std::map<std::string, int> CreateOrderingMap(
22 std::vector<CameraNode> &node_list) {
23 std::map<std::string, int> map;
24
25 for (uint i = 0; i < node_list.size(); i++) {
26 map.insert({node_list.at(i).camera_name(), i});
27 }
28
29 return map;
30}
31
Jim Ostrowskicb8b4082024-01-21 02:23:46 -080032const frc971::vision::calibration::CameraCalibration *FindCameraCalibration(
Jim Ostrowskiddebdcb2024-02-29 22:25:36 -080033 const y2024::Constants &calibration_data, std::string_view node_name,
34 int camera_number) {
James Kuszmaule8f550e2024-05-29 19:39:31 -070035 CHECK(calibration_data.has_cameras());
Jim Ostrowskicb8b4082024-01-21 02:23:46 -080036 for (const y2024::CameraConfiguration *candidate :
James Kuszmaule8f550e2024-05-29 19:39:31 -070037 *calibration_data.cameras()) {
Jim Ostrowskicb8b4082024-01-21 02:23:46 -080038 CHECK(candidate->has_calibration());
Jim Ostrowskiddebdcb2024-02-29 22:25:36 -080039 if (candidate->calibration()->node_name()->string_view() != node_name ||
40 candidate->calibration()->camera_number() != camera_number) {
Jim Ostrowskicb8b4082024-01-21 02:23:46 -080041 continue;
42 }
43 return candidate->calibration();
44 }
Jim Ostrowskiddebdcb2024-02-29 22:25:36 -080045 LOG(FATAL) << ": Failed to find camera calibration for " << node_name
46 << " and camera number " << camera_number;
Jim Ostrowskicb8b4082024-01-21 02:23:46 -080047}
48
49} // namespace y2024::vision