16 #ifndef EKF__TYPES_HPP_
17 #define EKF__TYPES_HPP_
19 #include <eigen3/Eigen/Eigen>
24 #include "ekf/constants.hpp"
26 #include <opencv2/opencv.hpp>
36 enum class AugmentationType
98 void SetState(
const Eigen::VectorXd & state);
106 unsigned int size{g_body_state_size};
160 bool is_extrinsic{
false};
161 bool is_intrinsic{
false};
196 bool is_extrinsic{
false};
217 unsigned int size{g_aug_state_size};
258 bool is_extrinsic{
false};
284 typedef std::vector<FeatureTrack> FeatureTracks;
335 bool is_extrinsic{
false};
372 ImuState & operator+=(
ImuState & l_imu_state,
const Eigen::VectorXd & r_vector);
373 std::map<unsigned int, ImuState> & operator+=(
374 std::map<unsigned int, ImuState> & l_imu_state,
const Eigen::VectorXd & r_vector);
375 std::map<unsigned int, GpsState> & operator+=(
376 std::map<unsigned int, GpsState> & l_gps_state,
const Eigen::VectorXd & r_vector);
377 std::map<unsigned int, CamState> & operator+=(
378 std::map<unsigned int, CamState> & l_cam_state,
const Eigen::VectorXd & r_vector);
379 std::map<unsigned int, FidState> & operator+=(
380 std::map<unsigned int, FidState> & l_fid_state,
const Eigen::VectorXd & r_vector);
381 std::vector<AugState> & operator+=(
382 std::vector<AugState> & l_augState,
const Eigen::VectorXd & r_vector);
385 State & operator+=(
State & l_state,
const Eigen::VectorXd & r_vector);
387 enum class GpsInitType
AugState structure.
Definition: types.hpp:203
double time
Augmented frame ID.
Definition: types.hpp:214
Eigen::Quaterniond ang_b_to_l
Augmented IMU orientation.
Definition: types.hpp:216
int index
State index.
Definition: types.hpp:218
double alpha
Interpolation Factor.
Definition: types.hpp:219
Eigen::Vector3d pos_b_in_l
Augmented IMU position.
Definition: types.hpp:215
unsigned int size
State size.
Definition: types.hpp:217
Eigen::VectorXd ToVector() const
Get augmented state as a vector.
Definition: types.cpp:244
int frame_id
Augmented frame ID.
Definition: types.hpp:213
BodyState structure.
Definition: types.hpp:81
Eigen::Vector3d ang_vel_b_in_l
Body angular velocity.
Definition: types.hpp:104
void SetState(const Eigen::VectorXd &state)
Function to set state using vector.
Definition: types.cpp:290
Eigen::Vector3d ang_acc_b_in_l
Body angular acceleration.
Definition: types.hpp:105
unsigned int size
State size.
Definition: types.hpp:106
int index
State index.
Definition: types.hpp:107
Eigen::Vector3d vel_b_in_l
Body velocity.
Definition: types.hpp:101
Eigen::Vector3d pos_b_in_l
Body position.
Definition: types.hpp:100
BodyState()
EKF State constructor.
Definition: types.hpp:86
Eigen::Vector3d acc_b_in_l
Body acceleration.
Definition: types.hpp:102
Eigen::VectorXd ToVector() const
Get EKF state as a vector.
Definition: types.cpp:220
Eigen::Quaterniond ang_b_to_l
Body orientation.
Definition: types.hpp:103
CamState structure.
Definition: types.hpp:226
void SetIsExtrinsic(bool extrinsic)
is_extrinsic setter function
Definition: types.cpp:414
Eigen::Vector3d pos_c_in_b
Camera state position.
Definition: types.hpp:249
double rate
Frame rate.
Definition: types.hpp:252
double ang_stability
Extrinsic orientation stability.
Definition: types.hpp:248
Eigen::Quaterniond ang_c_to_b
Camera state orientation.
Definition: types.hpp:250
Intrinsics intrinsics
Camera Intrinsics.
Definition: types.hpp:251
unsigned int size
State size.
Definition: types.hpp:253
double pos_stability
Extrinsic position stability.
Definition: types.hpp:247
Eigen::VectorXd ToVector() const
Get camera state as a vector.
Definition: types.cpp:234
bool GetIsExtrinsic() const
is_extrinsic getter function
Definition: types.cpp:393
int index
State index.
Definition: types.hpp:254
Camera Sensor Class.
Definition: camera.hpp:41
Fiducial state structure.
Definition: types.hpp:303
int index
State index.
Definition: types.hpp:330
Eigen::Vector3d pos_f_in_l
Fiducial position in the local frame.
Definition: types.hpp:325
double ang_stability
Fiducial orientation stability.
Definition: types.hpp:328
Eigen::VectorXd ToVector() const
Get fiducial state as a vector.
Definition: types.cpp:278
bool GetIsExtrinsic() const
is_extrinsic getter function
Definition: types.cpp:403
unsigned int size
State size.
Definition: types.hpp:329
int frame_id
Fiducial board ID.
Definition: types.hpp:324
double pos_stability
Fiducial position stability.
Definition: types.hpp:327
Eigen::Quaterniond ang_f_to_l
Fiducial position in the local frame.
Definition: types.hpp:326
void SetIsExtrinsic(bool extrinsic)
is_extrinsic setter function
Definition: types.cpp:451
GPS Sensor Class.
Definition: gps.hpp:36
GpsState structure.
Definition: types.hpp:168
double pos_stability
Antenna position stability.
Definition: types.hpp:190
void SetIsExtrinsic(bool extrinsic)
is_extrinsic setter function
Definition: types.cpp:420
Eigen::Vector3d pos_a_in_b
Antenna position in body frame.
Definition: types.hpp:189
bool GetIsExtrinsic() const
is_extrinsic getter function
Definition: types.cpp:398
Eigen::VectorXd ToVector() const
Get GPS state as a vector.
Definition: types.cpp:273
int index
State index.
Definition: types.hpp:192
unsigned int size
State size.
Definition: types.hpp:191
IMU Sensor Class.
Definition: imu.hpp:33
ImuState structure.
Definition: types.hpp:114
void SetIsExtrinsic(bool extrinsic)
is_extrinsic setter function
Definition: types.cpp:408
bool GetIsExtrinsic() const
is_extrinsic getter function
Definition: types.cpp:383
bool GetIsIntrinsic() const
is_intrinsic getter function
Definition: types.cpp:388
Eigen::Vector3d omg_bias
Angular rate bias.
Definition: types.hpp:152
Eigen::Vector3d pos_i_in_b
Position.
Definition: types.hpp:149
double ang_stability
Extrinsic orientation stability.
Definition: types.hpp:146
int index
State index.
Definition: types.hpp:154
void SetIsIntrinsic(bool intrinsic)
is_intrinsic setter function
Definition: types.cpp:426
double acc_bias_stability
Accelerometer bias stability.
Definition: types.hpp:147
unsigned int size
State size.
Definition: types.hpp:153
Eigen::VectorXd ToVector() const
Get IMU state as a vector.
Definition: types.cpp:254
int index_intrinsic
Intrinsic state index.
Definition: types.hpp:155
int index_extrinsic
Extrinsic state index.
Definition: types.hpp:156
Eigen::Quaterniond ang_i_to_b
Orientation.
Definition: types.hpp:150
Eigen::Vector3d acc_bias
Acceleration bias.
Definition: types.hpp:151
double pos_stability
Extrinsic position stability.
Definition: types.hpp:145
double omg_bias_stability
Gyroscope bias stability.
Definition: types.hpp:148
Camera intrinsics data structure.
Definition: types.hpp:49
double p_1
Tangential coefficient 1.
Definition: types.hpp:70
double p_2
Tangential coefficient 1.
Definition: types.hpp:71
double k_1
Radial coefficient 1.
Definition: types.hpp:68
double width
Image width [px].
Definition: types.hpp:72
cv::Mat ToDistortionVector()
Generate distortion vector from intrinsics.
Definition: types.cpp:476
double f_y
Y focal length [px].
Definition: types.hpp:67
double f_x
X focal length [px].
Definition: types.hpp:66
double height
Image height [px].
Definition: types.hpp:73
cv::Mat ToCameraMatrix()
Generate camera matrix from intrinsics.
Definition: types.cpp:463
double k_2
Radial coefficient 2.
Definition: types.hpp:69
double pixel_size
Pixel size [mm].
Definition: types.hpp:74
EKF State Class.
Definition: types.hpp:343
std::map< unsigned int, std::vector< AugState > > aug_states
Fiducial states.
Definition: types.hpp:367
unsigned int GetStateSize() const
Get EKF state size.
Definition: types.cpp:347
std::map< unsigned int, CamState > cam_states
Camera states.
Definition: types.hpp:365
std::map< unsigned int, ImuState > imu_states
IMU states.
Definition: types.hpp:363
State()
EKF State constructor.
Definition: types.hpp:348
std::map< unsigned int, GpsState > gps_states
GPS states.
Definition: types.hpp:364
Eigen::VectorXd ToVector() const
Get EKF state as a vector.
Definition: types.cpp:301
BodyState body_state
Body state.
Definition: types.hpp:362
std::map< unsigned int, FidState > fid_states
Fiducial states.
Definition: types.hpp:366
Tracker Class.
Definition: tracker.hpp:31
BoardDetection structure.
Definition: types.hpp:290
Eigen::Vector3d pos_f_in_c
Rotation vector of the board.
Definition: types.hpp:293
Eigen::Vector3d pos_error
Position detection error.
Definition: types.hpp:295
double frame_time
Feature frame time.
Definition: types.hpp:292
int frame_id
Image frame ID.
Definition: types.hpp:291
Eigen::Vector3d ang_error
Orientation detection error.
Definition: types.hpp:296
Eigen::Quaterniond ang_f_to_c
Translation vector of the board.
Definition: types.hpp:294
FeaturePoint structure.
Definition: types.hpp:265
cv::KeyPoint key_point
Feature track key point.
Definition: types.hpp:268
int frame_id
Feature track frame ID.
Definition: types.hpp:266
double frame_time
Feature frame time.
Definition: types.hpp:267
FeatureTrack structure.
Definition: types.hpp:275
std::vector< FeaturePoint > track
Vector of tracked feature keypoints.
Definition: types.hpp:276
Eigen::Vector3d true_feature_position
True feature position (sim only)
Definition: types.hpp:278