|
@@ -12,7 +12,7 @@ Wanji_716N_lidar_device::~Wanji_716N_lidar_device() {
|
|
}
|
|
}
|
|
|
|
|
|
// 初始化
|
|
// 初始化
|
|
-Error_manager Wanji_716N_lidar_device::init(std::string t_ip, int t_port,
|
|
|
|
|
|
+Error_manager Wanji_716N_lidar_device::init(const std::string& t_ip, int t_port,
|
|
Point2D_tool::Polar_coordinates_box t_polar_coordinates_box,
|
|
Point2D_tool::Polar_coordinates_box t_polar_coordinates_box,
|
|
Point2D_tool::Point2D_box t_point2D_box,
|
|
Point2D_tool::Point2D_box t_point2D_box,
|
|
Point2D_tool::Point2D_transform t_point2D_transform) {
|
|
Point2D_tool::Point2D_transform t_point2D_transform) {
|
|
@@ -66,7 +66,7 @@ Error_manager Wanji_716N_lidar_device::uninit() {
|
|
if (mp_execute_thread) {
|
|
if (mp_execute_thread) {
|
|
mp_execute_thread->join();
|
|
mp_execute_thread->join();
|
|
delete mp_execute_thread;
|
|
delete mp_execute_thread;
|
|
- mp_execute_thread = NULL;
|
|
|
|
|
|
+ mp_execute_thread = nullptr;
|
|
}
|
|
}
|
|
|
|
|
|
m_async_client.uninit();
|
|
m_async_client.uninit();
|
|
@@ -87,11 +87,11 @@ Error_manager Wanji_716N_lidar_device::check_status() {
|
|
if (m_wanji_lidar_device_status == E_READY) {
|
|
if (m_wanji_lidar_device_status == E_READY) {
|
|
return Error_code::SUCCESS;
|
|
return Error_code::SUCCESS;
|
|
} else if (m_wanji_lidar_device_status == E_BUSY) {
|
|
} else if (m_wanji_lidar_device_status == E_BUSY) {
|
|
- return Error_manager(Error_code::WANJI_LIDAR_DEVICE_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
|
|
|
|
- " Wanji_716N_lidar_device::check_status() error ");
|
|
|
|
|
|
+ return {Error_code::WANJI_LIDAR_DEVICE_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
|
|
|
|
+ " Wanji_716N_lidar_device::check_status() error "};
|
|
} else {
|
|
} else {
|
|
- return Error_manager(Error_code::WANJI_LIDAR_DEVICE_STATUS_ERROR, Error_level::MINOR_ERROR,
|
|
|
|
- " Wanji_716N_lidar_device::check_status() error ");
|
|
|
|
|
|
+ return {Error_code::WANJI_LIDAR_DEVICE_STATUS_ERROR, Error_level::MINOR_ERROR,
|
|
|
|
+ " Wanji_716N_lidar_device::check_status() error "};
|
|
}
|
|
}
|
|
return Error_code::SUCCESS;
|
|
return Error_code::SUCCESS;
|
|
}
|
|
}
|
|
@@ -106,9 +106,9 @@ bool Wanji_716N_lidar_device::is_ready() {
|
|
Error_manager
|
|
Error_manager
|
|
Wanji_716N_lidar_device::get_new_cloud_and_wait(std::mutex *p_mutex, pcl::PointCloud<pcl::PointXYZ>::Ptr p_cloud,
|
|
Wanji_716N_lidar_device::get_new_cloud_and_wait(std::mutex *p_mutex, pcl::PointCloud<pcl::PointXYZ>::Ptr p_cloud,
|
|
std::chrono::system_clock::time_point command_time, int timeout_ms) {
|
|
std::chrono::system_clock::time_point command_time, int timeout_ms) {
|
|
- if (p_mutex == NULL || p_cloud.get() == NULL) {
|
|
|
|
- return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
|
|
|
|
- " POINTER IS NULL ");
|
|
|
|
|
|
+ if (p_mutex == nullptr || p_cloud.get() == nullptr) {
|
|
|
|
+ return {Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
|
|
|
|
+ " POINTER IS NULL "};
|
|
}
|
|
}
|
|
//判断是否超时
|
|
//判断是否超时
|
|
while (std::chrono::system_clock::now() - command_time < std::chrono::milliseconds(timeout_ms)) {
|
|
while (std::chrono::system_clock::now() - command_time < std::chrono::milliseconds(timeout_ms)) {
|
|
@@ -124,17 +124,17 @@ Wanji_716N_lidar_device::get_new_cloud_and_wait(std::mutex *p_mutex, pcl::PointC
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
|
}
|
|
}
|
|
//超时退出就报错
|
|
//超时退出就报错
|
|
- return Error_manager(Error_code::WJ_LIDAR_GET_CLOUD_TIMEOUT, Error_level::MINOR_ERROR,
|
|
|
|
- " Wanji_716N_lidar_device::get_new_cloud_and_wait error ");
|
|
|
|
|
|
+ return {Error_code::WJ_LIDAR_GET_CLOUD_TIMEOUT, Error_level::MINOR_ERROR,
|
|
|
|
+ " Wanji_716N_lidar_device::get_new_cloud_and_wait error "};
|
|
}
|
|
}
|
|
|
|
|
|
//外部调用获取当前点云, 获取指令时间之后的点云, 如果没有就会报错, 不会等待
|
|
//外部调用获取当前点云, 获取指令时间之后的点云, 如果没有就会报错, 不会等待
|
|
Error_manager
|
|
Error_manager
|
|
Wanji_716N_lidar_device::get_current_cloud(std::mutex *p_mutex, pcl::PointCloud<pcl::PointXYZ>::Ptr p_cloud,
|
|
Wanji_716N_lidar_device::get_current_cloud(std::mutex *p_mutex, pcl::PointCloud<pcl::PointXYZ>::Ptr p_cloud,
|
|
std::chrono::system_clock::time_point command_time) {
|
|
std::chrono::system_clock::time_point command_time) {
|
|
- if (p_mutex == NULL || p_cloud.get() == NULL) {
|
|
|
|
- return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
|
|
|
|
- " POINTER IS NULL ");
|
|
|
|
|
|
+ if (p_mutex == nullptr || p_cloud.get() == nullptr) {
|
|
|
|
+ return {Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
|
|
|
|
+ " POINTER IS NULL "};
|
|
}
|
|
}
|
|
//获取指令时间之后的点云, 如果没有就会报错, 不会等待
|
|
//获取指令时间之后的点云, 如果没有就会报错, 不会等待
|
|
if (m_protocol.get_scan_time() > command_time) {
|
|
if (m_protocol.get_scan_time() > command_time) {
|
|
@@ -142,17 +142,17 @@ Wanji_716N_lidar_device::get_current_cloud(std::mutex *p_mutex, pcl::PointCloud<
|
|
Error_manager code = m_protocol.get_scan_points(p_cloud);
|
|
Error_manager code = m_protocol.get_scan_points(p_cloud);
|
|
return code;
|
|
return code;
|
|
} else {
|
|
} else {
|
|
- return Error_manager(Error_code::WANJI_LIDAR_DEVICE_NO_CLOUD, Error_level::MINOR_ERROR,
|
|
|
|
- " Wanji_716N_lidar_device::get_current_cloud error ");
|
|
|
|
|
|
+ return {Error_code::WANJI_LIDAR_DEVICE_NO_CLOUD, Error_level::MINOR_ERROR,
|
|
|
|
+ " Wanji_716N_lidar_device::get_current_cloud error "};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//外部调用获取最新的点云, 获取指令时间往前一个周期内的点云, 如果没有就会报错, 不会等待
|
|
//外部调用获取最新的点云, 获取指令时间往前一个周期内的点云, 如果没有就会报错, 不会等待
|
|
Error_manager Wanji_716N_lidar_device::get_last_cloud(std::mutex *p_mutex, pcl::PointCloud<pcl::PointXYZ>::Ptr p_cloud,
|
|
Error_manager Wanji_716N_lidar_device::get_last_cloud(std::mutex *p_mutex, pcl::PointCloud<pcl::PointXYZ>::Ptr p_cloud,
|
|
std::chrono::system_clock::time_point command_time) {
|
|
std::chrono::system_clock::time_point command_time) {
|
|
- if (p_mutex == NULL || p_cloud.get() == NULL) {
|
|
|
|
- return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
|
|
|
|
- " POINTER IS NULL ");
|
|
|
|
|
|
+ if (p_mutex == nullptr || p_cloud.get() == nullptr) {
|
|
|
|
+ return {Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
|
|
|
|
+ " POINTER IS NULL "};
|
|
}
|
|
}
|
|
int t_scan_cycle_ms = m_protocol.get_scan_cycle();
|
|
int t_scan_cycle_ms = m_protocol.get_scan_cycle();
|
|
//将指令时间提前一个扫描周期, 然后获取这个时间后面的点云.
|
|
//将指令时间提前一个扫描周期, 然后获取这个时间后面的点云.
|
|
@@ -162,8 +162,8 @@ Error_manager Wanji_716N_lidar_device::get_last_cloud(std::mutex *p_mutex, pcl::
|
|
Error_manager code = m_protocol.get_scan_points(p_cloud);
|
|
Error_manager code = m_protocol.get_scan_points(p_cloud);
|
|
return code;
|
|
return code;
|
|
} else {
|
|
} else {
|
|
- return Error_manager(Error_code::WANJI_LIDAR_DEVICE_NO_CLOUD, Error_level::MINOR_ERROR,
|
|
|
|
- " Wanji_716N_lidar_device::get_last_cloud error ");
|
|
|
|
|
|
+ return {Error_code::WANJI_LIDAR_DEVICE_NO_CLOUD, Error_level::MINOR_ERROR,
|
|
|
|
+ " Wanji_716N_lidar_device::get_last_cloud error "};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -171,9 +171,9 @@ Error_manager Wanji_716N_lidar_device::get_last_cloud(std::mutex *p_mutex, pcl::
|
|
//注:函数内部不加锁, 由外部统一加锁.
|
|
//注:函数内部不加锁, 由外部统一加锁.
|
|
Error_manager Wanji_716N_lidar_device::get_last_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr p_cloud,
|
|
Error_manager Wanji_716N_lidar_device::get_last_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr p_cloud,
|
|
std::chrono::system_clock::time_point command_time) {
|
|
std::chrono::system_clock::time_point command_time) {
|
|
- if (p_cloud.get() == NULL) {
|
|
|
|
- return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
|
|
|
|
- " POINTER IS NULL ");
|
|
|
|
|
|
+ if (p_cloud.get() == nullptr) {
|
|
|
|
+ return {Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
|
|
|
|
+ " POINTER IS NULL "};
|
|
}
|
|
}
|
|
int t_scan_cycle_ms = m_protocol.get_scan_cycle();
|
|
int t_scan_cycle_ms = m_protocol.get_scan_cycle();
|
|
//将指令时间提前一个扫描周期, 然后获取这个时间后面的点云.
|
|
//将指令时间提前一个扫描周期, 然后获取这个时间后面的点云.
|
|
@@ -184,8 +184,8 @@ Error_manager Wanji_716N_lidar_device::get_last_cloud(pcl::PointCloud<pcl::Point
|
|
return code;
|
|
return code;
|
|
} else {
|
|
} else {
|
|
// LOG(WARNING) << "get cloud failed..... "<<m_protocol.get_scan_time().time_since_epoch().count()<<", "<<command_time.time_since_epoch().count();
|
|
// LOG(WARNING) << "get cloud failed..... "<<m_protocol.get_scan_time().time_since_epoch().count()<<", "<<command_time.time_since_epoch().count();
|
|
- return Error_manager(Error_code::WANJI_LIDAR_DEVICE_NO_CLOUD, Error_level::MINOR_ERROR,
|
|
|
|
- " Wanji_716N_lidar_device::get_last_cloud error ");
|
|
|
|
|
|
+ return {Error_code::WANJI_LIDAR_DEVICE_NO_CLOUD, Error_level::MINOR_ERROR,
|
|
|
|
+ " Wanji_716N_lidar_device::get_last_cloud error "};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|