|
orca-robotics INTRODUCTION Overview Download and Install Quick Start Documentation Publications REPOSITORY Interfaces Components Libraries Utilities Software Map DEVELOPER Tutorials Examples Dev Guide Dashboard Wiki login/pass: orca/orca PEOPLE Contributors Users Project Download Mailing lists
|
gpsheuristics.h00001 /* 00002 * Orca Project: Components for robotics 00003 * http://orca-robotics.sf.net/ 00004 * Copyright (c) 2004-2008 Alex Brooks, Alexei Makarenko, Tobias Kaupp 00005 * 00006 * This copy of Orca is licensed to you under the terms described in the 00007 * ORCA_LICENSE file included in this distribution. 00008 * 00009 */ 00010 00011 00012 #ifndef GPS_HEURISTICS_H 00013 #define GPS_HEURISTICS_H 00014 00015 #include <orca/gps.h> 00016 #include <orcaice/orcaice.h> 00017 00018 namespace gps2localise2d { 00019 00020 00021 // 00022 // @brief A bunch of heuristics which are used to discard suspicious GPS frames 00023 // 00024 // @author Tobias Kaupp 00025 // 00026 class GpsHeuristics 00027 { 00028 00029 public: 00030 00031 GpsHeuristics( const orcaice::Context &context, 00032 const double &maxSpeed ); 00033 00034 // Returns true if there are enough satellites 00035 bool haveEnoughSatellites( int numSat ); 00036 00037 // Returns true if we have a valid fix 00038 bool haveValidFix( const orca::GpsPositionType &type ); 00039 00040 // Checks two things: (1) whether the reported speed is consistent with the speed 00041 // calculated based on position diffs, and (2) whether we have 'teleoported' based 00042 // on the maximum speed the vehicle can do 00043 // Returns 0 if ok (both checks pass), 1 if not ok (at least one check fails), and 2 if we can't determine 00044 int checkSpeedAndPosition( const double &northing, 00045 const double &easting, 00046 const double &speedReported, 00047 const orca::Time &timeStamp ); 00048 00049 private: 00050 00051 orcaice::Context context_; 00052 00053 // one-step memory to compute differentials 00054 bool firstTime_; 00055 double lastEasting_; 00056 double lastNorthing_; 00057 orca::Time lastTimeStamp_; 00058 00059 // config variables 00060 double maxSpeed_; 00061 int minNumSatellites_; 00062 double maxTimeDiff_; 00063 double speedDiffFactor_; 00064 00065 void saveData( const double &northing, 00066 const double &easting, 00067 const orca::Time &timeStamp ); 00068 00069 }; 00070 00071 } 00072 00073 #endif |
Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)
1.4.5