W3cubDocs

/PointCloudLibrary

Grabber for DINAST devices (i.e., IPA-1002, IPA-1110, IPA-2001) More...

#include <pcl/io/dinast_grabber.h>

Public Member Functions

DinastGrabber (const int device_position=1)
Constructor that sets up the grabber constants. More...
~DinastGrabber () noexcept
Destructor. More...
bool isRunning () const override
Check if the grabber is running. More...
std::string getName () const override
Returns the name of the concrete subclass, DinastGrabber. More...
void start () override
Start the data acquisition process. More...
void stop () override
Stop the data acquisition process. More...
float getFramesPerSecond () const override
Obtain the number of frames per second (FPS). More...
std::string getDeviceVersion ()
Get the version number of the currently opened device. More...
- Public Member Functions inherited from pcl::Grabber
Grabber ()=default
Default ctor. More...
Grabber (const Grabber &)=delete
No copy ctor since Grabber can't be copied. More...
Grabber & operator= (const Grabber &)=delete
No copy assign operator since Grabber can't be copied. More...
Grabber (Grabber &&)=default
Move ctor. More...
Grabber & operator= (Grabber &&)=default
Move assign operator. More...
virtual ~Grabber () noexcept=default
virtual destructor. More...
template<typename T >
boost::signals2::connection registerCallback (const std::function< T > &callback)
registers a callback function/method to a signal with the corresponding signature More...
template<typename T >
bool providesCallback () const noexcept
indicates whether a signal with given parameter-type exists or not More...
bool toggle ()
For devices that are streaming, stopped streams are started and running stream are stopped. More...

Protected Types

enum pixel_size { RAW8 =1, RGB16 =2, RGB24 =3, RGB32 =4 }
Size of pixel. More...
enum { CMD_READ_START =0xC7, CMD_READ_STOP =0xC8, CMD_GET_VERSION =0xDC, CMD_SEND_DATA =0xDE }
Device command values. More...

Protected Member Functions

void onInit (const int device_id)
On initialization processing. More...
void setupDevice (int device_position, const int id_vendor=0x18d1, const int id_product=0x1402)
Setup a Dinast 3D camera device. More...
bool USBRxControlData (const unsigned char req_code, unsigned char *buffer, int length)
Send a RX data packet request. More...
bool USBTxControlData (const unsigned char req_code, unsigned char *buffer, int length)
Send a TX data packet request. More...
int checkHeader ()
Check if we have a header in the global buffer, and return the position of the next valid image. More...
void readImage ()
Read image data and leaves it on image_. More...
pcl::PointCloud< pcl::PointXYZI >::Ptr getXYZIPointCloud ()
Obtains XYZI Point Cloud from the image of the camera. More...
void captureThreadFunction ()
The function in charge of getting the data from the camera. More...
- Protected Member Functions inherited from pcl::Grabber
virtual void signalsChanged ()
template<typename T >
boost::signals2::signal< T > * find_signal () const noexcept
template<typename T >
int num_slots () const noexcept
template<typename T >
void disconnect_all_slots ()
template<typename T >
void block_signal ()
template<typename T >
void unblock_signal ()
void block_signals ()
void unblock_signals ()
template<typename T >
boost::signals2::signal< T > * createSignal ()

Protected Attributes

int image_width_
Width of image. More...
int image_height_
Height of image. More...
int image_size_
Total size of image. More...
int sync_packet_size_
Length of a sync packet. More...
double dist_max_2d_
double fov_
diagonal Field of View More...
libusb_context * context_
The libusb context. More...
struct libusb_device_handle * device_handle_
the actual device_handle for the camera More...
unsigned char * raw_buffer_
Temporary USB read buffer, since we read two RGB16 images at a time size is the double of two images plus a sync packet. More...
boost::circular_buffer< unsigned char > g_buffer_
Global circular buffer. More...
unsigned char bulk_ep_
Bulk endpoint address value. More...
unsigned char * image_
bool second_image_
Since there is no header after the first image, we need to save the state. More...
bool running_
std::thread capture_thread_
std::mutex capture_mutex_
boost::signals2::signal< sig_cb_dinast_point_cloud > * point_cloud_signal_
- Protected Attributes inherited from pcl::Grabber
std::map< std::string, std::unique_ptr< boost::signals2::signal_base > > signals_
std::map< std::string, std::vector< boost::signals2::connection > > connections_
std::map< std::string, std::vector< boost::signals2::shared_connection_block > > shared_connections_

Detailed Description

Grabber for DINAST devices (i.e., IPA-1002, IPA-1110, IPA-2001)

Author
Marco A. Gutierrez marco.nosp@m.g@un.nosp@m.ex.es

Definition at line 59 of file dinast_grabber.h.

Member Enumeration Documentation

anonymous enum

anonymous enum
protected

Device command values.

Enumerator
CMD_READ_START
CMD_READ_STOP
CMD_GET_VERSION
CMD_SEND_DATA

Definition at line 203 of file dinast_grabber.h.

pixel_size

Size of pixel.

Enumerator
RAW8
RGB16
RGB24
RGB32

Definition at line 183 of file dinast_grabber.h.

Constructor & Destructor Documentation

DinastGrabber()

pcl::DinastGrabber::DinastGrabber ( const int device_position = 1 )

Constructor that sets up the grabber constants.

Parameters
[in] device_position Number corresponding the device to grab

~DinastGrabber()

pcl::DinastGrabber::~DinastGrabber ( )
noexcept

Destructor.

It never throws.

Member Function Documentation

captureThreadFunction()

void pcl::DinastGrabber::captureThreadFunction ( )
protected

The function in charge of getting the data from the camera.

checkHeader()

