#include <ros/ros.h>
#include <ros/time.h>
#ifndef TYPE_H
#define TYPE_H

namespace uwb_slam{
struct Imu_data
{
    ros::Time imu_t_;
    double a_[3];
    double g_[3];
    double m_[3];
    Imu_data(){};
    Imu_data(double ax,double ay,double az, double gx, double gy, double gz, double mx, double my, double mz)
    :a_{ax,ay,az},g_{gx,gy,gz},m_{mx,my,mz}{};
};



struct Imu_odom_pose_data
{
    Imu_data imu_data_;
    double pose_[3];
    double quat_[4];
    double vxy_;
    double angle_v_;
    Imu_odom_pose_data(){};
    Imu_odom_pose_data( Imu_data imu_data,double x,double y,double z, double qw, double qx, double qy, double qz,double vxy, double angle_v):imu_data_(imu_data),pose_{x,y,z},quat_{qw,qx,qy,qz},vxy_(vxy),angle_v_(angle_v){};
};

struct  Uwb_data
{
    float x_,y_;
    ros::Time uwb_t_;
    Uwb_data(){};
    Uwb_data(float x,float y,float t):x_(x),y_(y),uwb_t_(t){};
};

struct LightHouseData
{
    float x_,y_,z_;
    float qw_,qx_,qy_,qz_;
    ros::Time lighthouse_t_;
    LightHouseData(){};
    LightHouseData(float x,float y,float z, float qw, float qx, float qy, float qz, float t):
        x_(x),y_(y),z_(z),qw_(qw), qx_(qx), qy_(qy), qz_(qz), lighthouse_t_(t){};
};

}
#endif