MRPT  1.9.9
CDetectableObject.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2019, Individual contributors, see AUTHORS file |
6  | See: https://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See: https://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #pragma once
11 
12 #include <mrpt/obs/CObservation.h>
14 #include <cmath>
15 
16 namespace mrpt::detectors
17 {
18 /** Base class that contains common atributes and functions of detectable
19  * objects.
20  * It was initially thought for detected objects in images from cams, but it's
21  * easily
22  * expandable to other source types (f.i. scanners).
23  * \ingroup mrpt_detectors_grp
24  */
26 {
28 
29  public:
30  /** Must be an unique id for each detectable object */
32 
33  /** Observation wich contain the deteted object */
35 
37  {
38  obs = newObs;
39  };
40 
41 }; // End of class
42 
44 {
46 
47  public:
48  /** 2D Coordinates of detected object */
49  float m_x, m_y;
50  /** Size of detected object */
51  float m_height, m_width;
52 
53  /** Extra constructor */
54  CDetectable2D(int x = 0, int y = 0, int height = 0, int width = 0)
55  : m_x(x), m_y(y), m_height(height), m_width(width){};
56 
57  /** Copy pointer content constructor */
58  CDetectable2D(const CDetectable2D* d) { *this = *d; };
59  /** Compute distance between centers of two detectable 2D objects.
60  * \return calculated distance.
61  */
62  inline double distanceTo(const CDetectable2D& d2)
63  {
64  // Calculate objects centers
65  double c_x1 = (m_x + m_width / 2);
66  double c_x2 = (d2.m_x + d2.m_width / 2);
67  double c_y1 = (m_y + m_height / 2);
68  double c_y2 = (d2.m_y + d2.m_height / 2);
69 
70  return std::sqrt(std::pow(c_x1 - c_x2, 2) + pow(c_y1 - c_y2, 2));
71  };
72 };
73 
75 {
77 
78  public:
79  CDetectable3D() = default;
80 
81  CDetectable3D(const CDetectable2D::Ptr& object2d);
82 
83  /** Copy pointer content constructor */
84  CDetectable3D(const CDetectable3D* d) { *this = *d; };
85  /** Z coordinate of detected object */
86  float m_z;
87 
88 }; // End of class
89 } // namespace mrpt::detectors
float m_height
Size of detected object.
double distanceTo(const CDetectable2D &d2)
Compute distance between centers of two detectable 2D objects.
CDetectable2D(int x=0, int y=0, int height=0, int width=0)
Extra constructor.
float m_z
Z coordinate of detected object.
GLenum GLsizei width
Definition: glext.h:3535
mrpt::obs::CObservation::Ptr obs
Observation wich contain the deteted object.
#define DEFINE_VIRTUAL_SERIALIZABLE(class_name)
This declaration must be inserted in virtual CSerializable classes definition:
void setObservation(mrpt::obs::CObservation::Ptr newObs)
CDetectable2D(const CDetectable2D *d)
Copy pointer content constructor.
GLsizei const GLchar ** string
Definition: glext.h:4116
std::string m_id
Must be an unique id for each detectable object.
The virtual base class which provides a unified interface for all persistent objects in MRPT...
Definition: CSerializable.h:30
GLenum GLint GLint y
Definition: glext.h:3542
float m_x
2D Coordinates of detected object
#define DEFINE_SERIALIZABLE(class_name, NS)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
GLenum GLint x
Definition: glext.h:3542
GLenum GLsizei GLsizei height
Definition: glext.h:3558
Base class that contains common atributes and functions of detectable objects.



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 45d659fbb Tue Dec 10 18:21:14 2019 +0100 at mar dic 10 18:30:09 CET 2019