激光雷达扫描角度裁剪

    采用的是思岚的激光雷达A1,由于base的机构设计,需要对雷达进行角度裁剪。rplidar A1的扫描角度的定义如下:

    参考博文:https://blog.csdn.net/lu199012/article/details/73457209

我需要的扫描范围是【0,π】,在ROS中,顺时针为负,逆时针为正,裁剪方法:在node.cpp中void publish_scan()函数中添加图中的角度比较的语句即可.

               scan_msg.ranges[node_count-1-i] = read_value;
            scan_msg.intensities[node_count-1-i] = (float) (nodes[i].sync_quality >> 2);
        }
    }
 //  printf("------------scan_msg.ranges.size()=%d\n",scan_msg.ranges.size());//
#if 1
    for(int i = 0;i<scan_msg.ranges.size();i++)
        {
                //if(((scan_msg.angle_min+i*scan_msg.angle_increment) > M_PI)&&((scan_msg.angle_min+i*scan_msg.angle_increment) < M_PI*2))
                if(((scan_msg.angle_min+i*scan_msg.angle_increment) > -M_PI)&&((scan_msg.angle_min+i*scan_msg.angle_increment) < 0))
                        scan_msg.ranges[i]=std::numeric_limits<float>::infinity();
        } //add by lcw
#endif
    pub->publish(scan_msg);
}

裁剪后slam建图的效果如下,在rviz会显示想要的分割平面,图1显示裁剪后只扫描180°的范围,图2显示裁剪后的建图效果。 

 

下图是裁剪之前slam建图的效果,与上图进行对比。

猜你喜欢

转载自blog.csdn.net/qq_29230261/article/details/83107116