17 #ifndef LIDAR_INTEGRATION__VLP16_INTEGRATION_SPOOFER_HPP_ 18 #define LIDAR_INTEGRATION__VLP16_INTEGRATION_SPOOFER_HPP_ 46 const uint32_t &
send_count()
const {
return m_spoofer.send_count();}
61 const std::atomic_bool & running);
63 const uint32_t & send_count()
const {
return m_send_count;}
67 m_thread = std::thread{[
this] {task_function();}};
72 if (m_thread.joinable()) {
81 static constexpr uint32_t
RAY_SIZE = 16U;
113 uint8_t azimuth_bytes[2U];
121 uint8_t timestamp_bytes[4U];
122 uint8_t factory_bytes[2U];
125 static void uint16_to_bytes(
const uint16_t val, uint8_t arr[]);
127 static uint16_t bytes_to_uint16(
const uint8_t arr[]);
129 static void update_packet_azimuth(Packet & pkt,
const uint16_t dth_tic);
134 const uint16_t (& distances)[RAY_SIZE])
const;
136 void initialize_packets(
const float32_t rpm);
139 static_assert(
sizeof(DataChannel) == 3U,
"Error VLP16 data channel size is incorrect");
140 static_assert(
sizeof(DataBlock) == 100U,
"Error VLP16 data block size is incorrect");
141 static_assert(
sizeof(Packet) == 1206U,
"Error VLP16 packet size is incorrect");
144 std::chrono::steady_clock::time_point m_last_send_time;
145 Packet m_all_flat_ground_packet;
146 Packet m_flat_ground_wall_packet;
147 const std::atomic_bool & m_running;
148 const std::chrono::nanoseconds m_send_period;
149 uint16_t m_azimuth_increment;
150 uint32_t m_send_count = 0;
151 std::thread m_thread;
154 std::atomic_bool m_running;
159 #endif // LIDAR_INTEGRATION__VLP16_INTEGRATION_SPOOFER_HPP_ double float64_t
Definition: types.hpp:37
static constexpr uint32_t NUM_INTENSITY_VALUES
how intensity is quantized: 1 byte = 256 possible values
Definition: vlp16_integration_spoofer.cpp:122
static constexpr float32_t MIN_RPM
rpm min speed
Definition: vlp16_integration_spoofer.cpp:55
static constexpr uint32_t RAY_SIZE
Definition: vlp16_integration_spoofer.cpp:114
float float32_t
Definition: types.hpp:36
static constexpr float32_t DEG2IDX
conversion from a degree (vlp) to idx
Definition: vlp16_integration_spoofer.cpp:119
Definition: lidar_integration.hpp:26
bool bool8_t
Definition: types.hpp:33
static constexpr uint16_t NUM_POINTS_PER_BLOCK
number of points stored in a data block
Definition: vlp16_integration_spoofer.cpp:128
This file includes common type definition.
Definition: vlp16_integration_spoofer.hpp:33
const uint32_t & send_count() const
Definition: vlp16_integration_spoofer.hpp:46
char char8_t
Definition: types.hpp:34
static constexpr float32_t FIRE_DURATION_US
one laser fires for this long
Definition: vlp16_integration_spoofer.cpp:133
static constexpr uint16_t AZIMUTH_ROTATION_RESOLUTION
resolution of azimuth angle: number of points in a full rotation
Definition: vlp16_integration_spoofer.cpp:117
static constexpr uint16_t NUM_BLOCKS_PER_PACKET
Definition: vlp16_integration_spoofer.cpp:126
static constexpr float32_t FIRE_SEQ_OFFSET_US
full (16 point) fire sequence takes this long to cycle
Definition: vlp16_integration_spoofer.cpp:131
Definition: udp_sender.hpp:44
static constexpr float32_t MAX_RPM
rpm max speed
Definition: vlp16_integration_spoofer.cpp:57