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

Grabber for the Velodyne High-Definition-Laser (HDL) More...

`#include <pcl/io/hdl_grabber.h>`

Inheritance diagram for pcl::HDLGrabber:

## Classes

struct | HDLDataPacket
struct | HDLFiringData
struct | HDLLaserCorrection
struct | HDLLaserReturn

## Public Types

using | sig_cb_velodyne_hdl_scan_point_cloud_xyz = void(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &, float, float)
| Signal used for a single sector Represents 1 corrected packet from the HDL Velodyne.
using | sig_cb_velodyne_hdl_scan_point_cloud_xyzrgba = void(const pcl::PointCloud< pcl::PointXYZRGBA >::ConstPtr &, float, float)
| Signal used for a single sector Represents 1 corrected packet from the HDL Velodyne.
using | sig_cb_velodyne_hdl_scan_point_cloud_xyzi = void(const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &, float, float)
| Signal used for a single sector Represents 1 corrected packet from the HDL Velodyne with the returned intensity.
using | sig_cb_velodyne_hdl_sweep_point_cloud_xyz = void(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &)
| Signal used for a 360 degree sweep Represents multiple corrected packets from the HDL Velodyne This signal is sent when the Velodyne passes angle "0".
using | sig_cb_velodyne_hdl_sweep_point_cloud_xyzi = void(const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &)
| Signal used for a 360 degree sweep Represents multiple corrected packets from the HDL Velodyne with the returned intensity This signal is sent when the Velodyne passes angle "0".
using | sig_cb_velodyne_hdl_sweep_point_cloud_xyzrgba = void(const pcl::PointCloud< pcl::PointXYZRGBA >::ConstPtr &)
| Signal used for a 360 degree sweep Represents multiple corrected packets from the HDL Velodyne This signal is sent when the Velodyne passes angle "0".

## Public Member Functions

| HDLGrabber (const std::string &correctionsFile="", const std::string &pcapFile="")
| Constructor taking an optional path to an HDL corrections file.
| HDLGrabber (const boost::asio::ip::address &ipAddress, const std::uint16_t port, const std::string &correctionsFile="")
| Constructor taking a specified IP/port and an optional path to an HDL corrections file.
| ~HDLGrabber () noexcept override
| virtual Destructor inherited from the Grabber interface.
void | start () override
| Starts processing the Velodyne packets, either from the network or PCAP file.
void | stop () override
| Stops processing the Velodyne packets, either from the network or PCAP file.
std::string | getName () const override
| Obtains the name of this I/O Grabber.
bool | isRunning () const override
| Check if the grabber is still running.
float | getFramesPerSecond () const override
| Returns the number of frames per second.
void | filterPackets (const boost::asio::ip::address &ipAddress, const std::uint16_t port=443)
| Allows one to filter packets based on the SOURCE IP address and PORT This can be used, for instance, if multiple HDL LIDARs are on the same network.
void | setLaserColorRGB (const pcl::RGB &color, const std::uint8_t laserNumber)
| Allows one to customize the colors used by each laser.
template<typename IterT >
void | setLaserColorRGB (const IterT &begin, const IterT &end)
| Allows one to customize the colors used for each of the lasers.
void | setMinimumDistanceThreshold (float &minThreshold)
| Any returns from the HDL with a distance less than this are discarded.
void | setMaximumDistanceThreshold (float &maxThreshold)
| Any returns from the HDL with a distance greater than this are discarded.
float | getMinimumDistanceThreshold ()
| Returns the current minimum distance threshold, in meters.
float | getMaximumDistanceThreshold ()
| Returns the current maximum distance threshold, in meters.
virtual std::uint8_t | getMaximumNumberOfLasers () const
| Returns the maximum number of lasers.
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 | HDLBlock { BLOCK_0_TO_31 = 0xeeff , BLOCK_32_TO_63 = 0xddff }

## Protected Member Functions

void | fireCurrentSweep ()
void | fireCurrentScan (const std::uint16_t startAngle, const std::uint16_t endAngle)
void | computeXYZI (pcl::PointXYZI &pointXYZI, std::uint16_t azimuth, HDLLaserReturn laserReturn, HDLLaserCorrection correction) const
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

