ls01b.h
Go to the documentation of this file.
1 /*******************************************************
2 @company: Copyright (C) 2018, Leishen Intelligent System
3 @product: LS01B
4 @filename: ls01b.h
5 @brief:
6 @version: date: author: comments:
7 @v1.0 18-8-21 fu new
8 *******************************************************/
9 #ifndef LS01B_H
10 #define LS01B_H
11 #include <boost/date_time/posix_time/posix_time.hpp>
12 #include <boost/thread.hpp>
13 #include <string>
14 #include "ls01b_v2/lsiosr.h"
15 #include <ros/ros.h>
16 
17 namespace ls {
18 
19 typedef struct {
20  double degree;
21  double range;
22  double intensity;
23 } ScanPoint;
24 
25 //typedef struct {
26 // std::chrono::steady_clock::time_point time_stamp;
27 // std::vector<ScanPoint> points;
28 //}ScanMsg;
29 
30 class LS01B
31 {
32 public:
33  ~LS01B();
40  static LS01B* instance(std::string port, int baud_rate, double resolution);
41 
45  bool isHealth();
46 
50  bool resetHealth();
51 
56  int getScan(std::vector<ScanPoint> &points, ros::Time &scan_time, float &scan_duration);
57 
62  int getVersion(std::string &version);
63 
64 
65  int getRate();
66 
70  int startScan();
71 
75  int stopScan();
76 
81  int setScanMode(bool is_continuous);
82 
86  int stopRecvData();
87 
93  int switchData(bool use_angle);
94 
99  int setMotorSpeed(int rpm);
100 
105  int setResolution(double resolution);
106 
107  double getRPM();
108 
109 private:
110  LS01B(std::string port, int baud_rate, double resolution = 0.25);
111 
112  void recvThread();
113 
114  uint16_t checkSum(const uint8_t *p_byte);
115 
116  std::vector<ScanPoint> scan_points_;
117  std::vector<ScanPoint> scan_points_bak_;
118 // ScanMsg scan_msg_;
119 
121  boost::thread *recv_thread_;
122  boost::mutex mutex_;
123 
124  bool is_shutdown_; // shutdown recvthread
125  bool is_start_; // begin to read data from lidar
127 
128  int scan_health_; // 0 OK
129  double resolution_;
131 
133  int rpm_;
134  double real_rpm_;
135 
138 
139 };
140 
141 }
142 #endif
Definition: ls01b.h:17
double range
Definition: ls01b.h:21
uint16_t checkSum(const uint8_t *p_byte)
ros::Time time_
Definition: ls01b.h:137
bool is_shutdown_
Definition: ls01b.h:124
double real_rpm_
Definition: ls01b.h:134
bool isHealth()
Definition: ls01b.cpp:52
double intensity
Definition: ls01b.h:22
static LS01B * instance(std::string port, int baud_rate, double resolution)
Definition: ls01b.cpp:13
bool use_angle_
Definition: ls01b.h:126
int setMotorSpeed(int rpm)
Definition: ls01b.cpp:194
double getRPM()
Definition: ls01b.cpp:78
int stopScan()
Definition: ls01b.cpp:102
int getRate()
double resolution_
Definition: ls01b.h:129
LS01B(std::string port, int baud_rate, double resolution=0.25)
Definition: ls01b.cpp:19
int switchData(bool use_angle)
Definition: ls01b.cpp:165
bool resetHealth()
Definition: ls01b.cpp:57
ros::Time pre_time_
Definition: ls01b.h:136
int data_len_
Definition: ls01b.h:130
int getScan(std::vector< ScanPoint > &points, ros::Time &scan_time, float &scan_duration)
Definition: ls01b.cpp:62
bool is_start_
Definition: ls01b.h:125
int getVersion(std::string &version)
Definition: ls01b.cpp:72
boost::thread * recv_thread_
Definition: ls01b.h:121
int setScanMode(bool is_continuous)
Definition: ls01b.cpp:120
double degree
Definition: ls01b.h:20
void recvThread()
Definition: ls01b.cpp:261
std::vector< ScanPoint > scan_points_
Definition: ls01b.h:116
LSIOSR * serial_
Definition: ls01b.h:120
int setResolution(double resolution)
Definition: ls01b.cpp:216
boost::mutex mutex_
Definition: ls01b.h:122
int stopRecvData()
Definition: ls01b.cpp:146
int rpm_
Definition: ls01b.h:133
std::vector< ScanPoint > scan_points_bak_
Definition: ls01b.h:117
int points_size_
Definition: ls01b.h:132
int scan_health_
Definition: ls01b.h:128
int startScan()
Definition: ls01b.cpp:83
~LS01B()
Definition: ls01b.cpp:36


ls01b_v2
Author(s): fu
autogenerated on Sat Sep 28 2019 03:51:19