#ifndef types_INC #define types_INC #include #define MAXLINE 8192 #define MAXFILENAME 1024 using Eigen::Matrix; using Eigen::Matrix3d; using Eigen::Quaterniond; using Eigen::Vector3d; using Eigen::Vector4d; // A struct for storing measurements. typedef enum {REFLECTION,MONO,HEIGHT} measurement_type; typedef struct { measurement_type z_type; int id; Vector3d source, reflection; } measurement_t; // A struct for storing PVA covariance. typedef struct { Matrix3d position,velocity,attitude; } covariance_t; // A struct for storing x,y,z data. typedef struct { double x,y,z; } tuple; // A struct for storing velocity in world frame typedef struct { double east, north, up; } velocity_t; // A struct for storing attitude data. typedef struct { double roll,pitch,yaw; } attitude_t; // A struct for storing UTM data. typedef struct { double northing,easting,up; int zone_i; char zone_c; } UTM; // A struct for storing GPS data. typedef struct { double latitude, longitude, altitude; } gps; // Message types typedef enum {BESTUTM,IMG,INSCOVS,INSPVAS,RAWIMUS} message_type; /* * The message struct is a general container for all message types. Not all * members are used for all messages, so care must be taken not to use garbage * values. */ typedef struct { int secs,nsecs; } timestamp; typedef struct { // These should always be set. timestamp stamp; message_type msg_type; // Only the members needed by the msg_type are stored. tuple angular_velocity; attitude_t attitude; char image_names[2][MAXFILENAME]; tuple linear_acceleration; gps position; UTM utm; velocity_t velocity; covariance_t covariance; } message; #endif /* ----- #ifndef types_INC ----- */