Point Cloud Library (PCL)  1.7.0
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:

List of all members.

Public Member Functions

 DinastGrabber (const int device_position=1)
 Constructor that sets up the grabber constants.
virtual ~DinastGrabber () throw ()
 Destructor.
virtual bool isRunning () const
 Check if the grabber is running.
virtual std::string getName () const
 Returns the name of the concrete subclass, DinastGrabber.
virtual void start ()
 Start the data acquisition process.
virtual void stop ()
 Stop the data acquisition process.
virtual float getFramesPerSecond () const
 Obtain the number of frames per second (FPS).
std::string getDeviceVersion ()
 Get the version number of the currently opened device.

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.
void setupDevice (int device_position, const int id_vendor=0x18d1, const int id_product=0x1402)
 Setup a Dinast 3D camera device.
bool USBRxControlData (const unsigned char req_code, unsigned char *buffer, int length)
 Send a RX data packet request.
bool USBTxControlData (const unsigned char req_code, unsigned char *buffer, int length)
 Send a TX data packet request.
int checkHeader ()
 Check if we have a header in the global buffer, and return the position of the next valid image.
void readImage ()
 Read image data and leaves it on image_.
pcl::PointCloud
< pcl::PointXYZI >::Ptr 
getXYZIPointCloud ()
 Obtains XYZI Point Cloud from the image of the camera.
void captureThreadFunction ()
 The function in charge of getting the data from the camera.

Protected Attributes

int image_width_
 Width of image.
int image_height_
 Height of image.
int image_size_
 Total size of image.
int sync_packet_size_
 Length of a sync packet.
double dist_max_2d_
double fov_
 diagonal Field of View
libusb_context * context_
 The libusb context.
struct libusb_device_handle * device_handle_
 the actual device_handle for the camera
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.
boost::circular_buffer
< unsigned char > 
g_buffer_
 Global circular buffer.
unsigned char bulk_ep_
 Bulk endpoint address value.
unsigned char * image_
bool second_image_
 Since there is no header after the first image, we need to save the state.
bool running_
boost::thread capture_thread_
boost::mutex capture_mutex_
boost::signals2::signal
< sig_cb_dinast_point_cloud > * 
point_cloud_signal_

Detailed Description

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

Author:
Marco A. Gutierrez <marcog@unex.es>

Definition at line 57 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 199 of file dinast_grabber.h.

Size of pixel.

Enumerator:
RAW8 
RGB16 
RGB24 
RGB32 

Definition at line 179 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

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

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 [inline, virtual]

Returns the name of the concrete subclass, DinastGrabber.

Returns:
DinastGrabber.

Implements pcl::Grabber.

Definition at line 81 of file dinast_grabber.h.

Obtains XYZI Point Cloud from the image of the camera.

Parameters:
[out]thepoint 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)
[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)
[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 196 of file dinast_grabber.h.

boost::mutex pcl::DinastGrabber::capture_mutex_ [mutable, protected]

Definition at line 210 of file dinast_grabber.h.

boost::thread pcl::DinastGrabber::capture_thread_ [protected]

Definition at line 208 of file dinast_grabber.h.

libusb_context* pcl::DinastGrabber::context_ [protected]

The libusb context.

Definition at line 182 of file dinast_grabber.h.

struct libusb_device_handle* pcl::DinastGrabber::device_handle_ [protected]

the actual device_handle for the camera

Definition at line 185 of file dinast_grabber.h.

Definition at line 173 of file dinast_grabber.h.

double pcl::DinastGrabber::fov_ [protected]

diagonal Field of View

Definition at line 176 of file dinast_grabber.h.

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

Global circular buffer.

Definition at line 193 of file dinast_grabber.h.

unsigned char* pcl::DinastGrabber::image_ [protected]

Definition at line 201 of file dinast_grabber.h.

Height of image.

Definition at line 165 of file dinast_grabber.h.

Total size of image.

Definition at line 168 of file dinast_grabber.h.

Width of image.

Definition at line 162 of file dinast_grabber.h.

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

Definition at line 211 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 190 of file dinast_grabber.h.

bool pcl::DinastGrabber::running_ [protected]

Definition at line 206 of file dinast_grabber.h.

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

Definition at line 204 of file dinast_grabber.h.

Length of a sync packet.

Definition at line 171 of file dinast_grabber.h.


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