imu_stim300
/build/rock-master-18.09-drivers-orogen-imu-stim300-0.20160804/imu_stim300Types.hpp
Go to the documentation of this file.
1 #ifndef STIM300_TYPE_HPP
2 #define STIM300_TYPE_HPP
3 
4 #include <base/Time.hpp>
5 #include <base/Temperature.hpp>
6 #include <base/Eigen.hpp>
7 #include <vector>
8 
9 namespace imu_stim300 {
10 
13 
16 
18  struct Temperature
19  {
20  base::Time time;
21  std::vector<base::Temperature> temp;
22 
23  void resize(int size)
24  {
25  temp.resize(size);
26  }
27 
28  size_t size()
29  {
30  return temp.size();
31  }
32  };
33 
36  {
37  std::string source_frame_name; //Output Frame name. Transformation: source -> target
38 
39  std::string target_frame_name; //Output Frame name. Transformation: source -> target
40 
41  bool use_samples_as_theoretical_gravity;//Inclinometers are more stable than accelerometers at initial time.
42  //They cloud be use as theoretical local gravity value instead of using
43  //some models as WGS-84 ellipsoid Earth.
44  //It will use inclinometers in case use_inclinometers is true
45  //and accelerometers otherwise.
46  bool use_inclinometers;//Some IMU provide inclinometers as fast and more accurate solution for initial leveling.
47  //Set True or False to use inclinometers values or not.
48  //Note: Check if the IMU has inclinometers information.
49 
50  bool use_magnetometers;// Some IMUS provides Magnetic information.
51  // Set to true or false in case you want to correct heading with magnetometers
52 
53  unsigned int initial_alignment_samples;// Number of samples to compute the initial alignment of the imu frame to the local geographic coordinate frame.
54  // This step involves the gravity vector (leveling) and finding the true North (gyrocompassing).
55  //Set to zero in case zero attitude is desired as initial orientation from an arbitrary frame.
56 
57  double correction_frequency; //frequency of the correction step.Set to zero or the same sampling frequency to correct at the same time than predict
58 
59  };
60 
61  //Data type for the Accelerometers measurement characteristic
63  {
64  /********************************/
66  /********************************/
67 
68  double bandwidth; //Inertial sensors bandwidth in Hertz.
69  //This is characteristic of the sensor and should be equal
70  //or smaller than the sampling rate but normaly it should respect Nyquist frequency
71 
73  base::Vector3d biasoffset;//bias offset in static regimen for the Accelerometers
74  base::Vector3d randomwalk;//velocity/ random walk for accelerometers (m/s/sqrt(s))
75  base::Vector3d raterandomwalk;//acceleration random walk for accelerometers (m/s^2/sqrt(s))
76  base::Vector3d biasinstability;//accelerometers bias instability (m/s^2)
77  base::Vector3d resolution;//minimum accelerometers resolution (m/s^2)
78  };
79 
80  //Data type to know the location
82  {
83  double latitude;//Latitude in radians
84  double longitude;//Longitude in radians
85  double altitude;//Altitude in meters
86  double magnetic_declination;//Declination in radians
87  imu_stim300::MAGNETIC_DECLINATION_MODE magnetic_declination_mode;//The declination is positive when the magnetic north is East of true north
88  //EAST means positive declination and WEST means negative declination.
89  double dip_angle;//Dip angle in radians
90  };
91 
94  {
95  unsigned int M1;
96  unsigned int M2;
97  double gamma;
99  void reset()
100  {
101  M1 = 0;
102  M2 = 0;
103  gamma = 0.0;
104  return;
105  }
106 
107  };
108 
109 }
110 
111 #endif
FIRMWARE_REVISIONS
Definition: imu_stim300Types.hpp:12
unsigned int M2
Definition: imu_stim300Types.hpp:96
Definition: imu_stim300Types.hpp:9
Definition: imu_stim300Types.hpp:18
double latitude
Definition: imu_stim300Types.hpp:83
Definition: imu_stim300Types.hpp:62
MAGNETIC_DECLINATION_MODE
Definition: imu_stim300Types.hpp:15
std::string source_frame_name
Definition: imu_stim300Types.hpp:37
base::Vector3d randomwalk
Definition: imu_stim300Types.hpp:74
Definition: imu_stim300Types.hpp:12
bool use_samples_as_theoretical_gravity
Definition: imu_stim300Types.hpp:41
double altitude
Definition: imu_stim300Types.hpp:85
double magnetic_declination
Definition: imu_stim300Types.hpp:86
Definition: imu_stim300Types.hpp:93
double longitude
Definition: imu_stim300Types.hpp:84
double bandwidth
Definition: imu_stim300Types.hpp:68
Definition: imu_stim300Types.hpp:12
unsigned int initial_alignment_samples
Definition: imu_stim300Types.hpp:53
void resize(int size)
Definition: imu_stim300Types.hpp:23
base::Time time
Definition: imu_stim300Types.hpp:20
double gamma
Definition: imu_stim300Types.hpp:97
Definition: imu_stim300Types.hpp:15
Definition: imu_stim300Types.hpp:35
std::vector< base::Temperature > temp
Definition: imu_stim300Types.hpp:21
base::Vector3d biasinstability
Definition: imu_stim300Types.hpp:76
void reset()
Definition: imu_stim300Types.hpp:99
size_t size()
Definition: imu_stim300Types.hpp:28
Definition: imu_stim300Types.hpp:12
Definition: imu_stim300Types.hpp:81
double dip_angle
Definition: imu_stim300Types.hpp:89
bool use_inclinometers
Definition: imu_stim300Types.hpp:46
base::Vector3d resolution
Definition: imu_stim300Types.hpp:77
bool use_magnetometers
Definition: imu_stim300Types.hpp:50
Definition: imu_stim300Types.hpp:12
double correction_frequency
Definition: imu_stim300Types.hpp:57
std::string target_frame_name
Definition: imu_stim300Types.hpp:39
imu_stim300::MAGNETIC_DECLINATION_MODE magnetic_declination_mode
Definition: imu_stim300Types.hpp:87
base::Vector3d raterandomwalk
Definition: imu_stim300Types.hpp:75
unsigned int M1
Definition: imu_stim300Types.hpp:95
base::Vector3d biasoffset
Definition: imu_stim300Types.hpp:73
Definition: imu_stim300Types.hpp:15