Ocean
Ocean::Devices::GPSTracker Class Reference

This class is the base class for all gps tracker objects. More...

Inheritance diagram for Ocean::Devices::GPSTracker:

Data Structures

class  GPSTrackerSample
 Definition of a sample holding GPS measurements. More...
 
class  Location
 This class implements a container for a GPS location. More...
 

Public Types

typedef std::vector< LocationLocations
 Definition of a vector holding GPS data values. More...
 
typedef SmartObjectRef< GPSTrackerSample, SampleGPSTrackerSampleRef
 Definition of a smart object reference for GPS tracker samples. More...
 
- Public Types inherited from Ocean::Devices::Tracker
enum  TrackerType : uint32_t {
  TRACKER_INVALID = MINOR_INVALID , TRACKER_ORIENTATION_3DOF = (1u << 0u) , TRACKER_POSITION_3DOF = (1u << 1u) , TRACKER_6DOF = TRACKER_ORIENTATION_3DOF | TRACKER_POSITION_3DOF ,
  SCENE_TRACKER_6DOF = (1u << 2u) | TRACKER_6DOF , TRACKER_GPS = (1u << 3u) , TRACKER_MAGNETIC = (1u << 4u) , TRACKER_VISUAL = (1u << 5u) ,
  TRACKER_OBJECT = (1u << 6u)
}
 Definition of different minor device types. More...
 
enum  ReferenceSystem { RS_OBJECT_IN_DEVICE , RS_DEVICE_IN_OBJECT }
 Definition of different tracking reference system. More...
 
typedef float Frequency
 Definition of a tracker frequency in Hz. More...
 
typedef SmartObjectRef< TrackerSample, SampleTrackerSampleRef
 Definition of a smart object reference for tracker samples. More...
 
typedef Callback< void, const Tracker *, const bool, const ObjectIdSet &, const Timestamp & > TrackerObjectCallback
 Definition of a callback function to subscribe for lost and found tracker events. More...
 
- Public Types inherited from Ocean::Devices::Measurement
enum  InterpolationStrategy { IS_INVALID , IS_TIMESTAMP_NEAREST , IS_TIMESTAMP_INTERPOLATE }
 Definition of individual interpolation strategies for samples. More...
 
typedef unsigned int ObjectId
 Definition of an object id. More...
 
typedef std::vector< ObjectIdObjectIds
 Definition of a vector holding object ids. More...
 
typedef std::unordered_set< ObjectIdObjectIdSet
 Definition of an unordered set holding object ids. More...
 
typedef std::unordered_map< std::string, ValueMetadata
 Definition of an unordered map mapping keys to values. More...
 
typedef ObjectRef< SampleSampleRef
 Definition of an object reference for samples. More...
 
typedef Callback< void, const Measurement *, const SampleRef & > SampleCallback
 Definition of a callback function to subscribe for new measurement sample events. More...
 
- Public Types inherited from Ocean::Devices::Device
enum  MajorType : uint32_t { DEVICE_INVALID = 0u , DEVICE_MEASUREMENT = (1u << 0u) , DEVICE_SENSOR = (1u << 1u) | DEVICE_MEASUREMENT , DEVICE_TRACKER = (1u << 2u) | DEVICE_MEASUREMENT }
 Definition of all major device types. More...
 
enum  MinorType : uint32_t { MINOR_INVALID = 0u }
 Base definition of a minor type. More...
 

Static Public Member Functions

static DeviceType deviceTypeGPSTracker ()
 Returns the device type of this tracker. More...
 
static bool parseGPSLocation (const std::string &gpsString, double &latitude, double &longitude, double *altitude=nullptr)
 Parses a string with a GPS location. More...
 
static bool decodePolyline (const std::string &polyline, const unsigned int precision, Locations &locations, const bool unescapeBackslash=false)
 Decodes all GPS locations from a polyline. More...
 
static double approximatedDistanceBetweenLocations (const Location &locationA, const Location &locationB, const double earthRadius=6378135.0)
 Calculates the distance between two GPS locations in meters, the location's latitude is not considered. More...
 
