Point Cloud Library (PCL)  1.9.1-dev
List of all members | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
pcl::DinastGrabber Class Reference

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

#include <pcl/io/dinast_grabber.h>

+ Inheritance diagram for pcl::DinastGrabber:

Public Member Functions

 DinastGrabber (const int device_position=1)
 Constructor that sets up the grabber constants. More...
 
virtual ~DinastGrabber () throw ()
 Destructor. More...
 
virtual bool isRunning () const
 Check if the grabber is running. More...
 
virtual std::string getName () const
 Returns the name of the concrete subclass, DinastGrabber. More...
 
virtual void start ()
 Start the data acquisition process. More...
 
virtual void stop ()
 Stop the data acquisition process. More...
 
virtual float getFramesPerSecond () const
 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 ()
 Constructor. More...
 
virtual ~Grabber () throw ()
 virtual destructor. More...
 
template<typename T >
boost::signals2::connection registerCallback (const boost::function< T > &callback)
 registers a callback function/method to a signal with the corresponding signature More...
 
template<typename T >
bool providesCallback () const
 indicates whether a signal with given parameter-type exists or not 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
 
template<typename T >
int num_slots () const
 
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_
 
boost::thread capture_thread_
 
boost::mutex capture_mutex_
 
boost::signals2::signal< sig_cb_dinast_point_cloud > * point_cloud_signal_
 
- Protected Attributes inherited from pcl::Grabber
std::map< std::string, 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 56 of file dinast_grabber.h.

Member Enumeration Documentation

anonymous enum
protected

Device command values.

Enumerator
CMD_READ_START 
CMD_READ_STOP 
CMD_GET_VERSION 
CMD_SEND_DATA 

Definition at line 200 of file dinast_grabber.h.

Size of pixel.

Enumerator
RAW8 
RGB16 
RGB24 
RGB32 

Definition at line 180 of file dinast_grabber.h.

Constructor & Destructor Documentation

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

Constructor that sets up the grabber constants.

Parameters
[in]device_positionNumber corresponding the device to grab
virtual pcl::DinastGrabber::~DinastGrabber ( )
throw (
)
virtual

Destructor.

It never throws.

Member Function Documentation

void pcl::DinastGrabber::captureThreadFunction ( )
protected

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

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
std::string pcl::DinastGrabber::getDeviceVersion ( )

Get the version number of the currently opened device.

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

Obtain the number of frames per second (FPS).

Implements pcl::Grabber.

virtual std::string pcl::DinastGrabber::getName ( ) const
inlinevirtual

Returns the name of the concrete subclass, DinastGrabber.

Returns
DinastGrabber.

Implements pcl::Grabber.

Definition at line 80 of file dinast_grabber.h.

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
virtual bool pcl::DinastGrabber::isRunning ( ) const
virtual

Check if the grabber is running.

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

Implements pcl::Grabber.

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

On initialization processing.

void pcl::DinastGrabber::readImage ( )
protected

Read image data and leaves it on image_.

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_positionNumber corresponding the device to grab
[in]id_vendorThe ID of the camera vendor (should be 0x18d1)
[in]id_productThe ID of the product (should be 0x1402)
virtual void pcl::DinastGrabber::start ( )
virtual

Start the data acquisition process.

Implements pcl::Grabber.

virtual void pcl::DinastGrabber::stop ( )
virtual

Stop the data acquisition process.

Implements pcl::Grabber.

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

Send a RX data packet request.

Parameters
[in]req_codethe request to send (the request field for the setup packet)
buffer
[in]lengththe length field for the setup packet. The data buffer should be at least this size.
bool pcl::DinastGrabber::USBTxControlData ( const unsigned char  req_code,
unsigned char *  buffer,
int  length 
)
protected

Send a TX data packet request.

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

Member Data Documentation

unsigned char pcl::DinastGrabber::bulk_ep_
protected

Bulk endpoint address value.

Definition at line 197 of file dinast_grabber.h.

boost::mutex pcl::DinastGrabber::capture_mutex_
mutableprotected

Definition at line 211 of file dinast_grabber.h.

boost::thread pcl::DinastGrabber::capture_thread_
protected

Definition at line 209 of file dinast_grabber.h.

libusb_context* pcl::DinastGrabber::context_
protected

The libusb context.

Definition at line 183 of file dinast_grabber.h.

struct libusb_device_handle* pcl::DinastGrabber::device_handle_
protected

the actual device_handle for the camera

Definition at line 186 of file dinast_grabber.h.

double pcl::DinastGrabber::dist_max_2d_
protected

Definition at line 174 of file dinast_grabber.h.

double pcl::DinastGrabber::fov_
protected

diagonal Field of View

Definition at line 177 of file dinast_grabber.h.

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

Global circular buffer.

Definition at line 194 of file dinast_grabber.h.

unsigned char* pcl::DinastGrabber::image_
protected

Definition at line 202 of file dinast_grabber.h.

int pcl::DinastGrabber::image_height_
protected

Height of image.

Definition at line 166 of file dinast_grabber.h.

int pcl::DinastGrabber::image_size_
protected

Total size of image.

Definition at line 169 of file dinast_grabber.h.

int pcl::DinastGrabber::image_width_
protected

Width of image.

Definition at line 163 of file dinast_grabber.h.

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

Definition at line 212 of file dinast_grabber.h.

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 191 of file dinast_grabber.h.

bool pcl::DinastGrabber::running_
protected

Definition at line 207 of file dinast_grabber.h.

bool pcl::DinastGrabber::second_image_
protected

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

Definition at line 205 of file dinast_grabber.h.

int pcl::DinastGrabber::sync_packet_size_
protected

Length of a sync packet.

Definition at line 172 of file dinast_grabber.h.


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