Autoware.Auto
autoware::drivers::velodyne_driver::VLS128Data Class Reference

#include <vls128_data.hpp>

Collaboration diagram for autoware::drivers::velodyne_driver::VLS128Data:

Public Types

using BlockFlag = uint8_t[2U]
 

Public Member Functions

 VLS128Data (const float32_t rpm)
 
uint32_t azimuth_offset (uint16_t num_banked_pts, uint32_t block_id, uint32_t pt_id) const
 
uint32_t altitude (uint16_t num_banked_pts, uint32_t block_id, uint32_t pt_id) const
 
uint16_t seq_id (uint16_t num_blocks, uint32_t pt_id) const noexcept
 
uint16_t num_blocks_per_revolution () const noexcept
 Get number of blocks generated in a single revolution. More...
 
std::pair< bool8_t, uint16_t > check_flag (const BlockFlag &flag)
 

Static Public Member Functions

static constexpr float32_t distance_resolution () noexcept
 Get distance resolution of VLS128. More...
 

Static Public Attributes

static constexpr float32_t FIRE_SEQ_OFFSET_US = 53.3F
 full (128 point) fire sequence takes this long to cycle More...
 
static constexpr float32_t FIRE_DURATION_US = 2.665F
 A group of 8 lasers takes this much time: More...
 
static constexpr float32_t MAINTENANCE_DURATION1_US = 2.665F
 
static constexpr uint16_t NUM_GROUPS_PER_SEQ {16U}
 
static constexpr uint16_t NUM_LASERS {128U}
 
static constexpr uint16_t GROUP_SIZE {8U}
 
static constexpr float32_t NUM_SEQUENCES_PER_BLOCK {float32_t(NUM_POINTS_PER_BLOCK) / NUM_LASERS}
 
static constexpr float32_t DISTANCE_RESOLUTION {0.004f}
 

Detailed Description

Class implementing vls-128 specific computation and caches. The manual in the following link is used as the reference: https://gpsolution.oss-cn-beijing.aliyuncs.com/manual/LiDAR/MANUAL%2CUSERS%2CVLP-128.pdf

Member Typedef Documentation

◆ BlockFlag

Constructor & Destructor Documentation

◆ VLS128Data()

autoware::drivers::velodyne_driver::VLS128Data::VLS128Data ( const float32_t  rpm)
explicit

Member Function Documentation

◆ altitude()

uint32_t autoware::drivers::velodyne_driver::VLS128Data::altitude ( uint16_t  num_banked_pts,
uint32_t  block_id,
uint32_t  pt_id 
) const

Get the altitude angle for a given point in the given block.

Parameters
num_banked_ptsNumber of points from the sequence that were transferred on previous blocks.
block_idBlock ID within the packet.
pt_idPoint ID within the block.
Returns
Altitude angle for the given laser.

◆ azimuth_offset()

uint32_t autoware::drivers::velodyne_driver::VLS128Data::azimuth_offset ( uint16_t  num_banked_pts,
uint32_t  block_id,
uint32_t  pt_id 
) const

Get the azimuth offset for a given point in the given block.

Parameters
num_banked_ptsNumber of points from the sequence that were transferred on previous blocks.
block_idBlock ID within the packet.
pt_idPoint ID within the block.
Returns
Azimuth offset for the given laser.

◆ check_flag()

std::pair< bool8_t, uint16_t > autoware::drivers::velodyne_driver::VLS128Data::check_flag ( const BlockFlag flag)

Check the block flag for validity and return the number of banked points.

Parameters
flag2 byte flag from the block. Should be one of 0xFFEE 0xFFDD 0xFFCC 0xFFBB
Returns
A pair that contains a bool representing the validity of the flag and an integer containing the number of banked points.

◆ distance_resolution()

static constexpr float32_t autoware::drivers::velodyne_driver::VLS128Data::distance_resolution ( )
inlinestaticnoexcept

Get distance resolution of VLS128.

◆ num_blocks_per_revolution()

uint16_t autoware::drivers::velodyne_driver::VLS128Data::num_blocks_per_revolution ( ) const
noexcept

Get number of blocks generated in a single revolution.

◆ seq_id()

uint16_t autoware::drivers::velodyne_driver::VLS128Data::seq_id ( uint16_t  num_blocks,
uint32_t  pt_id 
) const
noexcept

Get total number of firing sequences in the number of blocks + number of points.

Parameters
num_blocksTotal number of blocks.
pt_idResidue number of points
Returns
Total number of sequences (floor) in the range pointed by the given indices.

Member Data Documentation

◆ DISTANCE_RESOLUTION

constexpr float32_t autoware::drivers::velodyne_driver::VLS128Data::DISTANCE_RESOLUTION {0.004f}
static

◆ FIRE_DURATION_US

constexpr float32_t autoware::drivers::velodyne_driver::VLS128Data::FIRE_DURATION_US = 2.665F
static

A group of 8 lasers takes this much time:

◆ FIRE_SEQ_OFFSET_US

constexpr float32_t autoware::drivers::velodyne_driver::VLS128Data::FIRE_SEQ_OFFSET_US = 53.3F
static

full (128 point) fire sequence takes this long to cycle

◆ GROUP_SIZE

constexpr uint16_t autoware::drivers::velodyne_driver::VLS128Data::GROUP_SIZE {8U}
static

◆ MAINTENANCE_DURATION1_US

constexpr float32_t autoware::drivers::velodyne_driver::VLS128Data::MAINTENANCE_DURATION1_US = 2.665F
static

◆ NUM_GROUPS_PER_SEQ

constexpr uint16_t autoware::drivers::velodyne_driver::VLS128Data::NUM_GROUPS_PER_SEQ {16U}
static

◆ NUM_LASERS

constexpr uint16_t autoware::drivers::velodyne_driver::VLS128Data::NUM_LASERS {128U}
static

◆ NUM_SEQUENCES_PER_BLOCK

constexpr float32_t autoware::drivers::velodyne_driver::VLS128Data::NUM_SEQUENCES_PER_BLOCK {float32_t(NUM_POINTS_PER_BLOCK) / NUM_LASERS}
static

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