Public Types | Public Member Functions | Static Public Member Functions | Private Attributes
datatypes::Object Class Reference

#include <Object.hpp>

List of all members.

Public Types

enum  ObjectClassification {
  Unclassified = 0, UnknownSmall = 1, UnknownBig = 2, Pedestrian = 3,
  Bike = 4, Car = 5, Truck = 6, Structure_Pylon = 7,
  Structure_Beacon = 8, Structure_GuardRail = 9, Structure_ConcreteBarrier = 10, NumClasses,
  Unknown = 15
}

Public Member Functions

void addContourPoint (const Point2D cp)
const Point2DgetAbsoluteVelocity () const
const Point2DgetAbsoluteVelocitySigma () const
const Point2DgetBoundingBox () const
const Point2DgetBoundingBoxCenter () const
Box2D getBox () const
const Point2DgetCenterPoint () const
const Point2DgetCenterPointSigma () const
ObjectClassification getClassification () const
UINT32 getClassificationAge () const
double getClassificationQuality () const
const Point2DgetClosestPoint () const
const Polygon2DgetContourPoints () const
double getCourseAngle () const
double getCourseAngleSigma () const
UINT16 getFlags () const
UINT16 getHiddenStatusAge () const
double getMaxAbsoluteVelocity () const
double getMeanAbsoluteVelocity () const
double getNormalizedMeanPointDist () const
UINT32 getObjectAge () const
const Point2DgetObjectBox () const
const Point2DgetObjectBoxSigma () const
void getObjectBoxVarCovar (double &var_x, double &var_y, double &covar_xy) const
double getObjectHeight () const
double getObjectHeightSigma () const
UINT16 getObjectId () const
double getObjectMass () const
const Point2DgetRelativeVelocity () const
const Point2DgetRelativeVelocitySigma () const
std::streamsize getSerializedSize (UINT32 version) const
 Size of the serialized representation of this object.
const TimegetTimestamp () const
double getTotalTrackedPathLength () const
double getTotalTrackingDuration () const
const UINT32 getUsedMemory () const
UINT64 getVehicleWLANid () const
void incrementObjectAge ()
 Just increment objectAge by one.
bool isHiddenStatus () const
bool isValid () const
 Object ()
bool operator== (const Object &other) const
 Equality predicate.
void setAbsoluteVelocity (const Point2D &v)
void setAbsoluteVelocitySigma (const Point2D &v)
void setBoundingBox (const Point2D &v)
void setBoundingBoxCenter (const Point2D &v)
void setCenterPoint (const Point2D &v)
void setCenterPointSigma (const Point2D &v)
void setClassification (ObjectClassification v)
void setClassificationAge (UINT32 v)
void setClassificationQuality (double v)
void setClosestPoint (const Point2D &v)
void setContourPoints (const Polygon2D &v)
void setCourseAngle (double newCourseAngle)
void setCourseAngleSigma (double v)
void setFlags (UINT16 v)
void setHiddenStatusAge (UINT16 v)
void setMaxAbsoluteVelocity (double v)
void setNormalizedMeanPointDist (double v)
void setObjectAge (UINT32 v)
void setObjectBox (const Point2D &v)
void setObjectBoxSigma (const Point2D &v)
void setObjectHeight (double v)
void setObjectHeightSigma (double v)
void setObjectId (UINT16 v)
void setObjectMass (double v)
void setRelativeVelocity (const Point2D &v)
void setRelativeVelocitySigma (const Point2D &v)
void setTimestamp (const Time &v)
void setTotalTrackedPathLength (double v)
void setTotalTrackingDuration (double v)
void setValid (bool newValue=true)
void setVehicleWLANid (UINT64 v)
std::string toString () const
 ~Object ()

Static Public Member Functions

static const char * objectClassificationToShortString (ObjectClassification v)
 Returns the given classification value as a short string.
static const char * objectClassificationToString (ObjectClassification v)
 Returns the given classification value as a string.
static std::string objectClassificationToStringWithNum (ObjectClassification v)
 Returns the given classification value as a string with the integer number included.
static Object::ObjectClassification stringToObjectClassification (const std::string &s)

Private Attributes

Point2D m_absoluteVelocity
 Velocity of this object [meter/seconds] as absolute velocity; the orientation is relative to the vehicle coordinate system.