HDLLaserCorrection | laser_corrections_ [HDL_MAX_NUM_LASERS]
std::uint16_t | last_azimuth_
pcl::PointCloud< pcl::PointXYZ >::Ptr | current_scan_xyz_
pcl::PointCloud< pcl::PointXYZ >::Ptr | current_sweep_xyz_
pcl::PointCloud< pcl::PointXYZI >::Ptr | current_scan_xyzi_
pcl::PointCloud< pcl::PointXYZI >::Ptr | current_sweep_xyzi_
pcl::PointCloud< pcl::PointXYZRGBA >::Ptr | current_scan_xyzrgba_
pcl::PointCloud< pcl::PointXYZRGBA >::Ptr | current_sweep_xyzrgba_
boost::signals2::signal< sig_cb_velodyne_hdl_sweep_point_cloud_xyz > * | sweep_xyz_signal_
boost::signals2::signal< sig_cb_velodyne_hdl_sweep_point_cloud_xyzrgba > * | sweep_xyzrgba_signal_
boost::signals2::signal< sig_cb_velodyne_hdl_sweep_point_cloud_xyzi > * | sweep_xyzi_signal_
boost::signals2::signal< sig_cb_velodyne_hdl_scan_point_cloud_xyz > * | scan_xyz_signal_
boost::signals2::signal< sig_cb_velodyne_hdl_scan_point_cloud_xyzrgba > * | scan_xyzrgba_signal_
boost::signals2::signal< sig_cb_velodyne_hdl_scan_point_cloud_xyzi > * | scan_xyzi_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_

## Static Protected Attributes

static const std::uint16_t | HDL_DATA_PORT = 2368
static const std::uint16_t | HDL_NUM_ROT_ANGLES = 36001
static const std::uint8_t | HDL_LASER_PER_FIRING = 32
static const std::uint8_t | HDL_MAX_NUM_LASERS = 64
static const std::uint8_t | HDL_FIRING_PER_PKT = 12

## Detailed Description

Grabber for the Velodyne High-Definition-Laser (HDL)

Author
  Keven Ring keven.nosp@m.@mit.nosp@m.re.or.nosp@m.g

Definition at line 61 of file hdl_grabber.h.

## Member Typedef Documentation

## sig_cb_velodyne_hdl_scan_point_cloud_xyz

using pcl::HDLGrabber::sig_cb_velodyne_hdl_scan_point_cloud_xyz = void (const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &, float, float)

Signal used for a single sector Represents 1 corrected packet from the HDL Velodyne.

Definition at line 67 of file hdl_grabber.h.

## sig_cb_velodyne_hdl_scan_point_cloud_xyzi

using pcl::HDLGrabber::sig_cb_velodyne_hdl_scan_point_cloud_xyzi = void (const pcl::PointCloud<pcl::PointXYZI>::ConstPtr &, float, float)

Signal used for a single sector Represents 1 corrected packet from the HDL Velodyne with the returned intensity.

Definition at line 77 of file hdl_grabber.h.

## sig_cb_velodyne_hdl_scan_point_cloud_xyzrgba

using pcl::HDLGrabber::sig_cb_velodyne_hdl_scan_point_cloud_xyzrgba = void (const pcl::PointCloud<pcl::PointXYZRGBA>::ConstPtr &, float, float)

Signal used for a single sector Represents 1 corrected packet from the HDL Velodyne.

Each laser has a different RGB

Definition at line 72 of file hdl_grabber.h.

## sig_cb_velodyne_hdl_sweep_point_cloud_xyz

using pcl::HDLGrabber::sig_cb_velodyne_hdl_sweep_point_cloud_xyz = void (const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &)

Signal used for a 360 degree sweep Represents multiple corrected packets from the HDL Velodyne This signal is sent when the Velodyne passes angle "0".

Definition at line 83 of file hdl_grabber.h.

## sig_cb_velodyne_hdl_sweep_point_cloud_xyzi

using pcl::HDLGrabber::sig_cb_velodyne_hdl_sweep_point_cloud_xyzi = void (const pcl::PointCloud<pcl::PointXYZI>::ConstPtr &)

Signal used for a 360 degree sweep Represents multiple corrected packets from the HDL Velodyne with the returned intensity This signal is sent when the Velodyne passes angle "0".

Definition at line 89 of file hdl_grabber.h.

## sig_cb_velodyne_hdl_sweep_point_cloud_xyzrgba

using pcl::HDLGrabber::sig_cb_velodyne_hdl_sweep_point_cloud_xyzrgba = void (const pcl::PointCloud<pcl::PointXYZRGBA>::ConstPtr &)

Signal used for a 360 degree sweep Represents multiple corrected packets from the HDL Velodyne This signal is sent when the Velodyne passes angle "0".

Each laser has a different RGB

Definition at line 95 of file hdl_grabber.h.

## Member Enumeration Documentation

## HDLBlock

enum pcl::HDLGrabber::HDLBlock

protected

Enumerator
BLOCK_0_TO_31 |
BLOCK_32_TO_63 |

Definition at line 204 of file hdl_grabber.h.

## Constructor & Destructor Documentation

## HDLGrabber() [1/2]

