2D激光SLAM-雷达的特征点提取

原文链接:从零开始搭二维激光SLAM — 使用单线雷达实现LIO-SAM中的特征点提取

已跑通原作者的例程,如何使用自己的雷达实现特征点提取?

下载作者的代码:https://gitee.com/zhankun3280/Creating-2D-laser-slam-from-scratch

以某款sick 2D激光雷达为例,然后注意需要修改的地方:
1、feature_detection.cc

// 构造函数
LaserScan::LaserScan() : private_node_("~")
{
    // \033[1;32m,\033[0m 终端显示成绿色
    ROS_INFO_STREAM("\033[1;32m----> Feature Extraction Started.\033[0m");

    // 将雷达的回调函数与订阅的topic进行绑定
    laser_scan_subscriber_ = node_handle_.subscribe("laser_scan", 1, &LaserScan::ScanCallback, this);
    // 将提取后的点发布到 feature_scan 这个topic
    feature_scan_publisher_ = node_handle_.advertise<sensor_msgs::LaserScan>("feature_scan", 1, this);

    // 将提取角点的阈值设置为1.0
    edge_threshold_ = 1.0;
}

"laser_scan"改成自己的激光雷达发布的话题,例如我的修改为"scan"

2、CMakeLists.txt文件,文件最后加上以下代码:

# 为指定的文件生成可执行文件
add_executable(${PROJECT_NAME}_feature_detection_node src/feature_detection.cc)

# 为生成的可执行文件添加依赖
add_dependencies(${PROJECT_NAME}_feature_detection_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

# 为生成的可执行文件添加库的链接
target_link_libraries(${PROJECT_NAME}_feature_detection_node ${catkin_LIBRARIES})

3、feature_detection.launch,修改为如下:



    
    
    
    
    
    
    
    


4、修改完之后,一定要catkin_make一下
5、启动launch文件

roslaunch lesson1 feature_detection.launch

6、修改rviz界面的Fixed Frame为“laser”(视情况而定)
`如果像显示雷达原始数据,记得话题切换为自己雷达的话题,例如我的为"/scan"
特征点提取画面如下所示:
2D激光SLAM-雷达的特征点提取_第1张图片

你可能感兴趣的:(室内机器人专栏)