• LT-mapper,LT-removert代码运行与学习


    0.上一篇

    LT-mapper,LT-SLAM代码运行与学习:添加链接描述

    1.配置参数

    参考下面修改xx/LT_mapper_ws/src/lt-mapper/ltremovert/config/params_ltmapper.yaml中的5处路径与pcd文件起始和终止索引
    路径,由于01数据段时间在前,故将其作为中心段central,作为参考;将02数据段作为查询段query。

      # 修改前
      # save_pcd_directory: "/home/user/Desktop/ltslam-tutorial-kitti/data_ltmapper_mulran/riverside-rs/out/" # replace to your path (please use an absolute path)
      # 修改后
      save_pcd_directory: "/media/meng/T7/dataset/LT_mapper/data_removert/0102/"  ##hxz
    
      # 修改前----------------------
      # central_sess_scan_dir: "/home/user/Desktop/ltslam-tutorial-kitti/data_scaloam_mulran/riverside/01/Scans/"
      # central_sess_pose_path: "/home/user/Desktop/ltslam-tutorial-kitti/data_ltslam_mulran/riverside0102rs/01_central_aft_intersession_loops.txt"
    
      # query_sess_scan_dir: "/home/user/Desktop/ltslam-tutorial-kitti/data_scaloam_mulran/riverside/02/Scans/"
      # query_sess_pose_path: "/home/user/Desktop/ltslam-tutorial-kitti/data_ltslam_mulran/riverside0102rs/02_central_aft_intersession_loops.txt"
    
      # 修改后-------------
      central_sess_scan_dir: "/media/meng/T7/dataset/LT_mapper/data_parsed/01/Scans/"  ##hxz
      central_sess_pose_path: "/media/meng/T7/dataset/LT_mapper/data_parsed/01/01_central_aft_intersession_loops.txt" ##hxz
    
      query_sess_scan_dir: "/media/meng/T7/dataset/LT_mapper/data_parsed/02/Scans/" ##hxz
      query_sess_pose_path: "/media/meng/T7/dataset/LT_mapper/data_parsed/02/02_central_aft_intersession_loops.txt" ##hxz  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    pcd文件索引,注意这这个索引不要超过/media/meng/T7/dataset/LT_mapper/data_parsed/01/Scans//media/meng/T7/dataset/LT_mapper/data_parsed/02/Scans/里面文件的索引,否则会报错。

      # start_idx: 1100 # change this // for 0103  
      # end_idx: 1200 # change this // for 0103
      start_idx: 100 # change this // for 0103     //hxz
      end_idx: 200 # change this // for 0103      //hxz
    
    • 1
    • 2
    • 3
    • 4

    2.代码运行

    cd xx/LT_mapper_ws
    source devel/setup.bash
    roslaunch removert run_ltmapper.launch
    
    • 1
    • 2
    • 3

    运行效果:
    在这里插入图片描述

    下面根据终端打印输出了解LT-removert的思路

    (1)Removert 主程序启动–Removert Main Started

    依次执行:读取数据、为[100,200]之间的数据生成101个节点、结合地图感兴趣区域生成153个关键帧、展示读取进来的pcd文件、对中心数据(01数据)进行降采样,保存原始点云到OriginalNoisyCentralMapGlobal.pcd、对查询数据(02数据)进行降采样,,保存原始点云到OriginalNoisyQueryMapGlobal.pcd

    在这里插入图片描述

    这里可以使用cloudcompare进行查看,这里可以看出,在上一篇(https://blog.csdn.net/BIT_HXZ/article/details/127334097)里面,LT-mapper对地图进行了较好的对齐:

    在这里插入图片描述

    (2)开始自移除–Self-removing starts

    依次执行:生成深度图像(range image)、分辨出高动态(high dynamic maps)地图/点云、通过knn解析低动态差异low dynamic diff(包括:parse low dynamic diff via knn: Central to Query 和 parse low dynamic diff via knn: Query to Central )
    在这里插入图片描述
    在这里插入图片描述

    (3)识别出强/弱 负变化/正变化点

    注:负变化:disappeared points (negative difference (ND))、正变化newly appeared points (positive difference (PD))
    因为Central 对应的数据是01数据,时间比较早,于是查找负变化点即消失的点,进行三次查找和消除模糊点,如下:

    在这里插入图片描述

    因为Central 对应的数据是02数据,时间比较晚,于是查找正变化点即新出现的点,进行三次查找和消除非体积拓展的正变化(non-volume-extending PD),效果如下。
    同时分别将Union、PD、ND地图进行保存。

    在这里插入图片描述
    在这里插入图片描述

    进行比较:

    nd_map.pcd(左)与strong_nd_map.pcd(右):发现nd即消失点主要是车辆等可能会移动的物体。
    在这里插入图片描述在这里插入图片描述

    pd_map.pcd(左)与strong_pd_map.pcd(右):发现与strong_pd_map比pd_map数据量小很多,但看不出其他区别了。

    在这里插入图片描述在这里插入图片描述

    strong_nd_map.pcd、updated_map_strong.pcd、strong_pd_map.pcd

    在这里插入图片描述

    (4)更新扫描Scan

    注:low dynamic (LD)
    下面三句话的意思应该是在Central对应的Scan上进行更新(应该是因为central对应的01数据是过去的时间,变化是发生在01到02,所以在01对应的central上进行更新),并将静态(static points)数据点保存在pcd文件中。

    [ INFO] [1665817038.792333793]:  parse updated scans via projection(通过投影解析更新的扫描): Central
    [ INFO] [1665817048.600099379]:  parse LD scans via projection(通过投射解析LD扫描): Central
    [ INFO] [1665817066.454952078]:  final update scans(最终更新扫描): Central
    
    • 1
    • 2
    • 3

    保存到scans_updated文件夹:

    在这里插入图片描述

    保存到scans_updated_strong文件夹:
    在这里插入图片描述

    保存到scans_pd文件夹:

    在这里插入图片描述

    保存到scans_pd_strong文件夹:

    在这里插入图片描述

    保存到scans_nd_strong文件夹:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    查看scans_nd_strong文件夹
    发现pcd对应的点云好像车辆,这里应该是因为在01数据到02数据这段时间内,这些道路上或道路侧边停放的车辆离开了
    在这里插入图片描述在这里插入图片描述

    注:批量读取pcd文件脚本:read_current_pcd.bash

    folder="."
    softfiles=$(ls $folder)
    for sfile in ${softfiles}
    do 
       #echo "soft: ${sfile}"
       pcl_viewer ${sfile}
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查看scans_pd_strong文件夹
    基本上pcd viewer里面基本上全是静态环境要素(意思是车辆等可能会运动的环境要素出现的很少),所以第一眼好像看不出pd即新出现这个词用在此处的意义
    在这里插入图片描述在这里插入图片描述

    查看scans_updated_strong文件夹
    这个文件夹里面应该保存的是更新后的一帧点云数据,可以看出scans_updated_strong文件夹总体上比scans_pd_strong文件夹具有更多的信息(比如说有地面),也更能比较全面地表示环境;但同时也会缺少一些位置的点云数据

    在这里插入图片描述

  • 相关阅读:
    软考高项--第一章项目整体管理
    网卡限速工具之WonderShaper
    基于GPTs个性化定制SCI论文专业翻译器
    【C++初阶】第五站:C/C++内存管理 (匹配使用,干货到位)
    微服务之Nacos注册管理
    MySQL 基本SELECT语句
    LiveQing视频点播流媒体RTMP推流服务功能-支持视频点播分屏大屏展示视频轮巡分组播放RMP推流直播大屏展示
    嵌入式软件架构中抽象层设计方法
    【Flutter】自动生成图片资源索引插件二:FlutterAssetsGenerator
    【突发】国内大量家用路由器网络访问异常和流量劫持事件分析
  • 原文地址:https://blog.csdn.net/BIT_HXZ/article/details/127341823