Point2D m_absoluteVelocitySigma
Point2D m_boundingBox
 A rectangle in parallel to the vehicle coordinate system (a paraxial rectangle) that contains (bounds) all of this object's points.
Point2D m_boundingBoxCenter
 Center of the bounding box.
Point2D m_centerPoint
 Center point of object rectangle, given in Vehicle coordinate system.
Point2D m_centerPointSigma
ObjectClassification m_classification
 The object class that is most likely for this object.
UINT32 m_classificationAge
 Counts how long the object has been classified in the current classification.
double m_classificationQuality
 The quality of the current classification.
Point2D m_closestPoint
 The point of this object that is closest to the origin of the vehicle coordinate system.
Polygon2D m_contourPoints
 A poly-line that describes the outline of the current object measurement.
double m_courseAngle
 named by ISO 8855; also called Orientation or Heading [rad]
double m_courseAngleSigma
UINT16 m_flags
 reserved
UINT16 m_hiddenStatusAge
 Counts how long the object has not been observed but only predicted.
bool m_isValid
double m_maxAbsoluteVelocity
 Classification feature: The maximum observed absolute velocity [m/s].
double m_normalizedMeanPointDist
UINT32 m_objectAge
 number of scans in which this object has been tracked, or instead time?
Point2D m_objectBox
 The object's length and width as a rectangle, relative to the object's coordinate system.
Point2D m_objectBoxSigma
double m_objectHeight
 The height of this object in [m] (most probably received through WLAN data).
double m_objectHeightSigma
 The standard deviation of the height of this object in [m] (most probably received through WLAN data).
UINT16 m_objectId
double m_objectMass
 The mass of this object in [kilogram] (as received e.g. through WLAN data)
Point2D m_relativeVelocity
 Velocity of this object [meter/seconds], relative to the vehicle coordinate system.
Point2D m_relativeVelocitySigma
Time m_timestamp
 Time of when the center point of this object was observed.
double m_totalTrackedPathLength
double m_totalTrackingDuration
UINT64 m_vehicleWLANid
 An identifier to be used by WLAN fusion algorithms.

Detailed Description

This class contains all that is known about objects in the environmental model: Object position, velocity, course angle, and classification.

objectcoords.png
Tracked object at position A, Course Angle Psi, Velocity vector vh, and Size sx, xy