- Static Public Member Functions inherited from Ocean::Devices::Tracker
static std::string translateTrackerType (const TrackerType trackerType)
 Translates the tracker type to a readable string. More...
 
static TrackerType translateTrackerType (const std::string &trackerType)
 Translates the tracker type from a readable string to a value. More...
 
static constexpr Frequency unknownFrequency ()
 Definition of a constant as unknown frequency. More...
 
- Static Public Member Functions inherited from Ocean::Devices::Measurement
static constexpr ObjectId invalidObjectId ()
 Returns an invalid object id. More...
 
- Static Public Member Functions inherited from Ocean::Devices::Device
static std::string translateMajorType (const MajorType majorType)
 Translates the major devices type to a readable string. More...
 
static MajorType translateMajorType (const std::string &majorType)
 Translates the major devices type from a readable string to a value. More...
 

Protected Member Functions

 GPSTracker (const std::string &name)
 Creates a new GPS tracker object. More...
 
 ~GPSTracker () override
 Destructs a GPS tracker object. More...
 
- Protected Member Functions inherited from Ocean::Devices::Tracker
 Tracker (const std::string &name, const DeviceType type)
 Creates a new tracker object. More...
 
 ~Tracker () override
 Destructs a tracker object. More...
 
void postFoundTrackerObjects (const ObjectIdSet &objectIds, const Timestamp &timestamp)
 Posts a new found tracker objects event. More...
 
void postLostTrackerObjects (const ObjectIdSet &objectIds, const Timestamp &timestamp)
 Posts a new lost tracker objects event. More...
 
void unsubscribeTrackerObjectEvent (const SubscriptionId subscriptionId)
 Unsubscribes a tracker object event callback function. More...
 
- Protected Member Functions inherited from Ocean::Devices::Measurement
 Measurement (const std::string &name, const DeviceType type)
 Creates a new measurement object. More...
 
 ~Measurement () override
 Destructs a measurement object. More...
 
void postNewSample (const SampleRef &newSample)
 Posts a new measurement sample. More...
 
ObjectId addUniqueObjectId (const std::string &description)
 Creates a unique object id for a new object (e.g., a tracking object like an image, a marker, or a location). More...
 
void unsubscribeSampleEvent (const SubscriptionId subscriptionId)
 Unsubscribes a sample event callback function. More...
 
- Protected Member Functions inherited from Ocean::Devices::Device
 Device (const Device &device)=delete
 Disabled copy constructor. More...
 
 Device (const std::string &name, const DeviceType type)
 Creates a new device by is name. More...
 
virtual ~Device ()
 Destructs a device. More...
 
Deviceoperator= (const Device &device)=delete
 Disabled copy operator. More...
 

Static Protected Member Functions

static bool decodePolylineValue (const std::string &polyline, size_t &position, int32_t &integerValue, const bool unescapeBackslash)
 Decodes one value from a polyline. More...
 
- Static Protected Member Functions inherited from Ocean::Devices::Tracker
static ObjectIdSet determineFoundObjects (const ObjectIdSet &previousObjects, const ObjectIdSet &currentObjects)
 Determines the ids which were not tracked in the previous iteration but tracked in the current iteration. More...
 
static ObjectIdSet determineLostObjects (const ObjectIdSet &previousObjects, const ObjectIdSet &currentObjects)
 Determines the ids which were tracked in the previous iteration but not tracked in the current iteration. More...
 
- Static Protected Member Functions inherited from Ocean::Devices::Device
static constexpr SubscriptionId invalidSubscriptionId ()
 Returns an invalid subscription id. More...
 

Additional Inherited Members

- Public Member Functions inherited from Ocean::Devices::Tracker
virtual Frequency frequency () const
 Returns the frequency of this tracker. More...
 
virtual bool isObjectTracked (const ObjectId &objectId) const
 Returns whether a specific object is currently actively tracked by this tracker. More...
 
