将KITTI数据集转为LIO-SAM算法可运行的.bag文件

原始的KITTI数据集并不能直接应用于LIO-SAM算法,需要进行一些处理。但是LIO-SAM算法的作者已经写好了转换方法,按照作者的提示可以将KITTI数据集转换成LIO-SAM可运行的数据包。

1. 下载KITTI数据集

这里以KITTI 05序列为例,对应下载2011_09_30_drive_0018数据集。

wget https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_drive_0018/2011_09_30_drive_0018_sync.zip
wget https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_drive_0018/2011_09_30_drive_0018_extract.zip
wget https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_calib.zip

需要下载extract.zip、sync.zip和calib.zip。关于详细说明可以参考下面这个链接:

使用KITTI跑LIOSAM并完成EVO评价_ros bag转kitti-CSDN博客

图1 下载KITTI数据集(以05序列为例)

下载好KITTI数据集以后,需要进行解压:

unzip 2011_09_30_drive_0018_sync.zip
unzip 2011_09_30_drive_0018_extract.zip
unzip 2011_09_30_calib.zip

即对刚才下载的三个zip文件进行解压,解压后如图2所示:

图2 解压KITTI数据集(以05序列为例)

解压后可以得到一个命名为2011_09_30的文件夹,文件夹内容如图3所示:

图3 查看解压后的文件夹

至此,我们完成了数据集下载和准备工作。

2. 将KITTI数据集转换为.bag文件

接下来我们利用LIO-SAM算法作者提供的python文件,将KITTI数据集转换成rosbag可以播放的数据包,即.bag文件。

首先,我们将图2中解压后得到的2011_09_30文件夹复制一份,拷贝到LIO-SAM提供的python目录下,如图4和图5所示:

图4 LIO-SAM算法提供的python目录(拷贝2011_09_30文件夹前)

图5 LIO-SAM算法提供的python目录(拷贝2011_09_30文件夹后)

然后在该目录下,打开终端,运行下面指令:

python3 kitti2bag.py -t 2011_09_30 -r 0018 raw_synced

指令中的2011_09_30和0018,需要与下载的数据集名称保持一致

例如笔者下载的2011_09_30_drive_0018_sync.zip和2011_09_30_drive_0018_extract.zip,所以指令中对应数字为2011_09_30和0018,即对应数据集名称中“drive“前后的两组数字。

此外,根据Ubuntu系统版本不同,有些人可能需要把指令中的“python3”改成“python”

此时,终端显示如图6所示:

图6 终端运行显示

待终端运行结束后,我们可以在python目录下看到生成的数据包,如图7所示:

图7 生成的数据包

3. LIO-SAM运行KITTI数据集yaml文件主要参数配置

pointCloudTopic: "points_raw"

imuTopic: "imu_correct"

N_SCAN: 64

downsampleRate: 2

# IMU Settings

imuAccNoise: 3.9939570888238808e-03

imuGyrNoise: 1.5636343949698187e-03

imuAccBiasN: 6.4356659353532566e-05

imuGyrBiasN: 3.5640318696367613e-05

imuGravity: 9.80511

imuRPYWeight: 0.01

# kitti Extrinsics (lidar -> IMU)

extrinsicTrans: [-8.086759e-01, 3.195559e-01, -7.997231e-01]

extrinsicRot: [9.999976e-01, 7.553071e-04, -2.035826e-03,

-7.854027e-04,9.998898e-01, -1.482298e-02,

2.024406e-03, 1.482454e-02, 9.998881e-01]

extrinsicRPY: [9.999976e-01, 7.553071e-04, -2.035826e-03,

-7.854027e-04,9.998898e-01, -1.482298e-02,

2.024406e-03, 1.482454e-02, 9.998881e-01]

4. 运行结果

KITTI 05序列运行结果如图8所示:

图8 运行结果

补充:并不需要对LIO-SAM算法进行任何修改,例如补充点云ring信息计算等,尽管终端出现提示,但是并不会影响算法运行。

其他未尽事宜,请参照链接:

https://github.com/TixiaoShan/LIO-SAM/blob/master/config/doc/kitti2bag/README.md

  • 23
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
lio-sam是一个开源项目,是LIO(Linux内核iSCSI target)模块的一个分支。它是专门为高性能和可扩展性而设计的iSCSI目标代码。 lio-sam项目的主要目标是提供一个高性能的iSCSI目标,同时保持Linux kernel的稳定性和可靠性。它在传输层使用Scst(SCSI target实现)和LIOLinux iSCSI实现)的组合,并有一些优化以提高性能。它还支持各种iSCSI功能,如CHAP认证、数据压缩和IPsec等。 代码阅读lio-samLinux内核和iSCSI有一定的了解是很有帮助的。lio-sam使用了一些Linux内核的机制,如工作队列和内存管理。了解这些机制将有助于理解lio-sam的实现原理和性能优化技巧。 在阅读lio-sam代码时,可以关注以下几个方面: 1. LIO模块的初始化和配置:lio-sam在加载模块时进行一些初始化工作,包括创建Scst的实例和配置iSCSI target。了解这些步骤可以帮助理解lio-sam的工作流程和配置方式。 2. iSCSI连接管理:lio-sam负责管理iSCSI连接,包括连接的建立、维护和中断。了解连接管理的实现原理可以帮助理解lio-sam如何处理多个客户端的连接和请求。 3. SCSI命令处理:lio-sam的核心功能是处理SCSI命令。了解lio-sam如何解析SCSI命令、调用底层存储设备和返回响应可以帮助理解其工作原理和性能优化方法。 4. 性能优化技巧:lio-sam的设计目标之一是提高性能。代码中可能包含一些性能优化技巧,如批量处理、IO调度和缓存管理等。了解这些技巧可以帮助优化自己的应用程序。 需要注意的是,代码阅读是一项耗时耗力的工作,需要具备一定的编程和系统知识。在阅读代码时,可以结合官方文档、论坛和社区来获取更多的信息和帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值