Skip to content

Commit

Permalink
Add Catch I/O Exception to OpenNI Viewer
Browse files Browse the repository at this point in the history
Add catch I/O exception to openni_viewer sample.
For example, OpenNIGrabber throws I/O exception when sensor is not
connected.
  • Loading branch information
UnaNancyOwen committed Apr 28, 2017
1 parent 8061bbc commit 103969b
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 21 deletions.
24 changes: 16 additions & 8 deletions visualization/tools/openni_viewer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -351,17 +351,25 @@ main (int argc, char** argv)
if (pcl::console::find_argument (argc, argv, "-xyz") != -1)
xyz = true;

pcl::OpenNIGrabber grabber (device_id, depth_mode, image_mode);

if (xyz || !grabber.providesCallback<pcl::OpenNIGrabber::sig_cb_openni_point_cloud_rgb> ())
try
{
OpenNIViewer<pcl::PointXYZ> openni_viewer (grabber);
openni_viewer.run ();
pcl::OpenNIGrabber grabber (device_id, depth_mode, image_mode);

if (xyz || !grabber.providesCallback<pcl::OpenNIGrabber::sig_cb_openni_point_cloud_rgb> ())
{
OpenNIViewer<pcl::PointXYZ> openni_viewer (grabber);
openni_viewer.run ();
}
else
{
OpenNIViewer<pcl::PointXYZRGBA> openni_viewer (grabber);
openni_viewer.run ();
}
}
else
catch (pcl::IOException& e)
{
OpenNIViewer<pcl::PointXYZRGBA> openni_viewer (grabber);
openni_viewer.run ();
pcl::console::print_error ("Failed to create a grabber: %s\n", e.what ());
return (1);
}

return (0);
Expand Down
35 changes: 22 additions & 13 deletions visualization/tools/openni_viewer_simple.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/visualization/image_viewer.h>
#include <pcl/io/openni_camera/openni_driver.h>
#include <pcl/console/print.h>
#include <pcl/console/parse.h>
#include <pcl/visualization/boost.h>
#include <pcl/visualization/mouse_event.h>
Expand Down Expand Up @@ -356,22 +357,30 @@ main(int argc, char ** argv)
if (pcl::console::find_argument(argc, argv, "-xyz") != -1)
xyz = true;

pcl::OpenNIGrabber grabber (device_id, depth_mode, image_mode);

if (xyz) // only if xyz flag is set, since grabber provides at least XYZ and XYZI pointclouds
{
SimpleOpenNIViewer<pcl::PointXYZ> v (grabber);
v.run ();
}
else if (grabber.providesCallback<pcl::OpenNIGrabber::sig_cb_openni_point_cloud_rgb> ())
try
{
SimpleOpenNIViewer<pcl::PointXYZRGBA> v (grabber);
v.run ();
pcl::OpenNIGrabber grabber (device_id, depth_mode, image_mode);

if (xyz) // only if xyz flag is set, since grabber provides at least XYZ and XYZI pointclouds
{
SimpleOpenNIViewer<pcl::PointXYZ> v (grabber);
v.run ();
}
else if (grabber.providesCallback<pcl::OpenNIGrabber::sig_cb_openni_point_cloud_rgb> ())
{
SimpleOpenNIViewer<pcl::PointXYZRGBA> v (grabber);
v.run ();
}
else
{
SimpleOpenNIViewer<pcl::PointXYZI> v (grabber);
v.run ();
}
}
else
catch (pcl::IOException& e)
{
SimpleOpenNIViewer<pcl::PointXYZI> v (grabber);
v.run ();
pcl::console::print_error ("Failed to create a grabber: %s\n", e.what ());
return (1);
}

return (0);
Expand Down

0 comments on commit 103969b

Please sign in to comment.