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,修改为如下:

<launch>

    <!-- 启动激光雷达节点 -->
    <include file="$(find   sick_scan)/launch/sick_lms_1xx.launch"/>
    
    <!-- 启动节点 -->
    <node name="lesson1_laser_scan_node" pkg="lesson1" type="lesson1_feature_detection_node" output="screen" />
    
    <!-- launch rviz -->
    <node name="rviz" pkg="rviz" type="rviz" required="false"
        args="-d $(find lesson1)/launch/feature.rviz" />

</launch>

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

roslaunch lesson1 feature_detection.launch

6、修改rviz界面的Fixed Frame为“laser”(视情况而定)
`如果像显示雷达原始数据,记得话题切换为自己雷达的话题,例如我的为"/scan"
特征点提取画面如下所示:
在这里插入图片描述

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: AGV(Automatic Guided Vehicle)激光雷达SLAM(Simultaneous Localization and Mapping)流程是一种自动定位和地图绘制的技术,常用于无人驾驶车辆和自主导航系统。 首先,AGV搭载激光雷达设备,该设备可以通过发射激光束并测量反射信号的时间来获取环境的障碍物、墙壁等信息。 接下来,AGV会以一定的速度或进行旋转,从而使激光雷达扫描环境的物体。在扫描的过程激光雷达会记录下不同方向上的障碍物位置以及与其的距离。 同时,AGV会通过激光雷达和物体的反射信号计算出与障碍物的距离以及相对位置。这样,通过不断扫描和测量,AGV可以获取环境所有障碍物的位置信息。 接着,AGV会与之前获取的环境信息进行对比,通过对比找出与先前记录的地图信息相符的环境区域,并基于这些数据进行自主定位。 最后,AGV将通过SLAM算法将激光雷达获取到的障碍物数据和自主定位信息进行融合,从而得到一个在实时环境准确的地图。这个地图可以帮助AGV进行路径规划和导航,如避开障碍物、规划最优路径等。 总的来说,AGV激光雷达SLAM流程是通过激光雷达设备获取环境信息,与之前的地图数据进行对比,并通过自主定位算法实现即时的路径规划和导航。这种流程能够有效提升AGV的自主导航和避障能力,为实现无人驾驶或自动化物流提供重要技术支持。 ### 回答2: AGV激光雷达SLAM(同步定位与地图构建)流程是一种利用激光雷达感知周围环境,通过同时定位和地图构建实现自主导航的技术。以下是其大致流程: 1. 激光雷达感知:AGV搭载激光雷达,将其安装在机器人顶部,并通过旋转测量周围环境的距离与位置信息。激光雷达能够生成一系列激光点云数据,用于表示环境的物体、障碍物以及其他感兴趣的地标点。 2. 运动估计:AGV根据自身的运动信息(如速度、方向)和激光雷达测量的数据来估计机器人的位置和姿态。通过比较不同时间步长下的激光雷达数据,可以计算出机器人的位移和旋转角度。 3. 关联匹配:在地图构建过程,需要将当前时刻的激光雷达数据与之前已知的地图进行匹配。通过利用特征提取和关联匹配算法,将当前时刻的激光点云与地图上的特征点进行匹配,从而确定机器人的位置信息。 4. 地图更新:在匹配成功后,将当前激光雷达数据的特征点添加到地图,不断更新地图。地图可以是2D或3D的,存储环境的物体、障碍物和特征点等信息。 5. 闭环检测:通过检测到之前访问过的位置或者发现相似的特征点,可以实现闭环检测。闭环检测可以减小累积误差,并提高自主导航的精度。 6. 路径规划与导航:根据地图和当前位置,进行路径规划。AGV可以根据规划路径进行导航,并避开障碍物,最终到达目标位置。 总的来说,AGV激光雷达SLAM流程包括激光雷达感知、运动估计、关联匹配、地图更新、闭环检测以及路径规划与导航等环节。通过这些步骤,AGV能够实现在未知环境的自主导航和定位,并构建出环境的地图。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值