TrackerObjectEventSubscription subscribeTrackerObjectEvent (TrackerObjectCallback &&callback)
 Subscribes a callback event function for tracker object (found or lost) events. More...
 
virtual HomogenousMatrixD4 reference () const
 Returns the reference coordinate system of this tracker. More...
 
- Public Member Functions inherited from Ocean::Devices::Measurement
size_t sampleCapacity () const
 Returns the capacity of the internal sample container. More...
 
bool setSampleCapacity (const size_t capacity)
 Sets the capacity of the internal sample container. More...
 
virtual SampleRef sample () const
 Returns the most recent sample. More...
 
virtual SampleRef sample (const Timestamp timestamp) const
 Returns the sample with a specific timestamp. More...
 
virtual SampleRef sample (const Timestamp &timestamp, const InterpolationStrategy interpolationStrategy) const
 Returns the sample best matching with a specified timestamp. More...
 
SampleEventSubscription subscribeSampleEvent (SampleCallback &&callback)
 Subscribes a callback event function for new measurement sample events. More...
 
ObjectId objectId (const std::string &description) const
 Returns the object id for an object description. More...
 
Strings objectDescriptions () const
 Returns descriptions of all objects currently available. More...
 
std::string objectDescription (const ObjectId objectId) const
 Returns the description of one object of this measurement. More...
 
- Public Member Functions inherited from Ocean::Devices::Device
const std::string & name () const
 Returns the name of this device. More...
 
virtual const std::string & library () const =0
 Returns the name of the owner library. More...
 
virtual bool isStarted () const
 Returns whether this device is active. More...
 
bool isValid () const
 Returns whether this device is valid. More...
 
bool isExclusive () const
 Returns whether this device can be use exclusively. More...
 
virtual bool start ()
 Starts the device. More...
 
virtual bool pause ()
 Pauses the device. More...
 
virtual bool stop ()
 Stops the device. More...
 
virtual bool setParameter (const std::string &parameter, const Value &value)
 Sets an abstract parameter of this device. More...
 
virtual bool parameter (const std::string &parameter, Value &value)
 Returns an abstract parameter of this device. More...
 
DeviceType type () const
 Returns the major and minor type of this device. More...
 
- Protected Types inherited from Ocean::Devices::Tracker
typedef std::unordered_map< SubscriptionId, TrackerObjectCallbackTrackerObjectSubscriptionMap
 Definition of a map mapping subscription ids to tracker object event callback functions. More...
 
- Protected Types inherited from Ocean::Devices::Measurement
typedef std::map< Timestamp, SampleRefSampleMap
 Definition of a map holding the most recent samples. More...
 
typedef std::unordered_map< std::string, ObjectIdObjectDescriptionToIdMap
 Definition of an unordered map mapping descriptions to unique object ids. More...
 
typedef std::unordered_map< ObjectId, std::string > ObjectIdToDescriptionMap
 Definition of an unordered map mapping unique object ids to descriptions. More...
 
typedef std::unordered_map< SubscriptionId, SampleCallbackSampleSubscriptionMap
 Definition of a map mapping subscription ids to event sample callback functions. More...
 
- Protected Types inherited from Ocean::Devices::Device
typedef unsigned int SubscriptionId
 Definition of a subscription id for event callbacks. More...
 
- Protected Attributes inherited from Ocean::Devices::Tracker
TrackerObjectSubscriptionMap trackerObjectSubscriptionMap_
 Map holding all tracker object event subscriptions. More...
 
SubscriptionId nextTrackerObjectSubscriptionId_ = SubscriptionId(invalidSubscriptionId() + 1u)
 The subscription id of the next event subscription. More...
 
- Protected Attributes inherited from Ocean::Devices::Measurement
Lock samplesLock_
 Sample lock. More...
 
Lock subscriptionLock_
 Subscription lock. More...
 
- Protected Attributes inherited from Ocean::Devices::Device
std::string deviceName
 Name of this device. More...
 
