Point Cloud Library (PCL) 1.15.1
Loading...
Searching...
No Matches
depth_sense_grabber.h
1/*
2 * Software License Agreement (BSD License)
3 *
4 * Point Cloud Library (PCL) - www.pointclouds.org
5 * Copyright (c) 2014-, Open Perception, Inc.
6 *
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * * Redistributions in binary form must reproduce the above
16 * copyright notice, this list of conditions and the following
17 * disclaimer in the documentation and/or other materials provided
18 * with the distribution.
19 * * Neither the name of the copyright holder(s) nor the names of its
20 * contributors may be used to endorse or promote products derived
21 * from this software without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 *
36 */
37
38#pragma once
39
40#include <pcl/io/grabber.h>
41#include <pcl/point_cloud.h>
42#include <pcl/point_types.h>
43
44namespace pcl
45{
46
47 // Forward declaration of a class that contains actual grabber implementation
48 namespace io { namespace depth_sense { struct DepthSenseGrabberImpl; } }
49
50 /** Grabber for DepthSense devices (e.g. Creative Senz3D, SoftKinetic DS325).
51 *
52 * Requires [SoftKinetic DepthSense SDK](http://www.softkinetic.com/Support/Download).
53 *
54 * \author Sergey Alexandrov
55 * \ingroup io */
56 class PCL_EXPORTS DepthSenseGrabber : public Grabber
57 {
58
59 public:
60
61 using Ptr = shared_ptr<DepthSenseGrabber>;
62 using ConstPtr = shared_ptr<const DepthSenseGrabber>;
63
66
67 enum Mode
68 {
70 };
71
78
79 /** Create a grabber for a DepthSense device.
80 *
81 * The grabber "captures" the device, making it impossible for other
82 * grabbers to interact with it. The device is "released" when the
83 * grabber is destructed.
84 *
85 * This will throw pcl::IOException if there are no free devices that
86 * match the supplied \a device_id.
87 *
88 * \param[in] device_id device identifier, which might be a serial
89 * number, an index (with '#' prefix), or an empty string (to select the
90 * first available device)
91 */
92 DepthSenseGrabber (const std::string& device_id = "");
93
94 virtual
95 ~DepthSenseGrabber () noexcept;
96
97 virtual void
99
100 virtual void
102
103 virtual bool
104 isRunning () const;
105
106 virtual std::string
107 getName () const
108 {
109 return (std::string ("DepthSenseGrabber"));
110 }
111
112 virtual float
114
115 /** Set the confidence threshold for depth data.
116 *
117 * Each pixel in a depth image output by the device has an associated
118 * confidence value. The higher this value is, the more reliable the
119 * datum is.
120 *
121 * The depth pixels (and their associated 3D points) are filtered based
122 * on the confidence value. Those that are below the threshold are
123 * discarded (i.e. their coordinates are set to NaN). */
124 void
125 setConfidenceThreshold (int threshold);
126
127 /** Enable temporal filtering of the depth data received from the device.
128 *
129 * The window size parameter is not relevant for `DepthSense_None`
130 * filtering type. */
131 void
132 enableTemporalFiltering (TemporalFilteringType type, std::size_t window_size = 1);
133
134 /** Disable temporal filtering. */
135 void
137
138 /** Get the serial number of device captured by the grabber. */
139 std::string
141
142 private:
143
146
147 };
148
149}
virtual bool isRunning() const
Indicates whether the grabber is streaming or not.
void enableTemporalFiltering(TemporalFilteringType type, std::size_t window_size=1)
Enable temporal filtering of the depth data received from the device.
virtual ~DepthSenseGrabber() noexcept
virtual void stop()
For devices that are streaming, the streams are stopped.
void(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &) sig_cb_depth_sense_point_cloud
void disableTemporalFiltering()
Disable temporal filtering.
void setConfidenceThreshold(int threshold)
Set the confidence threshold for depth data.
virtual void start()
For devices that are streaming, the streams are started by calling this method.
shared_ptr< DepthSenseGrabber > Ptr
DepthSenseGrabber(const std::string &device_id="")
Create a grabber for a DepthSense device.
virtual float getFramesPerSecond() const
returns fps.
std::string getDeviceSerialNumber() const
Get the serial number of device captured by the grabber.
void(const pcl::PointCloud< pcl::PointXYZRGBA >::ConstPtr &) sig_cb_depth_sense_point_cloud_rgba
shared_ptr< const DepthSenseGrabber > ConstPtr
virtual std::string getName() const
returns the name of the concrete subclass.
Grabber()=default
Default ctor.
shared_ptr< const PointCloud< PointT > > ConstPtr
Defines all the PCL implemented PointT point type structures.
Definition io.h:517