Go to the documentation of this file.
35 cerr <<
"Usage: " <<
argv[0] <<
" <sensor_id/sensor_serial\n";
36 cerr <<
"Example: " <<
argv[0] <<
" 0 \n";
46 unsigned sensor_id_or_serial = 0;
50 sensor_id_or_serial = atoi(
argv[1]);
51 if (sensor_id_or_serial > 10)
63 cout <<
"OK " << rgbd_sensor.
getNumDevices() <<
" available devices."
65 cout <<
"\nUse device " << sensor_id_or_serial << endl << endl;
67 bool showImages =
false;
74 unsigned int nFrames = 0;
76 bool bObs =
false, bError =
true;
81 cout <<
"Get a new frame\n";
84 double fps = ++nFrames / tictac.
Tac();
87 cout <<
"FPS: " << fps << endl;
96 std::this_thread::sleep_for(10ms);
105 win3D.setCameraAzimuthDeg(140);
106 win3D.setCameraElevationDeg(20);
107 win3D.setCameraZoom(8.0);
109 win3D.setCameraPointingToPoint(2.5, 0, 0);
113 gl_points->setPointSize(2.5);
119 win3D.get3DSceneAndLock();
122 scene->insert(gl_points);
126 const double aspect_ratio = 480.0 / 640.0;
127 const int VW_WIDTH = 400;
129 const int VW_HEIGHT = aspect_ratio * VW_WIDTH;
132 viewInt = scene->createViewport(
"view2d_int");
133 viewInt->setViewportPosition(5, 30, VW_WIDTH, VW_HEIGHT);
134 win3D.addTextMessage(
135 10, 30 + VW_HEIGHT + 10,
"Intensity data", 2);
137 win3D.addTextMessage(
138 5, 5,
"'o'/'i'-zoom out/in, ESC: quit", 110);
140 win3D.unlockAccess3DScene();
147 bool bObs =
false, bError =
true;
150 while (!win3D.keyHit())
157 if (bObs && !bError && newObs &&
159 newObs->timestamp != last_obs_tim)
162 last_obs_tim = newObs->timestamp;
167 win3D.get3DSceneAndLock();
170 win3D.addTextMessage(
179 if (newObs->hasIntensityImage)
181 viewInt->setImageView(
182 newObs->intensityImage);
187 win3D.unlockAccess3DScene();
197 if (newObs->hasRangeImage)
200 static pcl::PointCloud<pcl::PointXYZRGB> cloud;
201 newObs->unprojectInto(cloud,
false );
203 win3D.get3DSceneAndLock();
204 gl_points->loadFromPointsMap(&cloud);
205 win3D.unlockAccess3DScene();
210 win3D.get3DSceneAndLock();
213 newObs->unprojectInto(
215 win3D.unlockAccess3DScene();
224 cout <<
"\nClosing RGBD sensor...\n";
228 catch (
const std::exception& e)
235 printf(
"Untyped exception!!");
int getNumDevices() const
The number of available devices at initialization.
bool kbhit() noexcept
An OS-independent version of kbhit, which returns true if a key has been pushed.
std::string dateTimeLocalToString(const mrpt::system::TTimeStamp t)
Convert a timestamp into this textual form (in local time): YEAR/MONTH/DAY,HH:MM:SS....
#define INVALID_TIMESTAMP
Represents an invalid timestamp, where applicable.
Used in CObservation3DRangeScan::unprojectInto()
A high-performance stopwatch, with typical resolution of nanoseconds.
std::shared_ptr< mrpt::opengl ::CPointCloudColoured > Ptr
void getNextObservation(mrpt::obs::CObservation3DRangeScan &out_obs, bool &there_is_obs, bool &hardware_error)
The main data retrieving function, to be called after calling loadConfig() and initialize().
Contains classes for various device interfaces.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
void setSerialToOpen(const unsigned serial)
Set the serial number of the device to open.
This namespace contains representation of robot actions and observations.
double Tac() noexcept
Stops the stopwatch.
static Ptr Create(Args &&... args)
mrpt::img::CImage intensityImage
If hasIntensityImage=true, a color or gray-level intensity image of the same size than "rangeImage".
std::shared_ptr< mrpt::opengl ::COpenGLViewport > Ptr
A range or depth 3D scan measurement, as from a time-of-flight range camera or a structured-light dep...
static Ptr Create(Args &&... args)
static Ptr Create(Args &&... args)
void setSensorIDToOpen(const unsigned sensor_id)
Set the sensor_id of the device to open.
mrpt::gui::CDisplayWindow3D::Ptr win
mrpt::Clock::time_point TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1,...
void Tic() noexcept
Starts the stopwatch.
This class creates a window as a graphical user interface (GUI) for displaying images to the user.
std::shared_ptr< mrpt::opengl ::COpenGLScene > Ptr
CSetOfObjects::Ptr CornerXYZ(float scale=1.0)
Returns three arrows representing a X,Y,Z 3D corner.
void initialize() override
Initializes the 3D camera - should be invoked after calling loadConfig() or setting the different par...
std::string exception_to_str(const std::exception &e)
Builds a nice textual representation of a nested exception, which if generated using MRPT macros (THR...
bool takeIntoAccountSensorPoseOnRobot
(Default: false) If false, local (sensor-centric) coordinates of points are generated.
The namespace for 3D scene representation and rendering.
std::shared_ptr< mrpt::obs ::CObservation3DRangeScan > Ptr
A graphical user interface (GUI) for efficiently rendering 3D scenes in real-time.
A class for grabing "range images", intensity images (either RGB or IR) and other information from an...
std::string std::string format(std::string_view fmt, ARGS &&... args)
Page generated by Doxygen 1.8.17 for MRPT 2.0.4 at Sun Jul 19 15:15:43 UTC 2020 | |