pcl::HDLGrabber::HDLGrabber | ( | const std::string & | correctionsFile = `""`,
|  | const std::string & | pcapFile = `""`
| ) |  |

Constructor taking an optional path to an HDL corrections file.

The Grabber will listen on the default IP/port for data packets [192.168.3.255/2368]

Parameters

  [in] | correctionsFile | Path to a file which contains the correction parameters for the HDL. This parameter is mandatory for the HDL-64, optional for the HDL-32
  [in] | pcapFile | Path to a file which contains previously captured data packets. This parameter is optional

## HDLGrabber() [2/2]

pcl::HDLGrabber::HDLGrabber | ( | const boost::asio::ip::address & | ipAddress,
|  | const std::uint16_t | port,
|  | const std::string & | correctionsFile = `""`
| ) |  |

Constructor taking a specified IP/port and an optional path to an HDL corrections file.

Parameters

  [in] | ipAddress | IP Address that should be used to listen for HDL packets
  [in] | port | UDP Port that should be used to listen for HDL packets
  [in] | correctionsFile | Path to a file which contains the correction parameters for the HDL. This field is mandatory for the HDL-64, optional for the HDL-32

## ~HDLGrabber()

pcl::HDLGrabber::~HDLGrabber | ( |  | ) |

override noexcept

virtual Destructor inherited from the Grabber interface.

It never throws.

## Member Function Documentation

## computeXYZI()

void pcl::HDLGrabber::computeXYZI | ( | pcl::PointXYZI & | pointXYZI,
|  | std::uint16_t | azimuth,
|  | HDLLaserReturn | laserReturn,
|  | HDLLaserCorrection | correction
| ) |  | const

protected

## filterPackets()

void pcl::HDLGrabber::filterPackets | ( | const boost::asio::ip::address & | ipAddress,
|  | const std::uint16_t | port = `443`
| ) |  |

Allows one to filter packets based on the SOURCE IP address and PORT This can be used, for instance, if multiple HDL LIDARs are on the same network.

## fireCurrentScan()

void pcl::HDLGrabber::fireCurrentScan | ( | const std::uint16_t | startAngle,
|  | const std::uint16_t | endAngle
| ) |  |

protected

## fireCurrentSweep()

void pcl::HDLGrabber::fireCurrentSweep | ( |  | ) |

protected

## getFramesPerSecond()

float pcl::HDLGrabber::getFramesPerSecond | ( |  | ) | const

override virtual

Returns the number of frames per second.

Implements pcl::Grabber.

## getMaximumDistanceThreshold()

float pcl::HDLGrabber::getMaximumDistanceThreshold | ( |  | ) |

Returns the current maximum distance threshold, in meters.

## getMaximumNumberOfLasers()

virtual std::uint8_t pcl::HDLGrabber::getMaximumNumberOfLasers | ( |  | ) | const

virtual

Returns the maximum number of lasers.

Reimplemented in pcl::VLPGrabber.

## getMinimumDistanceThreshold()

float pcl::HDLGrabber::getMinimumDistanceThreshold | ( |  | ) |

Returns the current minimum distance threshold, in meters.

## getName()

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

override virtual

Obtains the name of this I/O Grabber.

Returns
  The name of the grabber

Implements pcl::Grabber.

Reimplemented in pcl::VLPGrabber.

## isRunning()

bool pcl::HDLGrabber::isRunning | ( |  | ) | const

override virtual

Check if the grabber is still running.

Returns
  TRUE if the grabber is running, FALSE otherwise

Implements pcl::Grabber.

## setLaserColorRGB() [1/2]

template<typename IterT >

void pcl::HDLGrabber::setLaserColorRGB | ( | const IterT & | begin,
|  | const IterT & | end
| ) |  |

inline

Allows one to customize the colors used for each of the lasers.

Parameters

  [in] | begin | begin iterator of RGB color array
  [in] | end | end iterator of RGB color array

Definition at line 162 of file hdl_grabber.h.

## setLaserColorRGB() [2/2]

void pcl::HDLGrabber::setLaserColorRGB | ( | const pcl::RGB & | color,
|  | const std::uint8_t | laserNumber
| ) |  |

Allows one to customize the colors used by each laser.

Parameters

  [in] | color | RGB color to set
  [in] | laserNumber | Number of laser to set color

## setMaximumDistanceThreshold()

void pcl::HDLGrabber::setMaximumDistanceThreshold | ( | float & | maxThreshold | ) |

Any returns from the HDL with a distance greater than this are discarded.

This value is in meters Default: 10000.0

## setMinimumDistanceThreshold()

void pcl::HDLGrabber::setMinimumDistanceThreshold | ( | float & | minThreshold | ) |

Any returns from the HDL with a distance less than this are discarded.

This value is in meters Default: 0.0

