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};
170 bool is_extrinsic{
false};
171 bool is_intrinsic{
false};
206 bool is_extrinsic{
false};
227 unsigned int size{g_aug_state_size};
260 void SetState(
const Eigen::VectorXd & state);
273 bool is_extrinsic{
false};
299 typedef std::vector<FeatureTrack> FeatureTracks;
342 void SetState(
const Eigen::VectorXd & state);
355 bool is_extrinsic{
false};
380 void SetState(
const Eigen::VectorXd & state);
398 ImuState & operator+=(
ImuState & l_imu_state,
const Eigen::VectorXd & r_vector);
399 std::map<unsigned int, ImuState> & operator+=(
400 std::map<unsigned int, ImuState> & l_imu_state,
const Eigen::VectorXd & r_vector);
401 std::map<unsigned int, GpsState> & operator+=(
402 std::map<unsigned int, GpsState> & l_gps_state,
const Eigen::VectorXd & r_vector);
403 std::map<unsigned int, CamState> & operator+=(
404 std::map<unsigned int, CamState> & l_cam_state,
const Eigen::VectorXd & r_vector);
405 std::map<unsigned int, FidState> & operator+=(
406 std::map<unsigned int, FidState> & l_fid_state,
const Eigen::VectorXd & r_vector);
407 std::vector<AugState> & operator+=(
408 std::vector<AugState> & l_aug_state,
const Eigen::VectorXd & r_vector);
411 State & operator+=(
State & l_state,
const Eigen::VectorXd & r_vector);
413 enum class GpsInitType
AugState structure.
Definition: types.hpp:213
double time
Augmented frame ID.
Definition: types.hpp:224
Eigen::Quaterniond ang_b_to_l
Augmented IMU orientation.
Definition: types.hpp:226
double alpha
Interpolation Factor.
Definition: types.hpp:229
Eigen::Vector3d pos_b_in_l
Augmented IMU position.
Definition: types.hpp:225
unsigned int index
State index.
Definition: types.hpp:228
unsigned int frame_id
Augmented frame ID.
Definition: types.hpp:223
unsigned int size
State size.
Definition: types.hpp:227
Eigen::VectorXd ToVector() const
Get augmented state as a vector.
Definition: types.cpp:244
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
unsigned 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:236
void SetIsExtrinsic(bool extrinsic)
is_extrinsic setter function
Definition: types.cpp:465
Eigen::Vector3d pos_c_in_b
Camera state position.
Definition: types.hpp:264
double rate
Frame rate.
Definition: types.hpp:267
double ang_stability
Extrinsic orientation stability.
Definition: types.hpp:263
Eigen::Quaterniond ang_c_to_b
Camera state orientation.
Definition: types.hpp:265
Intrinsics intrinsics
Camera Intrinsics.
Definition: types.hpp:266
unsigned int index
State index.
Definition: types.hpp:269
unsigned int size
State size.
Definition: types.hpp:268
double pos_stability
Extrinsic position stability.
Definition: types.hpp:262
Eigen::VectorXd ToVector() const
Get camera state as a vector.
Definition: types.cpp:234
bool GetIsExtrinsic() const
is_extrinsic getter function
Definition: types.cpp:444
void SetState(const Eigen::VectorXd &state)
Setter for state values.
Definition: types.cpp:471
Camera Sensor Class.
Definition: camera.hpp:41
Fiducial state structure.
Definition: types.hpp:318
Eigen::Vector3d pos_f_in_l
Fiducial position in the local frame.
Definition: types.hpp:345
double ang_stability
Fiducial orientation stability.
Definition: types.hpp:348
unsigned int index
State index.
Definition: types.hpp:350
Eigen::VectorXd ToVector() const
Get fiducial state as a vector.
Definition: types.cpp:278
bool GetIsExtrinsic() const
is_extrinsic getter function
Definition: types.cpp:454
unsigned int size
State size.
Definition: types.hpp:349
double pos_stability
Fiducial position stability.
Definition: types.hpp:347
void SetState(const Eigen::VectorXd &state)
Setter for state values.
Definition: types.cpp:514
Eigen::Quaterniond ang_f_to_l
Fiducial position in the local frame.
Definition: types.hpp:346
void SetIsExtrinsic(bool extrinsic)
is_extrinsic setter function
Definition: types.cpp:508
unsigned int frame_id
Fiducial board ID.
Definition: types.hpp:344
GPS Sensor Class.
Definition: gps.hpp:36
GpsState structure.
Definition: types.hpp:178
double pos_stability
Antenna position stability.
Definition: types.hpp:200
void SetIsExtrinsic(bool extrinsic)
is_extrinsic setter function
Definition: types.cpp:477
Eigen::Vector3d pos_a_in_b
Antenna position in body frame.
Definition: types.hpp:199
bool GetIsExtrinsic() const
is_extrinsic getter function
Definition: types.cpp:449
Eigen::VectorXd ToVector() const
Get GPS state as a vector.
Definition: types.cpp:273
unsigned int index
State index.
Definition: types.hpp:202
unsigned int size
State size.
Definition: types.hpp:201
IMU Sensor Class.
Definition: imu.hpp:33
ImuState structure.
Definition: types.hpp:114
void SetIsExtrinsic(bool extrinsic)
is_extrinsic setter function
Definition: types.cpp:459
bool GetIsExtrinsic() const
is_extrinsic getter function
Definition: types.cpp:434
bool GetIsIntrinsic() const
is_intrinsic getter function
Definition: types.cpp:439
unsigned int index
State index.
Definition: types.hpp:164
Eigen::Vector3d omg_bias
Angular rate bias.
Definition: types.hpp:162
Eigen::Vector3d pos_i_in_b
Position.
Definition: types.hpp:159
double ang_stability
Extrinsic orientation stability.
Definition: types.hpp:156
void SetIsIntrinsic(bool intrinsic)
is_intrinsic setter function
Definition: types.cpp:483
double acc_bias_stability
Accelerometer bias stability.
Definition: types.hpp:157
unsigned int size
State size.
Definition: types.hpp:163
Eigen::VectorXd ToVector() const
Get IMU state as a vector.
Definition: types.cpp:254
Eigen::Quaterniond ang_i_to_b
Orientation.
Definition: types.hpp:160
Eigen::Vector3d acc_bias
Acceleration bias.
Definition: types.hpp:161
void SetIntrinsicState(const Eigen::VectorXd &state)
Setter for intrinsic state values.
Definition: types.cpp:428
unsigned int index_intrinsic
Intrinsic state index.
Definition: types.hpp:165
double pos_stability
Extrinsic position stability.
Definition: types.hpp:155
unsigned int index_extrinsic
Extrinsic state index.
Definition: types.hpp:166
double omg_bias_stability
Gyroscope bias stability.
Definition: types.hpp:158
void SetExtrinsicState(const Eigen::VectorXd &state)
Setter for extrinsic state values.
Definition: types.cpp:422
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
cv::Mat ToDistortionVector() const
Generate distortion vector from intrinsics.
Definition: types.cpp:539
double k_1
Radial coefficient 1.
Definition: types.hpp:68
cv::Mat ToCameraMatrix() const
Generate camera matrix from intrinsics.
Definition: types.cpp:526
double width
Image width [px].
Definition: types.hpp:72
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
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:363
std::map< unsigned int, std::vector< AugState > > aug_states
Fiducial states.
Definition: types.hpp:393
unsigned int GetStateSize() const
Get EKF state size.
Definition: types.cpp:386
void SetState(const Eigen::VectorXd &state)
Function to set state using vector.
Definition: types.cpp:347
std::map< unsigned int, CamState > cam_states
Camera states.
Definition: types.hpp:391
std::map< unsigned int, ImuState > imu_states
IMU states.
Definition: types.hpp:389
State()
EKF State constructor.
Definition: types.hpp:368
std::map< unsigned int, GpsState > gps_states
GPS states.
Definition: types.hpp:390
Eigen::VectorXd ToVector() const
Get EKF state as a vector.
Definition: types.cpp:301
BodyState body_state
Body state.
Definition: types.hpp:388
std::map< unsigned int, FidState > fid_states
Fiducial states.
Definition: types.hpp:392
Tracker Class.
Definition: tracker.hpp:31
BoardDetection structure.
Definition: types.hpp:305
unsigned int frame_id
Image frame ID.
Definition: types.hpp:306
Eigen::Vector3d pos_f_in_c
Rotation vector of the board.
Definition: types.hpp:308
Eigen::Vector3d pos_error
Position detection error.
Definition: types.hpp:310
double frame_time
Feature frame time.
Definition: types.hpp:307
Eigen::Vector3d ang_error
Orientation detection error.
Definition: types.hpp:311
Eigen::Quaterniond ang_f_to_c
Translation vector of the board.
Definition: types.hpp:309
FeaturePoint structure.
Definition: types.hpp:280
cv::KeyPoint key_point
Feature track key point.
Definition: types.hpp:283
unsigned int frame_id
Feature track frame ID.
Definition: types.hpp:281
double frame_time
Feature frame time.
Definition: types.hpp:282
FeatureTrack structure.
Definition: types.hpp:290
std::vector< FeaturePoint > track
Vector of tracked feature keypoints.
Definition: types.hpp:291
Eigen::Vector3d true_feature_position
True feature position (sim only)
Definition: types.hpp:293