Austin Schuh | dcb6b36 | 2022-02-25 18:06:21 -0800 | [diff] [blame] | 1 | #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 | |
| 8 | namespace frc971 { |
| 9 | namespace vision { |
| 10 | |
| 11 | struct 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 | |
| 30 | void Solve(const CalibrationData &data, |
| 31 | CalibrationParameters *calibration_parameters); |
| 32 | |
| 33 | void Plot(const CalibrationData &data, |
| 34 | const CalibrationParameters &calibration_parameters); |
| 35 | |
| 36 | } // namespace vision |
| 37 | } // namespace frc971 |
| 38 | |
| 39 | #endif // FRC971_VISION_EXTRINSICS_CALIBRATION_H_ |