## start()

void pcl::HDLGrabber::start | ( |  | ) |

override virtual

Starts processing the Velodyne packets, either from the network or PCAP file.

Implements pcl::Grabber.

## stop()

void pcl::HDLGrabber::stop | ( |  | ) |

override virtual

Stops processing the Velodyne packets, either from the network or PCAP file.

Implements pcl::Grabber.

## Member Data Documentation

## current_scan_xyz_

pcl::PointCloud<pcl::PointXYZ>::Ptr pcl::HDLGrabber::current_scan_xyz_

protected

Definition at line 247 of file hdl_grabber.h.

## current_scan_xyzi_

pcl::PointCloud<pcl::PointXYZI>::Ptr pcl::HDLGrabber::current_scan_xyzi_

protected

Definition at line 248 of file hdl_grabber.h.

## current_scan_xyzrgba_

pcl::PointCloud<pcl::PointXYZRGBA>::Ptr pcl::HDLGrabber::current_scan_xyzrgba_

protected

Definition at line 249 of file hdl_grabber.h.

## current_sweep_xyz_

pcl::PointCloud<pcl::PointXYZ>::Ptr pcl::HDLGrabber::current_sweep_xyz_

protected

Definition at line 247 of file hdl_grabber.h.

## current_sweep_xyzi_

pcl::PointCloud<pcl::PointXYZI>::Ptr pcl::HDLGrabber::current_sweep_xyzi_

protected

Definition at line 248 of file hdl_grabber.h.

## current_sweep_xyzrgba_

pcl::PointCloud<pcl::PointXYZRGBA>::Ptr pcl::HDLGrabber::current_sweep_xyzrgba_

protected

Definition at line 249 of file hdl_grabber.h.

## HDL_DATA_PORT

const std::uint16_t pcl::HDLGrabber::HDL_DATA_PORT = 2368

static protected

Definition at line 198 of file hdl_grabber.h.

## HDL_FIRING_PER_PKT

const std::uint8_t pcl::HDLGrabber::HDL_FIRING_PER_PKT = 12

static protected

Definition at line 202 of file hdl_grabber.h.

## HDL_LASER_PER_FIRING

const std::uint8_t pcl::HDLGrabber::HDL_LASER_PER_FIRING = 32

static protected

Definition at line 200 of file hdl_grabber.h.

## HDL_MAX_NUM_LASERS

const std::uint8_t pcl::HDLGrabber::HDL_MAX_NUM_LASERS = 64

static protected

Definition at line 201 of file hdl_grabber.h.

## HDL_NUM_ROT_ANGLES

const std::uint16_t pcl::HDLGrabber::HDL_NUM_ROT_ANGLES = 36001

static protected

Definition at line 199 of file hdl_grabber.h.

## laser_corrections_

HDLLaserCorrection pcl::HDLGrabber::laser_corrections_[HDL_MAX_NUM_LASERS]

protected

Definition at line 245 of file hdl_grabber.h.

## last_azimuth_

std::uint16_t pcl::HDLGrabber::last_azimuth_

protected

Definition at line 246 of file hdl_grabber.h.

## scan_xyz_signal_

boost::signals2::signal<sig_cb_velodyne_hdl_scan_point_cloud_xyz>* pcl::HDLGrabber::scan_xyz_signal_

protected

Definition at line 253 of file hdl_grabber.h.

## scan_xyzi_signal_

boost::signals2::signal<sig_cb_velodyne_hdl_scan_point_cloud_xyzi>* pcl::HDLGrabber::scan_xyzi_signal_

protected

Definition at line 255 of file hdl_grabber.h.

## scan_xyzrgba_signal_

boost::signals2::signal<sig_cb_velodyne_hdl_scan_point_cloud_xyzrgba>* pcl::HDLGrabber::scan_xyzrgba_signal_

protected

Definition at line 254 of file hdl_grabber.h.

## sweep_xyz_signal_

boost::signals2::signal<sig_cb_velodyne_hdl_sweep_point_cloud_xyz>* pcl::HDLGrabber::sweep_xyz_signal_

protected

Definition at line 250 of file hdl_grabber.h.

## sweep_xyzi_signal_

boost::signals2::signal<sig_cb_velodyne_hdl_sweep_point_cloud_xyzi>* pcl::HDLGrabber::sweep_xyzi_signal_

protected

Definition at line 252 of file hdl_grabber.h.

## sweep_xyzrgba_signal_

boost::signals2::signal<sig_cb_velodyne_hdl_sweep_point_cloud_xyzrgba>* pcl::HDLGrabber::sweep_xyzrgba_signal_

protected

Definition at line 251 of file hdl_grabber.h.

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

- pcl/io/hdl_grabber.h