int pcl::DinastGrabber::checkHeader ( )
protected

Check if we have a header in the global buffer, and return the position of the next valid image.

Note
If the image in the buffer is partial, return -1, as we have to wait until we add more data to it.
Returns
the position of the next valid image (i.e., right after a valid header) or -1 in case the buffer either doesn't have an image or has a partial image

getDeviceVersion()

std::string pcl::DinastGrabber::getDeviceVersion ( )

Get the version number of the currently opened device.

getFramesPerSecond()

float pcl::DinastGrabber::getFramesPerSecond ( ) const
overridevirtual

Obtain the number of frames per second (FPS).

Implements pcl::Grabber.

getName()

std::string pcl::DinastGrabber::getName ( ) const
inlineoverridevirtual

Returns the name of the concrete subclass, DinastGrabber.

Returns
DinastGrabber.

Implements pcl::Grabber.

Definition at line 83 of file dinast_grabber.h.

getXYZIPointCloud()

pcl::PointCloud<pcl::PointXYZI>::Ptr pcl::DinastGrabber::getXYZIPointCloud ( )
protected

Obtains XYZI Point Cloud from the image of the camera.

Returns
the point cloud from the image data

isRunning()

bool pcl::DinastGrabber::isRunning ( ) const
overridevirtual

Check if the grabber is running.

Returns
true if grabber is running / streaming. False otherwise.

Implements pcl::Grabber.

onInit()

void pcl::DinastGrabber::onInit ( const int device_id )
protected

On initialization processing.

readImage()

void pcl::DinastGrabber::readImage ( )
protected

Read image data and leaves it on image_.

setupDevice()

void pcl::DinastGrabber::setupDevice ( int device_position,
const int id_vendor = 0x18d1,
const int id_product = 0x1402
)
protected

Setup a Dinast 3D camera device.

Parameters
[in] device_position Number corresponding the device to grab
[in] id_vendor The ID of the camera vendor (should be 0x18d1)
[in] id_product The ID of the product (should be 0x1402)

start()

void pcl::DinastGrabber::start ( )
overridevirtual

Start the data acquisition process.

Implements pcl::Grabber.

stop()

void pcl::DinastGrabber::stop ( )
overridevirtual

Stop the data acquisition process.

Implements pcl::Grabber.

USBRxControlData()

bool pcl::DinastGrabber::USBRxControlData ( const unsigned char req_code,
unsigned char * buffer,
int length
)
protected

Send a RX data packet request.

Parameters
[in] req_code the request to send (the request field for the setup packet)
buffer
[in] length the length field for the setup packet. The data buffer should be at least this size.

USBTxControlData()

bool pcl::DinastGrabber::USBTxControlData ( const unsigned char req_code,
unsigned char * buffer,
int length
)
protected

Send a TX data packet request.

Parameters
[in] req_code the request to send (the request field for the setup packet)
buffer
[in] length the length field for the setup packet. The data buffer should be at least this size.

Member Data Documentation

bulk_ep_

unsigned char pcl::DinastGrabber::bulk_ep_
protected

Bulk endpoint address value.

Definition at line 200 of file dinast_grabber.h.

capture_mutex_

std::mutex pcl::DinastGrabber::capture_mutex_
mutableprotected

Definition at line 214 of file dinast_grabber.h.

capture_thread_

std::thread pcl::DinastGrabber::capture_thread_
protected

Definition at line 212 of file dinast_grabber.h.

context_

libusb_context* pcl::DinastGrabber::context_
protected

The libusb context.

Definition at line 186 of file dinast_grabber.h.

device_handle_

struct libusb_device_handle* pcl::DinastGrabber::device_handle_
protected

the actual device_handle for the camera

Definition at line 189 of file dinast_grabber.h.

dist_max_2d_

double pcl::DinastGrabber::dist_max_2d_
protected

Definition at line 177 of file dinast_grabber.h.

fov_

double pcl::DinastGrabber::fov_
protected

diagonal Field of View

Definition at line 180 of file dinast_grabber.h.

g_buffer_

boost::circular_buffer<unsigned char> pcl::DinastGrabber::g_buffer_
protected

Global circular buffer.

Definition at line 197 of file dinast_grabber.h.

image_

unsigned char* pcl::DinastGrabber::image_
protected

Definition at line 205 of file dinast_grabber.h.

image_height_

int pcl::DinastGrabber::image_height_
protected

Height of image.

Definition at line 169 of file dinast_grabber.h.

image_size_

int pcl::DinastGrabber::image_size_
protected

Total size of image.

Definition at line 172 of file dinast_grabber.h.

image_width_

int pcl::DinastGrabber::image_width_
protected

Width of image.

Definition at line 166 of file dinast_grabber.h.

point_cloud_signal_

boost::signals2::signal<sig_cb_dinast_point_cloud>* pcl::DinastGrabber::point_cloud_signal_
protected

Definition at line 215 of file dinast_grabber.h.

raw_buffer_

unsigned char* pcl::DinastGrabber::raw_buffer_
protected

Temporary USB read buffer, since we read two RGB16 images at a time size is the double of two images plus a sync packet.

Definition at line 194 of file dinast_grabber.h.

running_

bool pcl::DinastGrabber::running_
protected

Definition at line 210 of file dinast_grabber.h.

second_image_

bool pcl::DinastGrabber::second_image_
protected

Since there is no header after the first image, we need to save the state.

Definition at line 208 of file dinast_grabber.h.

sync_packet_size_

int pcl::DinastGrabber::sync_packet_size_
protected

Length of a sync packet.

Definition at line 175 of file dinast_grabber.h.


The documentation for this class was generated from the following file:

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_dinast_grabber.html