Skip to content

Class nebula::drivers::VelodyneScanDecoder

ClassList > nebula > drivers > VelodyneScanDecoder

Base class for Velodyne LiDAR decoder.

  • #include <velodyne_scan_decoder.hpp>

Inherited by the following classes: nebula::drivers::vlp16::Vlp16Decoder, nebula::drivers::vlp32::Vlp32Decoder, nebula::drivers::vls128::Vls128Decoder

Public Functions

Type Name
VelodyneScanDecoder (VelodyneScanDecoder && c) = delete
VelodyneScanDecoder (const VelodyneScanDecoder & c) = delete
VelodyneScanDecoder () = default
virtual std::tuple< drivers::NebulaPointCloudPtr, double > get_pointcloud () = 0
Virtual function for getting the constructed point cloud.
bool has_scanned ()
Virtual function for getting the flag indicating whether one cycle is ready.
VelodyneScanDecoder & operator= (VelodyneScanDecoder && c) = delete
VelodyneScanDecoder & operator= (const VelodyneScanDecoder & c) = delete
virtual bool parse_packet (const velodyne_msgs::msg::VelodynePacket & velodyne_packet) = 0
Virtual function for parsing VelodynePacket based on packet structure.
virtual int points_per_packet () = 0
Calculation of points in each packet.
virtual void reset_overflow (double time_stamp) = 0
Resetting overflowed point cloud buffer.
virtual void reset_pointcloud (double time_stamp) = 0
Resetting point cloud buffer.
virtual void unpack (const std::vector< uint8_t > & packet, double packet_seconds) = 0
Virtual function for parsing and shaping VelodynePacket.
virtual ~VelodyneScanDecoder () = default

Protected Attributes

Type Name
std::shared_ptr< const drivers::VelodyneCalibrationConfiguration > calibration_configuration_
Calibration for this decoder.
double dual_return_distance_threshold_ = {}
drivers::NebulaPointCloudPtr overflow_pc_
Point cloud overflowing from one cycle.
drivers::NebulaPointCloudPtr scan_pc_
Decoded point cloud.
double scan_timestamp_ = {}
std::shared_ptr< const drivers::VelodyneSensorConfiguration > sensor_configuration_
SensorConfiguration for this decoder.

Protected Functions

Type Name
void check_and_handle_scan_complete (const std::vector< uint8_t > & packet, double packet_seconds, const uint32_t phase)
Checks if the current packet completes the ongoing scan. TODO: this has been moved from velodyne_hw_interface.cpp and is a temporary solution until the Velodyne decoder uses the same structure as Hesai/Robosense.

Public Functions Documentation

function VelodyneScanDecoder [1/3]

nebula::drivers::VelodyneScanDecoder::VelodyneScanDecoder (
    VelodyneScanDecoder && c
) = delete

function VelodyneScanDecoder [2/3]

nebula::drivers::VelodyneScanDecoder::VelodyneScanDecoder (
    const VelodyneScanDecoder & c
) = delete

function VelodyneScanDecoder [3/3]

nebula::drivers::VelodyneScanDecoder::VelodyneScanDecoder () = default

function get_pointcloud

Virtual function for getting the constructed point cloud.

virtual std::tuple< drivers::NebulaPointCloudPtr, double > nebula::drivers::VelodyneScanDecoder::get_pointcloud () = 0

Returns:

tuple of Point cloud and timestamp


function has_scanned

Virtual function for getting the flag indicating whether one cycle is ready.

inline bool nebula::drivers::VelodyneScanDecoder::has_scanned () 

Returns:

Readied


function operator=

VelodyneScanDecoder & nebula::drivers::VelodyneScanDecoder::operator= (
    VelodyneScanDecoder && c
) = delete

function operator=

VelodyneScanDecoder & nebula::drivers::VelodyneScanDecoder::operator= (
    const VelodyneScanDecoder & c
) = delete

function parse_packet

Virtual function for parsing VelodynePacket based on packet structure.

virtual bool nebula::drivers::VelodyneScanDecoder::parse_packet (
    const velodyne_msgs::msg::VelodynePacket & velodyne_packet
) = 0

Parameters:

  • pandar_packet

Returns:

Resulting flag


function points_per_packet

Calculation of points in each packet.

virtual int nebula::drivers::VelodyneScanDecoder::points_per_packet () = 0

Returns:

of points


function reset_overflow

Resetting overflowed point cloud buffer.

virtual void nebula::drivers::VelodyneScanDecoder::reset_overflow (
    double time_stamp
) = 0


function reset_pointcloud

Resetting point cloud buffer.

virtual void nebula::drivers::VelodyneScanDecoder::reset_pointcloud (
    double time_stamp
) = 0


function unpack

Virtual function for parsing and shaping VelodynePacket.

virtual void nebula::drivers::VelodyneScanDecoder::unpack (
    const std::vector< uint8_t > & packet,
    double packet_seconds
) = 0

Parameters:

  • pandar_packet

function ~VelodyneScanDecoder

virtual nebula::drivers::VelodyneScanDecoder::~VelodyneScanDecoder () = default

Protected Attributes Documentation

variable calibration_configuration_

Calibration for this decoder.

std::shared_ptr<const drivers::VelodyneCalibrationConfiguration> nebula::drivers::VelodyneScanDecoder::calibration_configuration_;


variable dual_return_distance_threshold_

double nebula::drivers::VelodyneScanDecoder::dual_return_distance_threshold_;

variable overflow_pc_

Point cloud overflowing from one cycle.

drivers::NebulaPointCloudPtr nebula::drivers::VelodyneScanDecoder::overflow_pc_;


variable scan_pc_

Decoded point cloud.

drivers::NebulaPointCloudPtr nebula::drivers::VelodyneScanDecoder::scan_pc_;


variable scan_timestamp_

double nebula::drivers::VelodyneScanDecoder::scan_timestamp_;

variable sensor_configuration_

SensorConfiguration for this decoder.

std::shared_ptr<const drivers::VelodyneSensorConfiguration> nebula::drivers::VelodyneScanDecoder::sensor_configuration_;


Protected Functions Documentation

function check_and_handle_scan_complete

Checks if the current packet completes the ongoing scan. TODO: this has been moved from velodyne_hw_interface.cpp and is a temporary solution until the Velodyne decoder uses the same structure as Hesai/Robosense.

inline void nebula::drivers::VelodyneScanDecoder::check_and_handle_scan_complete (
    const std::vector< uint8_t > & packet,
    double packet_seconds,
    const uint32_t phase
) 

Parameters:

  • packet The packet buffer to extract azimuths from
  • packet_seconds The packet's timestamp in seconds, including the sub-second part
  • phase The sensor's scan phase used for scan cutting


The documentation for this class was generated from the following file nebula_decoders/include/nebula_decoders/nebula_decoders_velodyne/decoders/velodyne_scan_decoder.hpp