Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
velodyne_rawdata::RawData Class Reference

Velodyne data conversion class. More...

#include <rawdata.h>

Classes

struct  Config
 

Public Member Functions

 RawData ()
 
int scansPerPacket () const
 
void setParameters (double min_range, double max_range, double view_direction, double view_width)
 
boost::optional< velodyne_pointcloud::Calibrationsetup (ros::NodeHandle private_nh)
 Set up for data processing. More...
 
int setupOffline (std::string calibration_file, double max_range_, double min_range_)
 Set up for data processing offline. Performs the same initialization as in setup, in the abscence of a ros::NodeHandle. this method is useful if unpacking data directly from bag files, without passing through a communication overhead. More...
 
void unpack (const velodyne_msgs::VelodynePacket &pkt, DataContainerBase &data, const ros::Time &scan_start_time)
 convert raw packet to point cloud More...
 
 ~RawData ()
 

Private Member Functions

bool buildTimings ()
 setup per-point timing offsets More...
 
void unpack_vlp16 (const velodyne_msgs::VelodynePacket &pkt, DataContainerBase &data, const ros::Time &scan_start_time)
 convert raw VLP16 packet to point cloud More...
 

Private Attributes

velodyne_pointcloud::Calibration calibration_
 
Config config_
 
float cos_rot_table_ [ROTATION_MAX_UNITS]
 
float sin_rot_table_ [ROTATION_MAX_UNITS]
 
std::vector< std::vector< float > > timing_offsets
 

Detailed Description

Velodyne data conversion class.

Definition at line 133 of file rawdata.h.

Constructor & Destructor Documentation

velodyne_rawdata::RawData::RawData ( )

Definition at line 49 of file rawdata.cc.

velodyne_rawdata::RawData::~RawData ( )
inline

Definition at line 137 of file rawdata.h.

Member Function Documentation

bool velodyne_rawdata::RawData::buildTimings ( )
private

setup per-point timing offsets

Runs during initialization and determines the firing time for each point in the scan

NOTE: Does not support all sensors yet (vlp16, vlp32, and hdl32 are currently supported)

Build a timing table for each block/firing. Stores in timing_offsets vector

Definition at line 95 of file rawdata.cc.

int velodyne_rawdata::RawData::scansPerPacket ( ) const

Definition at line 80 of file rawdata.cc.

void velodyne_rawdata::RawData::setParameters ( double  min_range,
double  max_range,
double  view_direction,
double  view_width 
)

Update parameters: conversions and update

Definition at line 52 of file rawdata.cc.

boost::optional< velodyne_pointcloud::Calibration > velodyne_rawdata::RawData::setup ( ros::NodeHandle  private_nh)

Set up for data processing.

Perform initializations needed before data processing can begin:

  • read device-specific angles calibration
Parameters
private_nhprivate node handle for ROS parameters
Returns
an optional calibration

Set up for on-line operation.

Definition at line 197 of file rawdata.cc.

int velodyne_rawdata::RawData::setupOffline ( std::string  calibration_file,
double  max_range_,
double  min_range_ 
)

Set up for data processing offline. Performs the same initialization as in setup, in the abscence of a ros::NodeHandle. this method is useful if unpacking data directly from bag files, without passing through a communication overhead.

Parameters
calibration_filepath to the calibration file
max_range_cutoff for maximum range
min_range_cutoff for minimum range
Returns
0 if successful; errno value for failure

Set up for offline operation

Definition at line 233 of file rawdata.cc.

void velodyne_rawdata::RawData::unpack ( const velodyne_msgs::VelodynePacket &  pkt,
DataContainerBase data,
const ros::Time scan_start_time 
)

convert raw packet to point cloud

Parameters
pktraw packet to unpack
pcshared pointer to point cloud (points are appended)

special parsing for the VLP16

Position Calculation

the new term of 'vert_offset * sin_vert_angle' was added to the expression due to the mathemathical model we used.

the new term of 'vert_offset * sin_vert_angle' was added to the expression due to the mathemathical model we used.

the expression wiht '-' is proved to be better than the one with '+'

the new term of 'vert_offset * sin_vert_angle' was added to the expression due to the mathemathical model we used.

the new term of 'vert_offset * cos_vert_angle' was added to the expression due to the mathemathical model we used.

Use standard ROS coordinate system (right-hand rule)

Intensity Calculation

Definition at line 267 of file rawdata.cc.

void velodyne_rawdata::RawData::unpack_vlp16 ( const velodyne_msgs::VelodynePacket &  pkt,
DataContainerBase data,
const ros::Time scan_start_time 
)
private

convert raw VLP16 packet to point cloud

add private function to handle the VLP16

Parameters
pktraw packet to unpack
pcshared pointer to point cloud (points are appended)

Position Calculation

correct for the laser rotation as a function of timing during the firings

the new term of 'vert_offset * sin_vert_angle' was added to the expression due to the mathemathical model we used.

the new term of 'vert_offset * sin_vert_angle' was added to the expression due to the mathemathical model we used.

the new term of 'vert_offset * sin_vert_angle' was added to the expression due to the mathemathical model we used.

the new term of 'vert_offset * cos_vert_angle' was added to the expression due to the mathemathical model we used.

Use standard ROS coordinate system (right-hand rule)

Intensity Calculation

Definition at line 440 of file rawdata.cc.

Member Data Documentation

velodyne_pointcloud::Calibration velodyne_rawdata::RawData::calibration_
private

Calibration file

Definition at line 194 of file rawdata.h.

Config velodyne_rawdata::RawData::config_
private

Definition at line 189 of file rawdata.h.

float velodyne_rawdata::RawData::cos_rot_table_[ROTATION_MAX_UNITS]
private

Definition at line 196 of file rawdata.h.

float velodyne_rawdata::RawData::sin_rot_table_[ROTATION_MAX_UNITS]
private

Definition at line 195 of file rawdata.h.

std::vector< std::vector<float> > velodyne_rawdata::RawData::timing_offsets
private

Definition at line 199 of file rawdata.h.


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


velodyne_pointcloud
Author(s): Jack O'Quin, Piyush Khandelwal, Jesse Vera, Sebastian Pütz
autogenerated on Sun Sep 6 2020 03:25:30