The available information about each object is shown in the figure above. The host vehicle's axis system is X, Y with the origin at H. The center point A of the object is given in the host vehicle's axis system X, Y by getCenterPoint(). (In exact ISO 8855 terminology, the used axis system X,Y is the host vehicle's "intermediate axis system")

The orientation of the object is given by the course angle Psi ( $\psi$) by getCourseAngle(), which is the angle from the host vehicle's X axis to the object's Xo axis. Other names for this angle are the "object's yaw angle" $\psi$ or heading or orientation. This defines the object's axis system Xo, Yo.

The velocity of the object is given by the velocity vector vh ( $v_h$) by getAbsoluteVelocity(), which gives the object's velocity specified in the host vehicle's axis system. (In exact ISO 8855 terminology, the vector vh is the object's "horizontal velocity".)

The size of the object is given by the side lengths sx, sy of the rectangle in the object's axis system by getObjectBox(). Position, orientation, and size are given altogether by getBox().

(Note: In exact ISO 8855 terminology, the object's axis system Xo,Yo might point into a slightly different direction than the velocity vector, in which case $v_h$ is rotated from X_o by the sideslip angle $\beta$. The rotation of the velocity vector compared to the host vehicle's axis system, the course angle $\nu$, is then given by $\nu=\psi+\beta$. However, depending on the used tracking algorithms the sideslip angle is neglected and $\nu=\psi$, so there should be no difference between the course angle and the yaw angle.)

Note: The current Laserscanner tracking algorithms can fill in only a subset of the data fields that exist in this class. But those additional data fields are needed as soon as we deal with data fusion from WLAN data sources. Since those fusion algorithms are of importance to our algorithms as well, we already have reserved the member variables for those fields.

Internal note to self: For the next revision one might consider adding the following data fields:

Definition at line 78 of file Object.hpp.


Member Enumeration Documentation

Enumerator:
Unclassified 
UnknownSmall 
UnknownBig 
Pedestrian 
Bike 
Car 
Truck 
Structure_Pylon 
Structure_Beacon 
Structure_GuardRail 
Structure_ConcreteBarrier 
NumClasses 
Unknown 

Definition at line 81 of file Object.hpp.


Constructor & Destructor Documentation

Definition at line 13 of file Object.cpp.

Definition at line 48 of file Object.cpp.


Member Function Documentation

Definition at line 194 of file Object.cpp.

Returns the velocity vector ("Geschwindigkeitsvektor") of this object in [meter/seconds] as absolute value. The orientation is relative to our vehicle's coordinate system.

Definition at line 247 of file Object.hpp.

Returns the velocity vector standard deviation (i.e. the uncertainty) of this object in [meter/seconds], absolute.

Definition at line 253 of file Object.hpp.

const Point2D& datatypes::Object::getBoundingBox ( ) const [inline]

Returns the size of a rectangle around the object's/bounding box center point that contains (bounds) all of this object's scanpoints, in parallel to our vehicle's coordinate system axis (also called a paraxial rectangle).

Definition at line 314 of file Object.hpp.

Returns the center of the bounding box.

See also:
{getBoundingBox}

Definition at line 320 of file Object.hpp.

Returns a rectangular box around the object's center point in [meter]. This method is just shorthand for obtaining the center point by getCenterPoint(), the course angle (orientation) by getCourseAngle(), and the size of the object by getObjectBox(). Box2D::getSize()::getX() returns the size of this object in x-direction of the object's coordinate system (i.e. the object length), Box2D::getSize()::getY() the size of this object in y-direction (i.e. the object width).

See also:
getCenterPoint(), getCenterPoint(), getObjectBox()

Definition at line 85 of file Object.cpp.

const Point2D& datatypes::Object::getCenterPoint ( ) const [inline]

Returns the tracked center point of geometry ("Mittelpunkt") of this object in [meter], relative to our vehicle's coordinate system.

This estimated center point is as close to the actual center point as possible with the respective tracking algorithm. To be more precise, if the tracking algorithm tracks the center of gravity (COG) point, the COG point will be given here instead of the actual center of geometry. In those cases the actual center of geometry is unknown, unfortunately.

More information about the position of the object might be obtained from the getContourPoints() pointlist or through accessing the SegmentList by getSegment(), but those will always give unfiltered (non-tracked) results.

Definition at line 187 of file Object.hpp.

Returns the standard deviation (i.e. the uncertainty, "Mittelpunkt-Standardabweichung") of the center point of geometry estimation of this object, given in Vehicle coordinates in [meter].

Definition at line 194 of file Object.hpp.

Returns the object class that is most likely for this object.

Definition at line 156 of file Object.hpp.

Returns the number of scans in which the object has has been classified in the current classification.

Definition at line 161 of file Object.hpp.

Returns the quality measure ("Guete") of the current classification in [0 .. 1].

Definition at line 166 of file Object.hpp.

const Point2D& datatypes::Object::getClosestPoint ( ) const [inline]

Returns the point of this object that is closest to the origin of our vehicle's coordinate system.

If this is not set, returns a zero-valued point.

Definition at line 328 of file Object.hpp.

Returns a vector of points that describes a polygon outline of the current object's measurement points.

Definition at line 333 of file Object.hpp.

double datatypes::Object::getCourseAngle ( ) const [inline]

Returns the course angle ("Kurswinkel") of this object's movement in [radian], in the interval [-pi, pi). This is named conforming to ISO 8855; elsewhere this value is also called the Orientation or the Heading.

This angle is the angle from the host vehicle's x-coordinate axis to the object's x-coordinate axis (which in most cases is identical to the object's velocity vector). It is also the sum of yaw angle ("Gierwinkel") and sideslip angle ("Schwimmwinkel") of this object.

Definition at line 207 of file Object.hpp.

double datatypes::Object::getCourseAngleSigma ( ) const [inline]

Returns the course angle standard deviation (i.e. the uncertainty, "Kurswinkel-Standardabweichung") in [radian]. This is named conforming to ISO 8855; elsewhere this value is also called the Orientation or the Heading.

Definition at line 224 of file Object.hpp.

UINT16 datatypes::Object::getFlags ( ) const [inline]

Returns the flags that have been set in this object. Currently used bits are as follows: bit#0 = basic information is available; bit#1 = contour information has been set, bit#2 = boundingBox has been set; bit#3 = object contains fused data from other sources (WLAN etc.); bit#4 = relative velocity has been set; bit#5 = CAN Object Data only (protocol version: 1; either bounding box or object box is available (see bit#2); analog see bit#4 if relative or absolute velocity has been set); bit#6...15 = reserved

Definition at line 131 of file Object.hpp.

Returns the number of scans in which the object has not been observed by measurement (i.e. it was hidden) but instead it has only been predicted.

Definition at line 142 of file Object.hpp.

double datatypes::Object::getMaxAbsoluteVelocity ( ) const [inline]

Returns the maximum observed absolute velocity [m/s] (Classification feature). The value is NaN if it hasn't been set so far. The value is always non-negative, or NaN.

Definition at line 385 of file Object.hpp.

Returns the mean velocity during the whole time over which the object has been tracked [m/s], which is basically just getTotalTrackedPathLength() divided by getTotalTrackingDuration(). Always non-negative.

Definition at line 437 of file Object.cpp.

Returns the normalized mean distance [m] between scanpoints in the segment, or zero if the object is currently hidden. (Classification feature) Always non-negative.

Definition at line 391 of file Object.hpp.

Returns the number of scans in which this object has been tracked.

Definition at line 136 of file Object.hpp.

const Point2D& datatypes::Object::getObjectBox ( ) const [inline]

Returns the estimated size of the object in [meter].

The returned size estimation models a rotated rectangular box around the object's center point (hence the name "object box"). Point2D::getX() returns the size of this object in x-direction of the object's coordinate system (i.e. the object length), Point2D::getY() the size in the y-direction (i.e. the object width). This value is the filtered size estimation of this object.

This box contains (bounds) all of this object's scanpoints and is in parallel to the object's coordinate system, i.e. it is using the getCourseAngle() orientation. [meter]

See also:
getCourseAngle(), getCenterPoint(), setObjectBox()

Definition at line 273 of file Object.hpp.

const Point2D& datatypes::Object::getObjectBoxSigma ( ) const [inline]

Returns the object size estimation's standard deviation [meter].

This is given in the object's coordinate system! Watch out for necessary coordinate transformations (rotations) if you want to use this value in the host vehicle's coordinate system.

Definition at line 297 of file Object.hpp.

void datatypes::Object::getObjectBoxVarCovar ( double &  var_x,
double &  var_y,
double &  covar_xy 
) const

Writes the object box x and y variance (squared standard deviation) and their covariance into the given variables in the host vehicle's coordinate system [meter^2].

In contrast to getObjectBoxSigma(), here the x and y variance is rotated from the object coordinate system into the host system. Hence, if there was a zero covariance beforehand, a non-zero covariance will result after the rotation.

Definition at line 353 of file Object.cpp.

double datatypes::Object::getObjectHeight ( ) const [inline]

The height of this object in [m] (most probably received through WLAN data)

Definition at line 343 of file Object.hpp.

double datatypes::Object::getObjectHeightSigma ( ) const [inline]

The standard deviation of the height of this object in [m] (most probably received through WLAN data)

Definition at line 348 of file Object.hpp.

Returns the index number of this object.

Watch out: In some algorithms, the object id 0 (Null) is used as the special value of a non-valid object, but in other algorithms the id 0 is regarded as just a normal value as any other. However, invalid objects should be marked with setValid() instead of a Null-Value here.

Definition at line 113 of file Object.hpp.

double datatypes::Object::getObjectMass ( ) const [inline]

The mass of this object in [kilogram] (as received e.g. through WLAN data)

Definition at line 353 of file Object.hpp.

(Usually Unused.) Returns the velocity vector ("Geschwindigkeitsvektor") of this object in [meter/seconds], relative to our vehicle's coordinate system. Note: The currently implemented tracking will always track only the absolute velocity; hence, this field relativeVelocity will be unset and simply be zero (or some other irrelevant values).

Definition at line 232 of file Object.hpp.

(Usually Unused.) Returns the velocity vector standard deviation (i.e. the uncertainty) of this object in [meter/seconds], relative to our vehicle's coordinate system. Note: The currently implemented tracking will always track only the absolute velocity; hence, this field relativeVelocity will be unset and simply be zero (or some other irrelevant values).

Definition at line 241 of file Object.hpp.

std::streamsize datatypes::Object::getSerializedSize ( UINT32  version) const

Size of the serialized representation of this object.

Parameters:
version1,2 == compressed meter values; 3,4 == double values
const Time& datatypes::Object::getTimestamp ( ) const [inline]

Returns the time of when the center point of this object was observed.

Definition at line 151 of file Object.hpp.

Returns the total path length of object movement that has been tracked [m]. (Classification feature) Always non-negative.

Definition at line 402 of file Object.hpp.

Returns the total duration for which this object has been tracked in [seconds]. (Classification feature, needed for mean velocity) Always non-negative.

Definition at line 397 of file Object.hpp.

const UINT32 datatypes::Object::getUsedMemory ( ) const [inline]

Definition at line 413 of file Object.hpp.

An identifier to be used by WLAN fusion algorithms

Definition at line 338 of file Object.hpp.

Just increment objectAge by one.

Definition at line 407 of file Object.cpp.

bool datatypes::Object::isHiddenStatus ( ) const [inline]

Returns true if the object is not being observed in the very last measurement (i.e. it was hidden) but instead it has only been predicted.

Definition at line 146 of file Object.hpp.

bool datatypes::Object::isValid ( ) const [inline]

True, if this object is valid.

This flag will only be used to decide whether this Object is included in the serialization, i.e. if an Object has "false" here, it will not be serialized and will not be received by a receiver. Hence, this flag by itself is not included in the serialization.

Again: Invalid objects (those which return false here) will *not* be included in the serialization!

Definition at line 367 of file Object.hpp.

Returns the given classification value as a short string.

Definition at line 315 of file Object.cpp.

Returns the given classification value as a string.

Definition at line 251 of file Object.cpp.

Returns the given classification value as a string with the integer number included.

Definition at line 309 of file Object.cpp.

bool datatypes::Object::operator== ( const Object other) const

Equality predicate.

Definition at line 52 of file Object.cpp.

Sets the velocity vector as absolute value. Note: This also updates setMaxAbsoluteVelocity() accordingly.

Definition at line 132 of file Object.cpp.

Definition at line 143 of file Object.cpp.

Definition at line 164 of file Object.cpp.

Definition at line 171 of file Object.cpp.

void datatypes::Object::setCenterPoint ( const Point2D v) [inline]

Definition at line 188 of file Object.hpp.

Definition at line 98 of file Object.cpp.

Definition at line 157 of file Object.hpp.

Definition at line 162 of file Object.hpp.

Definition at line 91 of file Object.cpp.

void datatypes::Object::setClosestPoint ( const Point2D v) [inline]

Definition at line 329 of file Object.hpp.

Definition at line 188 of file Object.cpp.

void datatypes::Object::setCourseAngle ( double  newCourseAngle)

Sets the course angle ("Kurswinkel") of this object's movement in [radian], in the interval [-pi, pi). This is named conforming to ISO 8855; elsewhere this value is also called the Orientation or the Heading.

If the new course angle is outside of the defined interval [-pi, pi), a warning message will be printed and the value will be normalized into that interval by normalizeRadians().

Definition at line 105 of file Object.cpp.

Definition at line 126 of file Object.cpp.

void datatypes::Object::setFlags ( UINT16  v) [inline]

Definition at line 132 of file Object.hpp.

Definition at line 147 of file Object.hpp.

Definition at line 412 of file Object.cpp.

Definition at line 418 of file Object.cpp.

Definition at line 137 of file Object.hpp.

Set the size of the rectangular box of this object.

See also:
getObjectBox()

Definition at line 150 of file Object.cpp.

Definition at line 157 of file Object.cpp.

void datatypes::Object::setObjectHeight ( double  v) [inline]

Definition at line 344 of file Object.hpp.

Definition at line 176 of file Object.cpp.

void datatypes::Object::setObjectId ( UINT16  v) [inline]

Sets the index number of this object.

For setting an object to invalid, use setValid().

Definition at line 119 of file Object.hpp.

Definition at line 182 of file Object.cpp.

void datatypes::Object::setRelativeVelocity ( const Point2D v) [inline]

Definition at line 233 of file Object.hpp.

Definition at line 242 of file Object.hpp.

void datatypes::Object::setTimestamp ( const Time v) [inline]

Definition at line 152 of file Object.hpp.

Definition at line 430 of file Object.cpp.

Definition at line 424 of file Object.cpp.

void datatypes::Object::setValid ( bool  newValue = true) [inline]

Set whether this object is valid.

This flag will only be used to decide whether this Object is included in the serialization, i.e. if an Object has "false" here, it will not be serialized and will not be received by a receiver. Hence, this flag by itself is not included in the serialization.

Again: Invalid objects (those which have false here) will *not* be included in the serialization!

Definition at line 380 of file Object.hpp.

Definition at line 339 of file Object.hpp.

Returns the classification value as converted from the given string. This accepts the output of both objectClassificationToString() and objectClassificationToShortString().

Definition at line 274 of file Object.cpp.

std::string datatypes::Object::toString ( ) const

Returns a human-readable form of the content of this object (for debugging output) The actual output is merely a conversion to string of the return value of toConfigValues().

Definition at line 201 of file Object.cpp.


Member Data Documentation

Velocity of this object [meter/seconds] as absolute velocity; the orientation is relative to the vehicle coordinate system.

Definition at line 464 of file Object.hpp.

Definition at line 465 of file Object.hpp.

A rectangle in parallel to the vehicle coordinate system (a paraxial rectangle) that contains (bounds) all of this object's points.

Definition at line 470 of file Object.hpp.

Center of the bounding box.

Definition at line 469 of file Object.hpp.

Center point of object rectangle, given in Vehicle coordinate system.

Definition at line 458 of file Object.hpp.

Definition at line 459 of file Object.hpp.

The object class that is most likely for this object.

Definition at line 454 of file Object.hpp.

Counts how long the object has been classified in the current classification.

Definition at line 455 of file Object.hpp.

The quality of the current classification.

Definition at line 456 of file Object.hpp.

The point of this object that is closest to the origin of the vehicle coordinate system.

Definition at line 473 of file Object.hpp.

A poly-line that describes the outline of the current object measurement.

Definition at line 476 of file Object.hpp.

named by ISO 8855; also called Orientation or Heading [rad]

Definition at line 460 of file Object.hpp.

Definition at line 461 of file Object.hpp.

reserved

Definition at line 448 of file Object.hpp.

Counts how long the object has not been observed but only predicted.

Definition at line 451 of file Object.hpp.

Pointer to the Segment that belongs to this object. (Note: This assumes that each object was associated to only one segment. If more than one segment is associated to this object, we're out of luck and need a new data structure.)

Definition at line 508 of file Object.hpp.

Classification feature: The maximum observed absolute velocity [m/s].

Definition at line 486 of file Object.hpp.

Classification feature: Normalized mean distance [m] between scanpoints in the segment, or zero if the object is currently hidden.

Definition at line 491 of file Object.hpp.

number of scans in which this object has been tracked, or instead time?

Definition at line 450 of file Object.hpp.

The object's length and width as a rectangle, relative to the object's coordinate system.

Definition at line 467 of file Object.hpp.

Definition at line 468 of file Object.hpp.

The height of this object in [m] (most probably received through WLAN data).

Definition at line 479 of file Object.hpp.

The standard deviation of the height of this object in [m] (most probably received through WLAN data).

Definition at line 480 of file Object.hpp.

Definition at line 447 of file Object.hpp.

The mass of this object in [kilogram] (as received e.g. through WLAN data)

Definition at line 482 of file Object.hpp.

Velocity of this object [meter/seconds], relative to the vehicle coordinate system.

Definition at line 462 of file Object.hpp.

Definition at line 463 of file Object.hpp.

Time of when the center point of this object was observed.

Definition at line 452 of file Object.hpp.

Classification feature: Total accumulated path length over which this object has moved during being tracked. [m]

Definition at line 499 of file Object.hpp.

Classification feature (needed for mean velocity): Duration of object being tracked in [s]

Definition at line 495 of file Object.hpp.

An identifier to be used by WLAN fusion algorithms.

Definition at line 478 of file Object.hpp.


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


libsick_ldmrs
Author(s): SICK AG , Martin G√ľnther , Jochen Sprickerhof
autogenerated on Wed Jun 14 2017 04:04:51