MRPT  2.0.3
stock_observations.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2020, 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 #include "obs-precomp.h" // Precompiled headers
11 
12 #include <mrpt/io/CMemoryStream.h>
16 #include <array>
17 
18 #include "sample_image1.h"
19 #include "sample_image2.h"
20 
21 using namespace mrpt::obs;
22 
25 {
26  using scan_data_t = std::array<float, 361>;
27  using scan_valid_data_t = std::array<char, 361>;
28 
29  const std::array<scan_data_t, 2> SCAN_RANGES = {
30  {{0.910f, 0.900f, 0.910f, 0.900f, 0.900f, 0.890f, 0.890f,
31  0.880f, 0.890f, 0.880f, 0.880f, 0.880f, 0.880f, 0.880f,
32  0.880f, 0.870f, 0.880f, 0.870f, 0.870f, 0.870f, 0.880f,
33  0.880f, 0.880f, 0.880f, 0.880f, 0.880f, 0.880f, 0.880f,
34  0.880f, 0.880f, 0.880f, 0.880f, 0.880f, 0.880f, 0.880f,
35  0.880f, 0.890f, 0.880f, 0.880f, 0.880f, 0.890f, 0.880f,
36  0.890f, 0.890f, 0.880f, 0.890f, 0.890f, 0.880f, 0.890f,
37  0.890f, 0.890f, 0.890f, 0.890f, 0.890f, 0.900f, 0.900f,
38  0.900f, 0.900f, 0.900f, 0.910f, 0.910f, 0.910f, 0.910f,
39  0.920f, 0.920f, 0.920f, 0.920f, 0.920f, 0.930f, 0.930f,
40  0.930f, 0.930f, 0.940f, 0.940f, 0.950f, 0.950f, 0.950f,
41  0.950f, 0.960f, 0.960f, 0.970f, 0.970f, 0.970f, 0.980f,
42  0.980f, 0.990f, 1.000f, 1.000f, 1.000f, 1.010f, 1.010f,
43  1.020f, 1.030f, 1.030f, 1.030f, 1.040f, 1.050f, 1.060f,
44  1.050f, 1.060f, 1.070f, 1.070f, 1.080f, 1.080f, 1.090f,
45  1.100f, 1.110f, 1.120f, 1.120f, 1.130f, 1.140f, 1.140f,
46  1.160f, 1.170f, 1.180f, 1.180f, 1.190f, 1.200f, 1.220f,
47  1.220f, 1.230f, 1.230f, 1.240f, 1.250f, 1.270f, 1.280f,
48  1.290f, 1.300f, 1.320f, 1.320f, 1.350f, 1.360f, 1.370f,
49  1.390f, 1.410f, 1.410f, 1.420f, 1.430f, 1.450f, 1.470f,
50  1.490f, 1.500f, 1.520f, 1.530f, 1.560f, 1.580f, 1.600f,
51  1.620f, 1.650f, 1.670f, 1.700f, 1.730f, 1.750f, 1.780f,
52  1.800f, 1.830f, 1.850f, 1.880f, 1.910f, 1.940f, 1.980f,
53  2.010f, 2.060f, 2.090f, 2.130f, 2.180f, 2.220f, 2.250f,
54  2.300f, 2.350f, 2.410f, 2.460f, 2.520f, 2.570f, 2.640f,
55  2.700f, 2.780f, 2.850f, 2.930f, 3.010f, 3.100f, 3.200f,
56  3.300f, 3.390f, 3.500f, 3.620f, 3.770f, 3.920f, 4.070f,
57  4.230f, 4.430f, 4.610f, 4.820f, 5.040f, 5.290f, 5.520f,
58  8.970f, 8.960f, 8.950f, 8.930f, 8.940f, 8.930f, 9.050f,
59  9.970f, 9.960f, 10.110f, 13.960f, 18.870f, 19.290f, 81.910f,
60  20.890f, 48.750f, 48.840f, 48.840f, 19.970f, 19.980f, 19.990f,
61  15.410f, 20.010f, 19.740f, 17.650f, 17.400f, 14.360f, 12.860f,
62  11.260f, 11.230f, 8.550f, 8.630f, 9.120f, 9.120f, 8.670f,
63  8.570f, 7.230f, 7.080f, 7.040f, 6.980f, 6.970f, 5.260f,
64  5.030f, 4.830f, 4.620f, 4.440f, 4.390f, 4.410f, 4.410f,
65  4.410f, 4.430f, 4.440f, 4.460f, 4.460f, 4.490f, 4.510f,
66  4.540f, 3.970f, 3.820f, 3.730f, 3.640f, 3.550f, 3.460f,
67  3.400f, 3.320f, 3.300f, 3.320f, 3.320f, 3.340f, 2.790f,
68  2.640f, 2.600f, 2.570f, 2.540f, 2.530f, 2.510f, 2.490f,
69  2.490f, 2.480f, 2.470f, 2.460f, 2.460f, 2.460f, 2.450f,
70  2.450f, 2.450f, 2.460f, 2.460f, 2.470f, 2.480f, 2.490f,
71  2.490f, 2.520f, 2.510f, 2.550f, 2.570f, 2.610f, 2.640f,
72  2.980f, 3.040f, 3.010f, 2.980f, 2.940f, 2.920f, 2.890f,
73  2.870f, 2.830f, 2.810f, 2.780f, 2.760f, 2.740f, 2.720f,
74  2.690f, 2.670f, 2.650f, 2.630f, 2.620f, 2.610f, 2.590f,
75  2.560f, 2.550f, 2.530f, 2.510f, 2.500f, 2.480f, 2.460f,
76  2.450f, 2.430f, 2.420f, 2.400f, 2.390f, 2.380f, 2.360f,
77  2.350f, 2.340f, 2.330f, 2.310f, 2.300f, 2.290f, 2.280f,
78  2.270f, 2.260f, 2.250f, 2.240f, 2.230f, 2.230f, 2.220f,
79  2.210f, 2.200f, 2.190f, 2.180f, 2.170f, 1.320f, 1.140f,
80  1.130f, 1.130f, 1.120f, 1.120f, 1.110f, 1.110f, 1.110f,
81  1.110f, 1.100f, 1.110f, 1.100f},
82  {0.720f, 0.720f, 0.720f, 0.720f, 0.720f, 0.720f, 0.710f,
83  0.720f, 0.710f, 0.710f, 0.710f, 0.710f, 0.710f, 0.710f,
84  0.710f, 0.710f, 0.710f, 0.710f, 0.710f, 0.710f, 0.720f,
85  0.720f, 0.720f, 0.720f, 0.730f, 0.730f, 0.730f, 0.730f,
86  0.730f, 0.730f, 0.730f, 0.740f, 0.740f, 0.740f, 0.740f,
87  0.740f, 0.740f, 0.750f, 0.750f, 0.750f, 0.750f, 0.750f,
88  0.750f, 0.750f, 0.750f, 0.760f, 0.760f, 0.760f, 0.760f,
89  0.760f, 0.760f, 0.760f, 0.760f, 0.770f, 0.770f, 0.770f,
90  0.770f, 0.780f, 0.780f, 0.780f, 0.790f, 0.790f, 0.800f,
91  0.800f, 0.800f, 0.800f, 0.800f, 0.800f, 0.810f, 0.810f,
92  0.820f, 0.820f, 0.830f, 0.830f, 0.840f, 0.840f, 0.850f,
93  0.850f, 0.860f, 0.860f, 0.860f, 0.870f, 0.870f, 0.880f,
94  0.890f, 0.890f, 0.900f, 0.900f, 0.910f, 0.920f, 0.930f,
95  0.930f, 0.940f, 0.940f, 0.940f, 0.950f, 0.960f, 0.960f,
96  0.970f, 0.980f, 0.990f, 1.000f, 1.010f, 1.020f, 1.030f,
97  1.040f, 1.050f, 1.060f, 1.070f, 1.080f, 1.080f, 1.100f,
98  1.100f, 1.120f, 1.120f, 1.140f, 1.140f, 1.170f, 1.160f,
99  1.180f, 1.190f, 1.210f, 1.220f, 1.240f, 1.250f, 1.280f,
100  1.290f, 1.300f, 1.320f, 1.340f, 1.350f, 1.380f, 1.390f,
101  1.420f, 1.440f, 1.460f, 1.470f, 1.500f, 1.520f, 1.550f,
102  1.570f, 1.600f, 1.630f, 1.670f, 1.690f, 1.730f, 1.760f,
103  1.790f, 1.820f, 1.870f, 1.900f, 1.940f, 1.970f, 2.030f,
104  2.080f, 2.130f, 2.170f, 2.230f, 2.280f, 2.340f, 2.400f,
105  2.490f, 2.550f, 2.630f, 2.700f, 2.810f, 2.880f, 3.010f,
106  3.090f, 3.240f, 3.340f, 3.500f, 3.620f, 3.810f, 3.950f,
107  4.180f, 4.340f, 4.620f, 8.170f, 8.140f, 8.150f, 8.120f,
108  8.110f, 8.100f, 8.100f, 8.300f, 9.040f, 9.130f, 9.130f,
109  13.030f, 18.050f, 19.150f, 81.910f, 20.070f, 47.980f, 48.040f,
110  48.030f, 19.140f, 19.180f, 19.180f, 19.190f, 14.550f, 19.210f,
111  16.850f, 16.840f, 7.800f, 7.770f, 7.770f, 7.750f, 7.770f,
112  7.760f, 7.780f, 7.760f, 8.320f, 8.350f, 8.350f, 8.090f,
113  7.720f, 7.730f, 6.430f, 6.360f, 6.290f, 6.260f, 6.230f,
114  6.220f, 6.160f, 5.800f, 4.510f, 4.410f, 4.240f, 4.140f,
115  4.000f, 3.910f, 3.790f, 3.680f, 3.660f, 3.680f, 3.680f,
116  3.700f, 3.710f, 3.730f, 3.730f, 3.760f, 3.770f, 3.790f,
117  3.820f, 3.850f, 3.900f, 3.940f, 3.980f, 3.250f, 3.180f,
118  3.140f, 3.070f, 3.030f, 2.970f, 2.930f, 2.880f, 2.850f,
119  2.790f, 2.760f, 2.710f, 2.680f, 2.660f, 2.670f, 2.690f,
120  2.710f, 2.720f, 2.740f, 2.760f, 2.770f, 2.780f, 2.800f,
121  2.170f, 2.120f, 2.090f, 2.060f, 2.020f, 2.010f, 1.990f,
122  1.980f, 1.970f, 1.960f, 1.950f, 1.950f, 1.940f, 1.940f,
123  1.950f, 1.940f, 1.940f, 1.950f, 1.930f, 1.940f, 1.940f,
124  1.940f, 1.940f, 1.940f, 1.950f, 1.960f, 1.960f, 1.980f,
125  1.980f, 2.000f, 2.010f, 2.030f, 2.060f, 2.090f, 2.120f,
126  2.190f, 2.560f, 2.540f, 2.530f, 2.520f, 2.500f, 2.490f,
127  2.470f, 2.460f, 2.450f, 2.440f, 2.420f, 2.410f, 2.400f,
128  2.390f, 2.380f, 2.370f, 2.360f, 2.350f, 2.340f, 2.340f,
129  2.330f, 2.320f, 2.310f, 2.300f, 2.290f, 2.290f, 2.290f,
130  2.280f, 2.270f, 2.260f, 2.260f, 2.250f, 2.240f, 2.240f,
131  2.230f, 2.230f, 2.220f, 2.220f, 2.210f, 2.210f, 2.200f,
132  2.200f, 2.190f, 2.190f, 2.190f, 2.180f, 2.180f, 2.170f,
133  2.170f, 2.170f, 2.160f, 2.160f}}};
134  const std::array<scan_valid_data_t, 2> SCAN_VALID = {
135  {{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
136  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
137  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
138  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
139  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
140  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
141  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
142  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
143  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
144  1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
145  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
146  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
147  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
148  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
149  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
150  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
151  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
152  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
153  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
154  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
155  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
156  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
157  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
158  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
159  1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
160  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
161  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
162  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
163  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
164  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
165  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
166  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}};
167 
168  s.aperture = M_PIf;
169  s.rightToLeft = true;
170  s.loadFromVectors(
171  SCAN_RANGES.at(i).size(), &SCAN_RANGES.at(i).at(0),
172  &SCAN_VALID.at(i).at(0));
173 }
174 
176 {
178  switch (i)
179  {
180  case 0:
182  break;
183  case 1:
185  break;
186  default:
187  THROW_EXCEPTION("Out of bound index in exampleImage()");
188  }
190 }
sample_image2.h
mrpt::obs::CObservation2DRangeScan::loadFromVectors
void loadFromVectors(size_t nRays, const float *scanRanges, const char *scanValidity)
Definition: CObservation2DRangeScan.cpp:558
mrpt::obs::CObservation2DRangeScan::rightToLeft
bool rightToLeft
The scanning direction: true=counterclockwise; false=clockwise.
Definition: CObservation2DRangeScan.h:116
mrpt::obs::CObservation2DRangeScan
A "CObservation"-derived class that represents a 2D range scan measurement (typically from a laser sc...
Definition: CObservation2DRangeScan.h:54
sample_image1.h
CMemoryStream.h
obs-precomp.h
THROW_EXCEPTION
#define THROW_EXCEPTION(msg)
Definition: exceptions.h:67
mrpt::obs
This namespace contains representation of robot actions and observations.
Definition: CParticleFilter.h:17
stock_observations.h
mrpt::obs::CObservation2DRangeScan::aperture
float aperture
The "aperture" or field-of-view of the range finder, in radians (typically M_PI = 180 degrees).
Definition: CObservation2DRangeScan.h:114
mrpt::io::CMemoryStream
This CStream derived class allow using a memory buffer as a CStream.
Definition: io/CMemoryStream.h:26
sample_image1
static const unsigned char sample_image1[]
Definition: sample_image1.h:16
mrpt::img::CImage
A class for storing images as grayscale or RGB bitmaps.
Definition: img/CImage.h:148
mrpt::serialization::archiveFrom
CArchiveStreamBase< STREAM > archiveFrom(STREAM &s)
Helper function to create a templatized wrapper CArchive object for a: MRPT's CStream,...
Definition: CArchive.h:592
mrpt::obs::stock_observations::example2DRangeScan
void example2DRangeScan(mrpt::obs::CObservation2DRangeScan &s, int i=0)
Example 2D lidar scans (form a venerable SICK LMS200).
Definition: stock_observations.cpp:23
sample_image2
static const unsigned char sample_image2[]
Definition: sample_image2.h:16
M_PIf
#define M_PIf
Definition: common.h:61
mrpt::obs::stock_observations::exampleImage
void exampleImage(mrpt::img::CImage &im, int i=0)
Example images (an 800x640 image pair from a Bumblebee 1) Implemented indices: 0,1.
Definition: stock_observations.cpp:175
CArchive.h
mrpt::io::CMemoryStream::assignMemoryNotOwn
void assignMemoryNotOwn(const void *data, const uint64_t nBytesInData)
Initilize the data in the stream from a block of memory which is NEITHER OWNED NOR COPIED by the obje...
Definition: CMemoryStream.cpp:36
CObservation2DRangeScan.h



Page generated by Doxygen 1.8.17 for MRPT 2.0.3 at Fri May 15 23:51:15 UTC 2020