Fix the problem that angle_increment caused abnormal scan topic data

This commit is contained in:
jj
2025-07-08 15:01:28 +08:00
parent 330198c0a6
commit f622ea57d5
4 changed files with 23 additions and 1 deletions
+4 -1
View File
@@ -439,6 +439,9 @@ void OBLidarNode::onNewFrameSetCallback(std::shared_ptr<ob::FrameSet> frame_set)
void OBLidarNode::publishScan(std::shared_ptr<ob::FrameSet> frame_set) {
(void)frame_set;
if (angle_increment_ == 0.0) {
angle_increment_ = getScanAngleIncrement(rate_[LIDAR]);
}
if (frame_set == nullptr) {
return;
}
@@ -453,7 +456,7 @@ void OBLidarNode::publishScan(std::shared_ptr<ob::FrameSet> frame_set) {
scan_msg->header.frame_id = frame_id_[LIDAR];
scan_msg->angle_min = 0.7853981852531433;
scan_msg->angle_max = 5.495169162750244;
scan_msg->angle_increment = 0.0026179938577115536;
scan_msg->angle_increment = angle_increment_;
scan_msg->time_increment = 1.0 / rate_int_[LIDAR] / scan_count;
scan_msg->scan_time = 1.0 / rate_int_[LIDAR];
scan_msg->range_min = min_range_;
+16
View File
@@ -961,6 +961,22 @@ std::string getDistortionModels(OBCameraDistortion distortion) {
return sensor_msgs::distortion_models::PLUMB_BOB;
}
}
double getScanAngleIncrement(OBLiDARScanRate fps) {
switch (fps) {
case OB_LIDAR_SCAN_15HZ:
return deg2rad(0.075);
case OB_LIDAR_SCAN_20HZ:
return deg2rad(0.1);
case OB_LIDAR_SCAN_25HZ:
return deg2rad(0.125);
case OB_LIDAR_SCAN_30HZ:
return deg2rad(0.15);
case OB_LIDAR_SCAN_40HZ:
return deg2rad(0.2);
default:
return deg2rad(0.1);
}
}
double deg2rad(double deg) { return deg * M_PI / 180.0; }