DeviceType deviceType
 Major and minor type of this device. More...
 
bool deviceIsValid
 Flag determining whether this device is valid. More...
 
Lock deviceLock
 Device lock. More...
 

Detailed Description

This class is the base class for all gps tracker objects.

Member Typedef Documentation

◆ GPSTrackerSampleRef

Definition of a smart object reference for GPS tracker samples.

◆ Locations

Definition of a vector holding GPS data values.

Constructor & Destructor Documentation

◆ GPSTracker()

Ocean::Devices::GPSTracker::GPSTracker ( const std::string &  name)
explicitprotected

Creates a new GPS tracker object.

Parameters
nameThe name of the gps tracker

◆ ~GPSTracker()

Ocean::Devices::GPSTracker::~GPSTracker ( )
overrideprotected

Destructs a GPS tracker object.

Member Function Documentation

◆ approximatedDistanceBetweenLocations()

static double Ocean::Devices::GPSTracker::approximatedDistanceBetweenLocations ( const Location locationA,
const Location locationB,
const double  earthRadius = 6378135.0 
)
static

Calculates the distance between two GPS locations in meters, the location's latitude is not considered.

The resulting distance is an approximation based on a perfect sphere.

Parameters
locationAThe first GPS location, must be valid
locationBThe second GPS location, must be valid
earthRadiusThe radius of the earth in meter, with range (0, infinity)
Returns
The approximated distance between both locations, in meter, with range [0, earthRadius * PI]

◆ decodePolyline()

static bool Ocean::Devices::GPSTracker::decodePolyline ( const std::string &  polyline,
const unsigned int  precision,
Locations locations,
const bool  unescapeBackslash = false 
)
static

Decodes all GPS locations from a polyline.

Polyline encoding is a lossy compression algorithm that allows you to store a series of coordinates as a single string.
More details: https://developers.google.com/maps/documentation/utilities/polylinealgorithm

Parameters
polylineThe polyline to decode, must be valid
precisionThe precision of decimal places the given polyline has, with range [1, 8]
locationsThe resulting individual locations
unescapeBackslashTrue, to unescape two consecutive backslash in the polyline to one backslash; False, to use the polyline as it is
Returns
True, if succeeded

◆ decodePolylineValue()

static bool Ocean::Devices::GPSTracker::decodePolylineValue ( const std::string &  polyline,
size_t &  position,
int32_t &  integerValue,
const bool  unescapeBackslash 
)
staticprotected

Decodes one value from a polyline.

Parameters
polylineThe polyline from which the value will be decoded, must be valid
positionThe current position within the polyline, will be moved to the next value position, with range [0, polyline.length() - 1]
integerValueThe resulting value with integer precision (not yet normalized)
unescapeBackslashTrue, to unescape two consecutive backslash in the polyline to one backslash; False, to use the polyline as it is
Returns
True, if succeeded
See also
decodePolyline().

◆ deviceTypeGPSTracker()

GPSTracker::DeviceType Ocean::Devices::GPSTracker::deviceTypeGPSTracker ( )
inlinestatic

Returns the device type of this tracker.

Returns
Device type

◆ parseGPSLocation()

static bool Ocean::Devices::GPSTracker::parseGPSLocation ( const std::string &  gpsString,
double &  latitude,
double &  longitude,
double *  altitude = nullptr 
)
static

Parses a string with a GPS location.

The given string must have one of the following patterns:

GPS Location {latitude}, {longitude}
GPS Location {latitude}, {longitude}, {altitude}
e.g.,
GPS Location 37.48507, -122.14829
GPS Location 37.48507, -122.14829, 10.0
Parameters
gpsStringThe string to be parsed
latitudeThe resulting latitude value
longitudeThe resulting longitude value
altitudeOptional resulting altitude; nullptr to not allow an altitude value in a valid input string
Returns
True, if succeeded; Also True, if the 'altitude' parameter is not nullptr but no altitude value is present in 'gpsString'

The documentation for this class was generated from the following file: