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

时间:2022-10-16 12:51:17

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  

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

2.代码运行

cd xx/LT_mapper_ws
source devel/setup.bash
roslaunch removert run_ltmapper.launch

运行效果:
LT-mapper,LT-removert代码运行与学习

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

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

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

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

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

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

(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 )
LT-mapper,LT-removert代码运行与学习
LT-mapper,LT-removert代码运行与学习

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

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

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

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

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

进行比较:

nd_map.pcd(左)与strong_nd_map.pcd(右):发现nd即消失点主要是车辆等可能会移动的物体。
LT-mapper,LT-removert代码运行与学习LT-mapper,LT-removert代码运行与学习

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

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

strong_nd_map.pcd、updated_map_strong.pcd、strong_pd_map.pcd

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

(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

保存到scans_updated文件夹:

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

保存到scans_updated_strong文件夹:
LT-mapper,LT-removert代码运行与学习

保存到scans_pd文件夹:

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

保存到scans_pd_strong文件夹:

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

保存到scans_nd_strong文件夹:
LT-mapper,LT-removert代码运行与学习LT-mapper,LT-removert代码运行与学习LT-mapper,LT-removert代码运行与学习

查看scans_nd_strong文件夹
发现pcd对应的点云好像车辆,这里应该是因为在01数据到02数据这段时间内,这些道路上或道路侧边停放的车辆离开了
LT-mapper,LT-removert代码运行与学习LT-mapper,LT-removert代码运行与学习

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

folder="."
softfiles=$(ls $folder)
for sfile in ${softfiles}
do 
   #echo "soft: ${sfile}"
   pcl_viewer ${sfile}
done

查看scans_pd_strong文件夹
基本上pcd viewer里面基本上全是静态环境要素(意思是车辆等可能会运动的环境要素出现的很少),所以第一眼好像看不出pd即新出现这个词用在此处的意义
LT-mapper,LT-removert代码运行与学习LT-mapper,LT-removert代码运行与学习

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

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