17 #ifndef LIDAR_HESAI_DRIVER_H_ 18 #define LIDAR_HESAI_DRIVER_H_ 21 #include <condition_variable> 31 #include "modules/drivers/lidar/proto/config.pb.h" 45 HesaiDriver(
const std::shared_ptr<::apollo::cyber::Node>& node,
46 const ::apollo::drivers::lidar::config& conf)
47 : node_(node), conf_(conf.hesai()) {}
48 HesaiDriver(
const std::shared_ptr<::apollo::cyber::Node>& node,
49 const ::apollo::drivers::hesai::Config& conf)
50 : node_(node), conf_(conf) {}
55 std::shared_ptr<::apollo::cyber::Node> node_ =
nullptr;
57 std::shared_ptr<Parser> parser_ =
nullptr;
58 std::shared_ptr<Input> input_ =
nullptr;
59 std::shared_ptr<::apollo::cyber::Writer<HesaiScan>> scan_writer_ =
nullptr;
60 std::mutex packet_mutex_;
61 std::condition_variable packet_condition_;
62 std::thread poll_thread_;
63 std::thread process_thread_;
64 std::atomic<bool> running_ = {
true};
65 std::deque<std::shared_ptr<HesaiScan>> scan_buffer_;
66 int scan_buffer_size_ = 10;
69 std::vector<std::shared_ptr<HesaiPacket>> pkt_buffer_;
71 int pkt_buffer_capacity_ = 0;
72 std::list<std::shared_ptr<HesaiPacket>> pkt_queue_;
80 AINFO <<
"driver stoping...";
81 running_.store(
false);
82 packet_condition_.notify_all();
83 if (poll_thread_.joinable()) {
86 if (process_thread_.joinable()) {
87 process_thread_.join();
~HesaiDriver()
Definition: driver.h:51
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
bool Init() override
Initialize the lidar driver.
The class which defines the lidar driver .
Definition: driver_base.h:45
Defines the CanFrame struct and CanClient interface.
Definition: type_defs.h:27
HesaiDriver(const std::shared_ptr<::apollo::cyber::Node > &node, const ::apollo::drivers::hesai::Config &conf)
Definition: driver.h:48
HesaiDriver(const std::shared_ptr<::apollo::cyber::Node > &node, const ::apollo::drivers::lidar::config &conf)
Definition: driver.h:45
#define AINFO
Definition: log.h:42