blob: 9d6c7047e4a5a69eb6891edb9be20b8825b969f9 [file] [log] [blame]
Austin Schuhdcb6b362022-02-25 18:06:21 -08001#ifndef FRC971_VISION_EXTRINSICS_CALIBRATION_H_
2#define FRC971_VISION_EXTRINSICS_CALIBRATION_H_
3
4#include "Eigen/Dense"
5#include "Eigen/Geometry"
6#include "frc971/vision/calibration_accumulator.h"
7
8namespace frc971 {
9namespace vision {
10
11struct CalibrationParameters {
12 Eigen::Quaternion<double> initial_orientation =
13 Eigen::Quaternion<double>::Identity();
14 Eigen::Quaternion<double> imu_to_camera =
15 Eigen::Quaternion<double>::Identity();
16 Eigen::Quaternion<double> board_to_world =
17 Eigen::Quaternion<double>::Identity();
18
19 Eigen::Vector3d gyro_bias = Eigen::Vector3d::Zero();
20 Eigen::Matrix<double, 6, 1> initial_state =
21 Eigen::Matrix<double, 6, 1>::Zero();
22 Eigen::Matrix<double, 3, 1> imu_to_camera_translation =
23 Eigen::Matrix<double, 3, 1>::Zero();
24
25 double gravity_scalar = 1.0;
26 Eigen::Matrix<double, 3, 1> accelerometer_bias =
27 Eigen::Matrix<double, 3, 1>::Zero();
28};
29
30void Solve(const CalibrationData &data,
31 CalibrationParameters *calibration_parameters);
32
33void Plot(const CalibrationData &data,
34 const CalibrationParameters &calibration_parameters);
35
36} // namespace vision
37} // namespace frc971
38
39#endif // FRC971_VISION_EXTRINSICS_CALIBRATION_H_