velodyne_lidar
velodyneDataDriver.hpp
Go to the documentation of this file.
1 #ifndef _VELODYNE_DATA_DRIVER_HPP_
2 #define _VELODYNE_DATA_DRIVER_HPP_
3 
4 #include <iodrivers_base/Driver.hpp>
5 #include <velodyne_lidar/velodyneProtocolTypes.hpp>
6 #include <base/samples/DepthMap.hpp>
7 #include "velodyneConstants.hpp"
8 
9 namespace aggregator
10 {
11  class TimestampEstimator;
12 }
13 
14 namespace velodyne_lidar
15 {
16 
17 class VelodyneDataDriver : public iodrivers_base::Driver
18 {
19  struct StampedDataPacket
20  {
21  base::Time time[VELODYNE_NUM_SHOTS];
22  velodyne_data_packet packet;
23  };
24 
25 public:
26  VelodyneDataDriver(SensorType sensor_type, double broadcast_frequency);
27  virtual ~VelodyneDataDriver();
28 
34  bool readNewPacket();
35 
39  bool isScanComplete();
40 
46  virtual bool convertScanToSample(base::samples::DepthMap& sample, bool copy_remission = true) = 0;
47 
51  void clearCurrentScan();
52 
56  void setScanSize(double angular_size);
57 
61  double getScanSize();
62 
66  int64_t getPacketLostCount();
67 
71  int64_t getPacketReceivedCount();
72 
76  virtual double getBroadcastFrequency() = 0;
77 
81  void print_packet(velodyne_data_packet_t &);
82 
83 protected:
84 
88  virtual int extractPacket(uint8_t const* buffer, size_t buffer_size) const;
89 
93  void addNewPacket(const StampedDataPacket& packet);
94 
99  uint32_t last_packet_internal_timestamp; // in microseconds
100  int64_t packets_idx;
101  int64_t packets_lost;
103  aggregator::TimestampEstimator* timestamp_estimator;
104  std::vector<StampedDataPacket> packets;
105 };
106 
107 };
108 
109 #endif
uint64_t target_batch_size
Definition: velodyneDataDriver.hpp:96
Definition: velodyneProtocolTypes.hpp:22
int64_t expected_packet_period
Definition: velodyneDataDriver.hpp:102
SensorType sensor_type
Definition: velodyneDataDriver.hpp:95
uint8_t sensor_type
Definition: velodyneProtocolTypes.hpp:51
uint16_t last_rotational_pos
Definition: velodyneDataDriver.hpp:98
aggregator::TimestampEstimator * timestamp_estimator
Definition: velodyneDataDriver.hpp:103
uint64_t current_batch_size
Definition: velodyneDataDriver.hpp:97
Definition: gps_rmc_type.h:6
int64_t packets_lost
Definition: velodyneDataDriver.hpp:101
std::vector< StampedDataPacket > packets
Definition: velodyneDataDriver.hpp:104
SensorType
Definition: velodyneConstants.hpp:34
Definition: velodyneDataDriver.hpp:9
Definition: velodyneDataDriver.hpp:17
int64_t packets_idx
Definition: velodyneDataDriver.hpp:100
uint32_t last_packet_internal_timestamp
Definition: velodyneDataDriver.hpp:99