NDEVR
API Documentation
GPSTypes.h
1#pragma once
2#include <NDEVR/Vertex.h>
3#if _WIN32
4#pragma warning( push )
5#pragma warning( disable : 4127)
6#include <Eigen/Core>
7#include <Eigen/Geometry>
8#pragma warning( pop )
9
10namespace NDEVR
11{
16 class GlobalPosition
17 {
18 protected:
19 GlobalPosition()
20 {}
24 GlobalPosition(int id, double timestamp)
25 : timestamp(timestamp)
26 , id(id)
27 {}
28
29 public:
30 virtual ~GlobalPosition() {}
34 virtual Eigen::Vector3d getRelativeFromOrigin(const GlobalPosition& origin) const = 0;
36 virtual Eigen::MatrixXd getCovariance() const = 0;
37 double timestamp;
38 int id;
39 };
44 class GpsMeasurement : public GlobalPosition
45 {
46 public:
47 GpsMeasurement() {}
56 GpsMeasurement(const int id, const double& latitude, const double& longitude, const double& altitude, const double& timestamp, const Eigen::Matrix3d& covariance, const Eigen::Vector3d noise = Eigen::Vector3d(0., 0., 0.)) :
57 GlobalPosition(id, timestamp), lat_lon_location(latitude, longitude, altitude), noise(noise), covariance(covariance) {}
58 Vertex<3, fltp08> lat_lon_location;
59 Eigen::Vector3d noise;
60 Eigen::Matrix3d covariance;
61
62 Eigen::Vector3d getRelativeFromOrigin(const GlobalPosition& origin) const override;
63 Eigen::MatrixXd getCovariance() const override;
64
65 };
66
71 class MocapMeasurement : public GlobalPosition
72 {
73 public:
74 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
75
76 MocapMeasurement() {}
89 MocapMeasurement(const int id,
90 const double& x, const double& y, const double& z,
91 const double& qx, const double& qy, const double& qz,
92 const double& qw, const double& timestamp,
93 const Eigen::Matrix3d& covariance,
94 const Eigen::Vector3d noise = Eigen::Vector3d(0., 0., 0.))
95 : GlobalPosition(id, timestamp)
96 , noise(noise)
97 , covariance(covariance)
98 {
99 position = Eigen::Vector3d(x, y, z);
100 rotation = Eigen::Quaterniond(qw, qx, qy, qz);
101 }
102 Eigen::Vector3d position;
103 Eigen::Quaterniond rotation;
104 Eigen::Vector3d noise;
105 Eigen::Matrix3d covariance;
106 Eigen::Vector3d getRelativeFromOrigin(const GlobalPosition& origin) const override;
107 Eigen::MatrixXd getCovariance() const override;
108 };
112 class GPSCalib
113 {
114 public:
117 GPSCalib(const Eigen::Vector3f& tbg)
118 : tbg(tbg)
119 , mbIsSet(true)
120 {}
121 GPSCalib()
122 : mbIsSet(false)
123 {}
124 public:
125 Eigen::Vector3f tbg;
126 bool mbIsSet;
127 };
128}
129#endif
The primary namespace for the NDEVR SDK.