Aria
2.8.0
|
GPS subclass to support the NovAtel ProPak G2 and other NovAtel "OEM4" devices. More...
#include <ArNovatelGPS.h>
Inherits ArGPS.
Inherited by ArNovatelSPAN [virtual]
.
Protected Member Functions | |
void | handleNovatelGPGGA (ArNMEAParser::Message msg) |
virtual bool | initDevice () |
![]() | |
void | handleGPGGA (ArNMEAParser::Message msg) |
void | handleGPGSA (ArNMEAParser::Message msg) |
void | handleGPGST (ArNMEAParser::Message msg) |
void | handleGPGSV (ArNMEAParser::Message msg) |
void | handleGPMSS (ArNMEAParser::Message msg) |
void | handleGPRMC (ArNMEAParser::Message msg) |
void | handleHCHDx (ArNMEAParser::Message msg) |
void | handlePGRME (ArNMEAParser::Message msg) |
void | handlePGRMZ (ArNMEAParser::Message msg) |
void | parseGPRMC (const ArNMEAParser::Message &msg, double &latitudeResult, double &longitudeResult, bool &qualityFlagResult, bool &gotPosition, ArTime &timeGotPositionResult, ArTime &gpsTimestampResult, bool &gotSpeedResult, double &speedResult) |
Parse a GPRMC message (in msg) and place results in provided variables. More... | |
bool | readFloatFromString (const std::string &str, double *target, double(*convf)(double)=NULL) const |
bool | readFloatFromStringVec (const std::vector< std::string > *vec, size_t i, double *target, double(*convf)(double)=NULL) const |
bool | readTimeFromString (const std::string &s, ArTime *time) const |
bool | readUShortFromString (const std::string &str, unsigned short *target, unsigned short(*convf)(unsigned short)=NULL) const |
bool | readUShortFromStringVec (const std::vector< std::string > *vec, size_t i, unsigned short *target, unsigned short(*convf)(unsigned short)=NULL) const |
bool | waitForData (unsigned long timeout) |
Block until data is read from GPS. More... | |
Protected Attributes | |
ArFunctor1C< ArNovatelGPS, ArNMEAParser::Message > | myNovatelGPGGAHandler |
![]() | |
ArArgumentParser * | myArgParser |
bool | myCreatedOwnDeviceCon |
Data | myData |
ArDeviceConnection * | myDevice |
ArFunctor1C< ArGPS, ArNMEAParser::Message > | myGPGGAHandler |
ArFunctor1C< ArGPS, ArNMEAParser::Message > | myGPGSAHandler |
ArFunctor1C< ArGPS, ArNMEAParser::Message > | myGPGSTHandler |
ArFunctor1C< ArGPS, ArNMEAParser::Message > | myGPGSVHandler |
ArFunctor1C< ArGPS, ArNMEAParser::Message > | myGPMSSHandler |
ArFunctor1C< ArGPS, ArNMEAParser::Message > | myGPRMCHandler |
ArFunctor1C< ArGPS, ArNMEAParser::Message > | myHCHDxHandler |
ArMutex | myMutex |
ArNMEAParser | myNMEAParser |
ArRetFunctorC< bool, ArGPS > | myParseArgsCallback |
ArFunctor1C< ArGPS, ArNMEAParser::Message > | myPGRMEHandler |
ArFunctor1C< ArGPS, ArNMEAParser::Message > | myPGRMZHandler |
unsigned short | mySNRNum |
unsigned int | mySNRSum |
Additional Inherited Members | |
![]() | |
enum | { ReadFinished = ArNMEAParser::ParseFinished, ReadError = ArNMEAParser::ParseError, ReadData = ArNMEAParser::ParseData, ReadUpdated = ArNMEAParser::ParseUpdated } |
Flags to indicates what the read() method did. More... | |
enum | FixType { NoFix, BadFix, GPSFix, DGPSFix, PPSFix, RTKinFix, FloatRTKinFix, DeadReckFix, ManualFix, SimulatedFix, UnknownFixType, OmnistarConverging = FloatRTKinFix, OmnistarConverged = RTKinFix } |
Data accessors. More... | |
![]() | |
void | addNMEAHandler (const char *message, ArNMEAParser::Handler *handler) |
Set a handler for an NMEA message. More... | |
bool | blockingConnect (unsigned long connectTimeout=20000) |
Same as connect(). More... | |
virtual bool | connect (unsigned long connectTimeout=20000) |
Check that the device connection (e.g. More... | |
double | getAltimeter () const |
Some receivers may have an additional altitude from an altimiter (meters above sea level) (from PGRMZ, if receiver provides it) | |
double | getAltitude () const |
Altitude above sea level (meters), calculated from satellite positions (see also getAltimiter()) (from NMEA GPGGA, if provided) | |
double | getAltitudeError () const |
Standard deviation of altitude error, meters. (from NMEA GPGST, if provided) | |
unsigned short | getBeaconChannel () const |
DGPS stationary beacon channel (from NMEA GPMSS) | |
double | getBeaconFreq () const |
DGPS stationary beacon frequency (kHz) (from NMEA GPMSS) | |
double | getBeaconSignalStrength () const |
DGPS stationary beacon signal strength (dB) (from NMEA GPMSS) | |
double | getBeaconSNR () const |
DGPS stationary beacon signal to noise (dB) (from NMEA GPMSS) | |
unsigned short | getBecaonBPS () const |
DGPS stationary beacon bitrate (bits per second) (from NMEA GPMSS) | |
double | getCompassHeadingMag () const |
Heading from magnetic north. More... | |
double | getCompassHeadingTrue () const |
Heading from true north. More... | |
const ArGPS::Data & | getCurrentDataRef () const |
Access all of the internally stored data directly. More... | |
ArDeviceConnection * | getDeviceConnection () const |
Return device connection in use (or NULL if none) | |
unsigned short | getDGPSStationID () const |
(from NMEA GPGGA) | |
ArPose | getErrorEllipse () const |
Standard deviation of position error (latitude and longitude), meters. More... | |
FixType | getFixType () const |
(from NMEA GPGGA) | |
const char * | getFixTypeName () const |
(from NMEA GPGGA) | |
double | getGarminPositionError () const |
GPS device's error estimation in meters (from a Garmin-specific message PGRME, most GPS receivers will not provide this) | |
double | getGarminVerticalPositionError () const |
ArTime | getGPSPositionTimestamp () const |
Timestamp provided by GPS device along with position. More... | |
double | getHDOP () const |
(from NMEA GPGGA) | |
double | getInputsRMS () const |
(from NMEA GPGST) | |
double | getLatitude () const |
double | getLatitudeError () const |
Standard deviation of latitude and longitude error, meters. More... | |
ArPose | getLatLonError () const |
Standard deviation of latitude and longitude error, meters. More... | |
double | getLongitude () const |
double | getLongitudeError () const |
Standard deviation of latitude and longitude error, meters. More... | |
double | getMeanSNR () const |
dB (from NMEA GPGSV) | |
int | getNumSatellitesTracked () const |
double | getPDOP () const |
(from NMEA GPGGA) | |
double | getSpeed () const |
ArTime | getTimeReceivedPosition () const |
double | getVDOP () const |
(from NMEA GPGGA) | |
bool | haveAltimeter () const |
Some receivers may have an additional altitude from an altimiter (meters above sea level) (from PGRMZ, if receiver provides it) | |
bool | haveAltitude () const |
Altitude above sea level calculated from satellite positions (see also haveAltimiter()) (from NMEA GPGGA, if provided) | |
bool | haveAltitudeError () const |
bool | haveBeaconInfo () const |
Whether we have any DGPS stationary beacon info (from NMEA GPMSS) | |
bool | haveCompassHeadingMag () const |
Have a compass heading value relative to magnetic north. More... | |
bool | haveCompassHeadingTrue () const |
Have a compass heading value relative to true north (using GPS/compass device's configured declination). More... | |
bool | haveDGPSStation () const |
(from NMEA GPGGA) | |
bool | haveErrorEllipse () const |
Whether we have a position error estimate (as standard deviations in latitude and longitude) (from NMEA GPGST) | |
bool | haveGarminPositionError () const |
bool | haveGarminVerticalPositionError () const |
bool | haveHDOP () const |
(from NMEA GPGGA) | |
bool | haveInputsRMS () const |
(from NMEA GPGST) | |
bool | haveLatitude () const |
(from NMEA GPRMC) | |
bool | haveLatLonError () const |
Whether we have latitude or longitude error estimates (from NMEA GPGST) | |
bool | haveLongitude () const |
(from NMEA GPRMC) | |
bool | havePDOP () const |
(from NMEA GPGGA) | |
bool | havePosition () const |
(from NMEA GPRMC) | |
bool | haveSNR () const |
(from NMEA GPGSV) | |
bool | haveSpeed () const |
(from NMEA GPRMC) | |
bool | haveVDOP () const |
(from NMEA GPGGA) | |
void | lock () |
Locks a mutex object contained by this class. More... | |
void | logData () const |
Log last received data using ArLog. | |
void | printData (bool labels=true) const |
Print basic navigation data on one line to standard output, with no newline at end. | |
void | printDataLabelsHeader () const |
virtual int | read (unsigned long maxTime=0) |
Read some data from the device connection, and update stored data as complete messages are received. More... | |
int | readWithLock (unsigned int maxTime) |
Calls lock(), calls read(maxTime), then calls unlock(). More... | |
void | removeNMEAHandler (const char *message) |
void | replaceNMEAHandler (const char *message, ArNMEAParser::Handler *handler) |
void | setCompassHeadingMag (double val) |
Manually set compass value. | |
void | setCompassHeadingMagWithLock (double val) |
Manually set compass value. | |
void | setCompassHeadingTrue (double val) |
Manually set compass value. | |
void | setCompassHeadingTrueWithLock (double val) |
Manually set compass value. | |
void | setDeviceConnection (ArDeviceConnection *deviceConn) |
Set device connection to use. | |
void | setIgnoreChecksum (bool ignore) |
Set whether checksum sent with NMEA messages is ignored. | |
void | unlock () |
Unlocks a mutex object contained by this class. More... | |
![]() | |
static const char * | getFixTypeName (FixType type) |
![]() | |
enum ArGPS:: { ... } | ReadFlags |
Flags to indicates what the read() method did. More... | |
![]() | |
static double | feetToMeters (double f) |
static double | gpsDegminToDegrees (double degmin) |
static double | knotsToMPS (double knots) |
static double | metersToFeet (double m) |
static double | mpsToMph (const double mps) |
Convert meters per second to miles per hour. | |
GPS subclass to support the NovAtel ProPak G2 and other NovAtel "OEM4" devices.
This subclass overrides initDevice() to send initialization commands specific to NovAtel GPS devices. On connect, it initiazes SBAS (satellite-based augmentation) to "auto", which uses WAAS, EGNOS, or MSAS if available, and then requests NMEA messages to be interpreted by ArGPS.
It does not initialize corrections sent by your own DGPS fixed base station over radio, or the wide-area L-Band services such as OmniStar or the Canada-wide DGPS (supported by the NovaTel ProPak LBplus). To configure DGPS, you must connect to the GPS with a terminal program (e.g. "minicom" in Linux), configure the device for your specific service, region and radio settings, and save with the "saveconfig" command. See the GPS setup notes at http://robots.mobilerobots.com/tech_notes/GPS_Setup_Notes.txt and the NovAtel GPS Reference Manual Volume 1, Sections 4.3 and 4.5 for ("Transmitting and Receiving Corrections" and "Enabling L-Band Positioning") for more information on doing this.