File: vpLaserScan.h

package info (click to toggle)
visp 3.7.0-7
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 166,380 kB
  • sloc: cpp: 392,705; ansic: 224,448; xml: 23,444; python: 13,701; java: 4,792; sh: 206; objc: 145; makefile: 118
file content (127 lines) | stat: -rw-r--r-- 4,475 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*
 * ViSP, open source Visual Servoing Platform software.
 * Copyright (C) 2005 - 2025 by Inria. All rights reserved.
 *
 * This software is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * See the file LICENSE.txt at the root directory of this source
 * distribution for additional information about the GNU GPL.
 *
 * For using ViSP with software that can not be combined with the GNU
 * GPL, please contact Inria about acquiring a ViSP Professional
 * Edition License.
 *
 * See https://visp.inria.fr for more information.
 *
 * This software was developed at:
 * Inria Rennes - Bretagne Atlantique
 * Campus Universitaire de Beaulieu
 * 35042 Rennes Cedex
 * France
 *
 * If you have questions regarding the use of this file, please contact
 * Inria at visp@inria.fr
 *
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 * Description:
 * Laser scan data structure.
 */

/*!
  \file vpLaserScan.h

  \brief Implements a laser scan data structure.

*/

#ifndef vpLaserScan_h
#define vpLaserScan_h

#include <visp3/core/vpConfig.h>
#include "visp3/sensor/vpScanPoint.h"

#include <vector>

BEGIN_VISP_NAMESPACE
/*!

  \class vpLaserScan
  \ingroup group_sensor_laserscanner

  \brief Implements a laser scan data structure that contains
  especially the list of scanned points that have been recorded for
  this laser scan.

  Other data as the start/stop angle, the start/end timestamp are
  also considered.
*/
class /*VISP_EXPORT*/ vpLaserScan
{
public:
  /*! Default constructor that initialize all the internal variable to zero.
   */
  vpLaserScan()
    : listScanPoints(), startTimestamp(0), endTimestamp(0), measurementId(0), numSteps(0), startAngle(0), stopAngle(0),
    numPoints(0)
  { }
  /*! Copy constructor. */
  vpLaserScan(const vpLaserScan &scan)
    : listScanPoints(scan.listScanPoints), startTimestamp(0), endTimestamp(0), measurementId(0), numSteps(0),
    startAngle(0), stopAngle(0), numPoints(0)
  {
    startTimestamp = scan.startTimestamp;
    endTimestamp = scan.endTimestamp;
    measurementId = scan.measurementId;
    numSteps = scan.numSteps;
    startAngle = scan.startAngle;
    stopAngle = scan.stopAngle;
    numPoints = scan.numPoints;
  }
  /*! Default destructor that does nothing. */
  virtual ~vpLaserScan() { }
  /*! Add the scan point at the end of the list. */
  inline void addPoint(const vpScanPoint &p) { listScanPoints.push_back(p); }
  /*! Drop the list of points. */
  inline void clear() { listScanPoints.clear(); }
  /*! Get the list of points. */
  inline std::vector<vpScanPoint> getScanPoints() { return listScanPoints; }

#if VISP_CXX_STANDARD >= VISP_CXX_STANDARD_11
  vpLaserScan &operator=(const vpLaserScan &) = default;
#endif

  /*! Specifies the id of former measurements and increases with every measurement. */
  inline void setMeasurementId(const unsigned short &id) { this->measurementId = id; }
  /*! Start time of measurement. */
  inline void setStartTimestamp(const double &start_timestamp) { this->startTimestamp = start_timestamp; }
  /*! End time of measurement. */
  inline void setEndTimestamp(const double &end_timestamp) { this->endTimestamp = end_timestamp; }
  /*! Angular steps per scanner rotation. */
  inline void setNumSteps(const unsigned short &num_steps) { this->numSteps = num_steps; }
  /*! Start angle of the measurement in angular steps. */
  inline void setStartAngle(const short &start_angle) { this->startAngle = start_angle; }
  /*! Stop angle of the measurement in angular steps. */
  inline void setStopAngle(const short &stop_angle) { this->stopAngle = stop_angle; }
  /*! Number of measured points of the measurement. */
  inline void setNumPoints(const unsigned short &num_points) { this->numPoints = num_points; }
  /*! Return the measurement start time. */
  inline double getStartTimestamp() { return startTimestamp; }
  /*! Return the measurement end time. */
  inline double getEndTimestamp() { return endTimestamp; }

private:
  std::vector<vpScanPoint> listScanPoints;
  double startTimestamp;
  double endTimestamp;
  unsigned short measurementId;
  unsigned short numSteps;
  short startAngle;
  short stopAngle;
  unsigned short numPoints;
};
END_VISP_NAMESPACE
#endif