Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef HECTOR_POSE_ESTIMATION_GLOBAL_REFERENCE_H
00030 #define HECTOR_POSE_ESTIMATION_GLOBAL_REFERENCE_H
00031
00032 #include <hector_pose_estimation/parameters.h>
00033
00034 namespace hector_pose_estimation {
00035
00036 class PoseEstimation;
00037
00038 class GlobalReference {
00039 public:
00040 struct Position {
00041 Position() : latitude(0.0), longitude(0.0), altitude(0.0) {}
00042 double latitude;
00043 double longitude;
00044 double altitude;
00045 };
00046
00047 struct Heading {
00048 Heading() : value(0.0), cos(1.0), sin(0.0) {}
00049 double value;
00050 double cos;
00051 double sin;
00052 operator double() const { return value; }
00053 };
00054
00055 struct Radius {
00056 Radius() : north(0.0), east(0.0) {}
00057 double north;
00058 double east;
00059 };
00060
00061 const Position& position() const { return position_; }
00062 const Heading& heading() const { return heading_; }
00063 const Radius& radius() const { return radius_; }
00064
00065 GlobalReference& setPosition(double latitude, double longitude, bool quiet = false);
00066 GlobalReference& setHeading(double heading, bool quiet = false);
00067 GlobalReference& setAltitude(double altitude, bool quiet = false);
00068
00069 GlobalReference& setCurrentPosition(PoseEstimation& estimator, double latitude, double longitude);
00070 GlobalReference& setCurrentHeading(PoseEstimation& estimator, double heading);
00071 GlobalReference& setCurrentAltitude(PoseEstimation& estimator, double altitude);
00072
00073 bool hasPosition() const { return has_position_; }
00074 bool hasHeading() const { return has_heading_; }
00075 bool hasAltitude() const { return has_altitude_; }
00076
00077 void fromWGS84(double latitude, double longitude, double &x, double &y);
00078 void toWGS84(double x, double y, double &latitude, double &longitude);
00079 void fromNorthEast(double north, double east, double &x, double &y);
00080 void toNorthEast(double x, double y, double &north, double &east);
00081
00082 GlobalReference();
00083 ParameterList& parameters();
00084
00085 void updated();
00086 void reset();
00087
00088 private:
00089 Position position_;
00090 Heading heading_;
00091 Radius radius_;
00092
00093 bool has_position_;
00094 bool has_heading_;
00095 bool has_altitude_;
00096
00097 ParameterList parameters_;
00098 };
00099
00100 }
00101
00102 #endif // HECTOR_POSE_ESTIMATION_GLOBAL_REFERENCE_H