Template Class HesaiSensor

Class Documentation

template<typename PacketT, AngleCorrectionType AngleCorrection = AngleCorrectionType::CALIBRATION>
class HesaiSensor

Base class for all sensor definitions.

Template Parameters:

PacketT – The packet type of the sensor

Public Types

using packet_t = PacketT
using angle_corrector_t = typename std::conditional<(AngleCorrection == AngleCorrectionType::CALIBRATION), AngleCorrectorCalibrationBased<PacketT::n_channels, PacketT::degree_subdivisions>, AngleCorrectorCorrectionBased<PacketT::n_channels, PacketT::degree_subdivisions>>::type

Public Functions

HesaiSensor() = default
virtual ~HesaiSensor() = default
virtual int get_packet_relative_point_time_offset(uint32_t block_id, uint32_t channel_id, const PacketT &packet) = 0

Computes the exact relative time between the timestamp of the given packet and the one of the point identified by the given block and channel, in nanoseconds.

Parameters:
  • block_id – The point’s block id

  • channel_id – The point’s channel id

  • packet – The packet

Returns:

The relative time offset in nanoseconds

inline int get_earliest_point_time_offset_for_block(uint32_t start_block_id, const PacketT &packet)

For a given start block index, find the earliest (lowest) relative time offset of any point in the packet in or after the start block.

Parameters:
  • start_block_id – The index of the block in and after which to consider points

  • packet – The packet

Returns:

The lowest point time offset (relative to the packet timestamp) of any point in or after the start block, in nanoseconds

inline virtual ReturnType get_return_type(hesai_packet::return_mode::ReturnMode return_mode, unsigned int return_idx, const std::vector<const typename PacketT::body_t::block_t::unit_t*> &return_units)

Get the return type of the point given by return_idx.

For duplicate points, the return type is reported as ReturnType::IDENTICAL for all identical points. For DUAL_LAST_STRONGEST and DUAL_FIRST_STRONGEST, if the last/first point is also the strongest, it will be returned as ReturnType::LAST_STRONGEST / ReturnType::FIRST_STRONGEST respectively, with the second point being reported as ReturnType::SECONDSTRONGEST.

Parameters:
  • return_mode – The sensor’s currently active return mode

  • return_idx – The block index of the point within the group of blocks that make up the return group (e.g. either 0 or 1 for dual return)

  • return_units – The units corresponding to all the returns in the group. These are usually from the same column across adjascent blocks.

Returns:

The return type of the point

inline virtual point_filters::DitherTransform get_dither_transform() const
inline virtual point_filters::BlockageState get_blockage_type(uint16_t) const