Loading...
Searching...
No Matches
pcl::DinastGrabber Class Reference
Module io

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

## 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 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_ {320}
| Width of image.
int | image_height_ {240}
| Height of image.
int | image_size_ {image_width_ * image_height_}
| Total size of image.
int | sync_packet_size_ {512}
| Length of a sync packet.
double | dist_max_2d_ {1. / (image_width_ / 2.)}
double | fov_ {64. * M_PI / 180.}
| diagonal Field of View
libusb_context * | context_ {nullptr}
| The libusb context.
struct libusb_device_handle * | device_handle_ {nullptr}
| the actual device_handle for the camera
unsigned char * | raw_buffer_ {nullptr}
| 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_ {std::numeric_limits<unsigned char>::max ()}
| Bulk endpoint address value.
unsigned char * | image_ {nullptr}
bool | second_image_ {false}
| Since there is no header after the first image, we need to save the state.
bool | running_ {false}
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

enum pcl::DinastGrabber::pixel_size

protected

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 | ( |  | ) |

override 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

override virtual

Obtain the number of frames per second (FPS).

Implements pcl::Grabber.

## getName()

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

inline override virtual

Returns the name of the concrete subclass, DinastGrabber.

Returns
  DinastGrabber.

Implements pcl::Grabber.

Definition at line 83 of file dinast_grabber.h.

References getName().

Referenced by getName().

## 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

override virtual

Check if the grabber is running.

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

Implements pcl::Grabber.

References isRunning().

Referenced by isRunning().

## 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 | ( |  | ) |

override virtual

Start the data acquisition process.

Implements pcl::Grabber.

## stop()

void pcl::DinastGrabber::stop | ( |  | ) |

override virtual

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_ {std::numeric_limits<unsigned char>::max ()}

protected

Bulk endpoint address value.

Definition at line 200 of file dinast_grabber.h.

## capture_mutex_

std::mutex pcl::DinastGrabber::capture_mutex_

mutable protected

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_ {nullptr}

protected

The libusb context.

Definition at line 186 of file dinast_grabber.h.

## device_handle_

struct libusb_device_handle* pcl::DinastGrabber::device_handle_ {nullptr}

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_ {1. / (image_width_ / 2.)}

protected

Definition at line 177 of file dinast_grabber.h.

## fov_

double pcl::DinastGrabber::fov_ {64. * M_PI / 180.}

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_ {nullptr}

protected

Definition at line 205 of file dinast_grabber.h.

## image_height_

int pcl::DinastGrabber::image_height_ {240}

protected

Height of image.

Definition at line 169 of file dinast_grabber.h.

## image_size_

int pcl::DinastGrabber::image_size_ {image_width_ * image_height_}

protected

Total size of image.

Definition at line 172 of file dinast_grabber.h.

## image_width_

int pcl::DinastGrabber::image_width_ {320}

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_ {nullptr}

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_ {false}

protected

Definition at line 210 of file dinast_grabber.h.

## second_image_

bool pcl::DinastGrabber::second_image_ {false}

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_ {512}

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:

- pcl/io/dinast_grabber.h