位置: IT常识 - 正文

LIO-SAM学习与运行测试数据集

编辑:rootadmin
LIO-SAM学习与运行测试数据集 文章目录0. 说明0.1 环境配置说明0.2 LIO-SAM0.3 系统架构0.4 LIO-SAM youtube视频演示:Rotation Dataset:Walking Dataset:Park Dataset:Campus Dataset:Amsterdam Dataset:stress test:1. 编译与运行1.1 依赖1.2 gstam1.2 安装1.3 运行(1) launch文件:(2) 播放数据包:2 lidar和imu数据准备2.1 准备lidar数据2.1.1 提供点云的时间戳2.1.2 提供点所在环号(point ring number)2.2 准备imu数据(1)imu准备(2)imu对齐alignment(3)imu调试3 样例数据集3.1 可使用默认设置运行的数据集(1)数据集(2)公园数据集3.2 需要配置参数的数据集3.3 Ouster (OS1-128) 数据集--Rooftop dataset(1)数据集描述(2)准备工作(3)自己运行(4)自我体会3.4 Livox Horizon数据集--Livox Horizon(1)说明:(2)配置(3)自己运行(4)自我体会3.5 KITTI 数据集--2011_09_30_drive_0028(1)数据集描述(2)数据集外部参数修改(3)github参考建图效果(4)自己运行(5)自我体会4 其他说明4.1 params.yaml0. 说明0.1 环境配置说明

推荐整理分享LIO-SAM学习与运行测试数据集,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

环境配置: ubuntu18.04, ros1(ros-melodic) 注: 在ros1的kinetic, melodic, noetic(https://github.com/TixiaoShan/LIO-SAM/issues/206)上被测试过; ros1的github代码: https://github.com/TixiaoShan/LIO-SAM/tree/master ros2的github代码: https://github.com/TixiaoShan/LIO-SAM/tree/ros2

0.2 LIO-SAM

论文:LIO-SAM:Tightly-coupled Lidar Inertial Odometry vis Smoothing and Mapping 是一个 实时激光雷达惯性里程计(lidar-inertial odometry)包。

0.3 系统架构

我们设计了一个系统,该系统可以维护两个图形,并且运行速度比实时快 10 倍。(比实时快10倍,实时是指的是激光雷达的频率吗?) "mapOptimization.cpp"中的因子图 (the factor graph) 优化了激光雷达里程计因子和 GPS 因子 (lidar odometry factor and GPS factor)。该因子图在整个测试过程中始终保持不变。 "imuPreintegration.cpp"中的因子图优化了 IMU 和激光雷达里程计因子(IMU and lidar odometry factor)并估计了 IMU 偏差。该因子图会定期重置,并保证在 IMU 频率下的实时里程估计。

0.4 LIO-SAM youtube视频演示:

https://www.youtube.com/watch?v=A0H8CoORZJU 视频部分截图如下:

Rotation Dataset:

Walking Dataset:

Park Dataset:

Campus Dataset:

Amsterdam Dataset:

stress test:

1. 编译与运行1.1 依赖

ROS相关:

sudo apt-get install -y ros-melodic-navigationsudo apt-get install -y ros-melodic-robot-localizationsudo apt-get install -y ros-melodic-robot-state-publisher1.2 gstam

(先不要急着安装)使用apt方法安装方式如下:

sudo add-apt-repository ppa:borglab/gtsam-release-4.0sudo apt install libgtsam-dev libgtsam-unstable-dev

之前用源码编译安装的,如下,这次就先不安装 https://blog.csdn.net/BIT_HXZ/article/details/127135551

1.2 安装cd ~/catkin_ws/srcgit clone https://github.com/TixiaoShan/LIO-SAM.gitcd ..catkin_make1.3 运行(1) launch文件:

roslaunch lio_sam run.launch 如果出现报错:

[lio_sam_imuPreintegration-2] process has died [pid 1671, exit code 127, cmd /home/meng/subject/Lio_sam_ws/devel/lib/lio_sam/lio_sam_imuPreintegration __name:=lio_sam_imuPreintegration __log:=/home/meng/.ros/log/635269ee-46bc-11ed-a61b-1c697af31044/lio_sam_imuPreintegration-2.log].[lio_sam_mapOptmization-5] process has died [pid 1672, exit code 127, cmd /home/meng/subject/Lio_sam_ws/devel/lib/lio_sam/lio_sam_mapOptmization __name:=lio_sam_mapOptmization __log:=/home/meng/.ros/log/635269ee-46bc-11ed-a61b-1c697af31044/lio_sam_mapOptmization-5.log].

缺少一些库。它们已安装但不可用,因为不在 LD_LIBRARY_PATH 环境变量中。所以将 /usr/local/lib 目录添加到变量中解决了我的问题。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

(2) 播放数据包:

rosbag play your-bag.bag -r 3

2 lidar和imu数据准备2.1 准备lidar数据

用户需要准备正确格式的点云数据以进行点云校正(cloud deskewing),这主要在“imageProjection.cpp”中完成。

2.1.1 提供点云的时间戳

LIO-SAM 使用 IMU 数据执行点云校正. 因此,需要知道扫描中的相对点时间(the relative point time), 最新的 Velodyne ROS 驱动程序应直接输出此信息。在这里,我们假设点时间通道被称为"time"。点类型的定义位于"imageProjection.cpp"的顶部。"deskewPoint()"函数利用这个相对时间来获得这个点相对于扫描开始(the beginning of the scan)的变换。当激光雷达以 10Hz 旋转时,一个点的时间戳应该在 0 到 0.1 秒之间变化。 如果您使用其他激光雷达传感器,您可能需要更改此时间通道的名称,并确保它是扫描中的相对时间。

2.1.2 提供点所在环号(point ring number)

LIO-SAM 使用此信息在矩阵中正确组织点, 环号表示该点属于传感器的哪个通道。点类型的定义位于"imageProjection.cpp"的顶部, 最新的 Velodyne ROS 驱动程序应直接输出此信息。 同样,如果您使用其他激光雷达传感器,您可能需要重命名此信息。请注意,该软件包目前仅支持机械激光雷达。

2.2 准备imu数据(1)imu准备

与最初的 LOAM 实现一样,LIO-SAM 仅适用于 9-axis IMU,它提供横滚、俯仰和偏航估计(roll, pitch, and yaw estimation)。横滚和俯仰估计主要用于将系统初始化为正确的姿态。当使用 GPS 数据时,偏航估计将系统初始化在正确的航向。 从理论上讲,像 VINS-Mono 这样的初始化程序将使 LIO-SAM 能够与 6 轴 IMU 一起工作。系统的性能很大程度上取决于 IMU 测量的质量。 IMU 数据速率越高,系统精度就越好。 我们使用 Microstrain 3DM-GX5-25,它以 500Hz 的频率输出数据。我们建议使用至少提供 200Hz 输出速率的 IMU。注意,Ouster 激光雷达的内部 IMU 是一个 6 轴 IMU。

(2)imu对齐alignment

LIO-SAM 将 IMU 原始数据从 IMU 帧转换为 Lidar 帧,遵循 ROS REP-105[ROS坐标系] 法则(x - 向前,y - 左,z - 向上)。为了使系统正常运行,需要在"params.yaml"文件中提供正确的外部转换(the correct extrinsic transformation)。之所以有两个extrinsic(是extrinsicRot和extrinsicRPY嘛?),是因为我的IMU(Microstrain 3DM-GX5-25)加速度(acceleration)和姿态(attitude)坐标不同。取决于您的 IMU 制造商,您的 IMU 的两个外在参数可能相同也可能不同。 以作者的设置为例: ==>>需要设置 x-z 加速度(x-z acceleration)和陀螺仪负值(gyro negative)的读数来转换激光雷达坐标系(the lidar frame)中的 IMU 数据,这在 “params.yaml” 中由 “extrinsicRot” 表示。 ==>>姿态读数的转变可能略有不同。 IMU的姿态测量q_wb通常是指IMU坐标系中的点到世界坐标系(例如ENU)的旋转。但是,该算法需要 q_wl,即从激光雷达到世界的旋转。所以我们需要从激光雷达到 IMU 的旋转 q_bl,其中 q_wl = q_wb * q_bl。为方便起见,用户只需在"params.yaml"中提供q_lb为"extrinsicRPY"(如果加速度和姿态坐标相同,则与"extrinsicRot"相同)。

(3)imu调试

强烈建议用户取消注释 “imageProjection.cpp” 的 “imuHandler()” 中的调试行并测试转换后的 IMU 数据的输出(会在终端打印输出)。用户可以旋转传感器套件以检查读数是否与传感器的运动相对应。可以在此处找到显示更正 IMU 数据的 YouTube 视频链接到 YouTube。 imu与雷达坐标系:

imu调试:

3 样例数据集

下载链接:https://drive.google.com/drive/folders/1gJHwfdHCRdjP7vuT556pv8atqrCJPbUq

3.1 可使用默认设置运行的数据集(1)数据集LIO-SAM学习与运行测试数据集

步行数据集–walking dataset 公园数据集–Park dataset 花园数据集–Garden dataset

(2)公园数据集

公园数据集用于使用 GPS 数据测试 LIO-SAM。该数据集由 Yewei Huang(https://robustfieldautonomylab.github.io/people.html) 收集。 要启用 GPS 功能,请将"params.yaml"中的"gpsTopic"更改为"odometry/gps"。在 Rviz 中,取消选中"地图(云)“并选中"地图(全局)”。还要检查"Odom GPS",它可以可视化 GPS 里程计。 可以调整"gpsCovThreshold"以过滤不良 GPS 读数。 “poseCovThreshold"可用于调整将 GPS 因子添加到图形的频率。例如,您会注意到 GPS 会不断修正轨迹,因为您将"poseCovThreshold"设置为 1.0。由于 iSAM 的重度优化(heavy optimization),建议播放速度为”-r 1"。

poseCovThreshold 保持为默认的25m^2时:

点云地图:

poseCovThreshold 设置为1m^2,并显示gps时:

3.2 需要配置参数的数据集

(1)旋转数据集–Rotation dataset (2)校园数据集(large)–Campus dataset (large) (3)校园数据集(small)–Campus dataset (small)

在这些数据集中,点云主题是"points_raw"。 IMU 主题是"imu_correct",它给出了 ROS REP105 (ros的坐标系参考标准)标准中的 IMU 数据。由于此数据集不需要 IMU 转换,因此需要更改以下配置才能成功运行此数据集: ==>>“config/params.yaml"中的"imuTopic"参数需要设置为"imu_correct”。 imuTopic: "imu_raw" # IMU data ==>>"config/params.yaml"中的"extrinsicRot"和"extrinsicRPY"需要设置为单位矩阵(identity matrices)。

# extrinsicRot: [1, 0, 0, # 0, 1, 0, # 0, 0, 1] # extrinsicRPY: [1, 0, 0, # 0, 1, 0, # 0, 0, 1]3.3 Ouster (OS1-128) 数据集–Rooftop dataset(1)数据集描述

如果您使用默认设置,则无需更改此数据集的外部参数。请按照下面的 Ouster 说明配置包以使用 Ouster 数据运行。可以在 YouTube 上找到该数据集的视频:

(2)准备工作

硬件部分: ==>>使用外部 IMU。 LIO-SAM 不适用于 Ouster 激光雷达的内部 6 轴 IMU。您需要将 9 轴 IMU 连接到激光雷达并执行数据收集(data-gathering)。 ==>>配置驱动程序。将 Ouster 启动文件中的"timestamp_mode"更改为"TIME_FROM_PTP_1588",这样您就可以为点云设置 ROS 格式的时间戳。 Config: ==>>将"params.yaml"中的"sensor"更改为"ouster"。 ==>>根据您的激光雷达更改"params.yaml"中的"N_SCAN"和"Horizo​​n_SCAN",即N_SCAN=128,Horizo​​n_SCAN=1024。

注:Gen 1 和 Gen 2 Ouster:似乎不同版本的点坐标定义可能不同。请参阅问题 #94 进行调试。

(3)自己运行

一个终端: roslaunch lio_sam run.launch export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 另一个终端: rosbag play your-bag.bag 运行效果:

全局地图:

(4)自我体会

可以清楚看出:数据集具有楼顶和地面两个平面,属于是多个平面了

3.4 Livox Horizon数据集–Livox Horizon(1)说明:

请注意,固态激光雷达尚未经过 LIO-SAM 的广泛测试。这里也使用外部 IMU,而不是内部 IMU。对此类激光雷达的支持基于对机械激光雷达代码库的最小更改。需要使用定制的 livox_ros_driver 来发布 LIO-SAM 可以处理的点云格式。

(2)配置

请更改以下参数以使 LIO-SAM 与 Livox Horizo​​n 激光雷达一起工作:

sensor: livox N_SCAN: 6 Horizon_SCAN: 4000 edgeFeatureMinValidNum: 1(3)自己运行

全局(点云)地图:

(4)自我体会

环境是不是选的不是很好?点云效果很乱 固态雷达不能和lio-sam很好地适应?

3.5 KITTI 数据集–2011_09_30_drive_0028(1)数据集描述

数据集包括的话题和话题频率如下:

要使用其他 KITTI 原始数据生成更多包,您可以使用“config/doc/kitti2bag(之前的使用笔记:https://blog.csdn.net/BIT_HXZ/article/details/124319662)”中提供的 python 脚本。

(2)数据集外部参数修改

由于 LIO-SAM 需要高频 IMU 才能正常运行,因此我们需要使用 KITTI 原始数据(kitti raw data)进行测试。一个尚未解决的问题是 IMU 的内在特性是未知的,这对 LIO-SAM 的准确性有很大影响。下载提供的示例数据并在"params.yaml"中进行以下更改:

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]N_SCAN: 64downsampleRate: 2 or 4loopClosureEnableFlag: true or false(3)github参考建图效果

github参考图:

(4)自己运行

一个终端: roslaunch lio_sam run.launch export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 另一个终端:(注意不要带上 -r 3,可能是因为kitti数据量比较大,带上的话建图会乱) rosbag play your-bag.bag

(5)自我体会

可以清楚看出:没有滤除动态目标

4 其他说明4.1 params.yaml # Export settings savePCD: true savePCDDirectory: "/Downloads/LOAM/"

修改输出参数为true会在:/Downloads/LOAM/文件夹下生成pcd文件:

终端输入 pcl_viewer xx.pcd 即可查看

本文链接地址:https://www.jiuchutong.com/zhishi/290764.html 转载请保留说明!

上一篇:unet网络详解(unet网络的优缺点)

下一篇:穆尔森林国家纪念碑,加利福尼亚州旧金山 (© Mia2you/Shutterstock)(穆尔官网)

  • 互联网做流量经验秘籍大分享!内含具体细节和做法(互联网做流量经理怎么样)

    互联网做流量经验秘籍大分享!内含具体细节和做法(互联网做流量经理怎么样)

  • 微博推广技巧之外围的力量有哪些?(微博推广怎么样)

    微博推广技巧之外围的力量有哪些?(微博推广怎么样)

  • 哔哩哔哩如何下载视频到本地(哔哩哔哩如何缓存视频到本地)

    哔哩哔哩如何下载视频到本地(哔哩哔哩如何缓存视频到本地)

  • opporeno4pro是否有3.5mm耳机孔(opporeno4pro都有哪一些不一样的功能)

    opporeno4pro是否有3.5mm耳机孔(opporeno4pro都有哪一些不一样的功能)

  • 苹果微信朋友圈怎么发文字(苹果微信朋友圈发视频模糊怎么解决)

    苹果微信朋友圈怎么发文字(苹果微信朋友圈发视频模糊怎么解决)

  • 微信发小视频慢是怎么回事(微信发小视频慢是怎么回事儿)

    微信发小视频慢是怎么回事(微信发小视频慢是怎么回事儿)

  • 能描述计算机运算速度的是(描述计算机运算速度的单位是)

    能描述计算机运算速度的是(描述计算机运算速度的单位是)

  • 如何把表格打印在一张a4纸上(如何把表格打印在一页纸上)

    如何把表格打印在一张a4纸上(如何把表格打印在一页纸上)

  • 三个摄像头怎么切换(三个摄像头怎么接线)

    三个摄像头怎么切换(三个摄像头怎么接线)

  • 手机没有停机,数据也开着怎么没有网络(手机没有停机,数据也开着怎么没有网络)

    手机没有停机,数据也开着怎么没有网络(手机没有停机,数据也开着怎么没有网络)

  • h网络是几g(h+是什么网络怎么变4g网)

    h网络是几g(h+是什么网络怎么变4g网)

  • 淘宝已处理评价是什么情况(淘宝已处理评价怎么恢复正常)

    淘宝已处理评价是什么情况(淘宝已处理评价怎么恢复正常)

  • 微信语音最多发多少秒(微信语音最多发多久)

    微信语音最多发多少秒(微信语音最多发多久)

  • qq图片加载不出来怎么办(qq图片加载不出来的样子)

    qq图片加载不出来怎么办(qq图片加载不出来的样子)

  • 怎么查看华为手机蓝牙版本(怎么查看华为手机的位置轨迹)

    怎么查看华为手机蓝牙版本(怎么查看华为手机的位置轨迹)

  • 手机显示hd怎么取消(手机显示hd怎么关闭)

    手机显示hd怎么取消(手机显示hd怎么关闭)

  • vue可以添加照片吗(vue在图片上增加文字)

    vue可以添加照片吗(vue在图片上增加文字)

  • 怎样复制粘贴快手昵称(怎样复制粘贴快捷指令)

    怎样复制粘贴快手昵称(怎样复制粘贴快捷指令)

  • 淘宝八载提醒怎么处理(淘宝提醒的宝贝在哪)

    淘宝八载提醒怎么处理(淘宝提醒的宝贝在哪)

  • 小米nfc振动如何关闭(小米nfc振动如何关闭声音)

    小米nfc振动如何关闭(小米nfc振动如何关闭声音)

  • 淘宝公益宝贝有什么用(淘宝公益宝贝有权重吗)

    淘宝公益宝贝有什么用(淘宝公益宝贝有权重吗)

  • gbdt和xgboost区别

    gbdt和xgboost区别

  • tim邮箱在哪里(tim邮箱在哪里打开)

    tim邮箱在哪里(tim邮箱在哪里打开)

  • 手机怎么关闭自动续费(手机怎么关闭自启动)

    手机怎么关闭自动续费(手机怎么关闭自启动)

  • 微信怎么修改年龄(微信怎么修改年份)

    微信怎么修改年龄(微信怎么修改年份)

  • Element-UI控件Tree实现数据树形结构(element ui el-tree)

    Element-UI控件Tree实现数据树形结构(element ui el-tree)

  • CSS清除浮动的五种方法(超详细)(css中清除浮动)

    CSS清除浮动的五种方法(超详细)(css中清除浮动)

  • 价外税怎么理解
  • 外币借款本金的汇兑差额
  • 子公司之间股权转让
  • 完税证明可以重复打印吗
  • 公户购买理财怎么做账
  • 成立日期是注册日期吗
  • 股息红利税补缴什么意思
  • 存货的计价方法有哪些,具体内容是什么
  • 有形资产净值是指
  • 销售奖金怎么做会计分录
  • 分派现金股利会计科目
  • 汇算清缴残保金填哪里
  • 收以前年度租金
  • 旧的活动板房多少钱一个
  • 计提了坏账准备对利润的影响
  • 公司注销留抵税金能退税吗
  • 现金日记账对方科目是什么意思
  • 雇主责任险发票可以用复印件吗
  • 会计监督的基本规定有哪些
  • 收到母公司的投资款
  • 苹果电脑屏幕键盘怎么去除
  • 银行代扣的年费怎么退
  • 收到服务费发票怎么做账务处理
  • 十分钟带你了解阿氏圆
  • 酒店里用了收费的东西怎么算
  • threejs loader
  • 进销存如何结转成本
  • php框架实例
  • 项目费用怎么入账
  • 10qps是多少并发
  • ts与js的优缺点
  • vue-router + element-plus实现面包屑导航栏和路由标签栏
  • python打印矩形方阵
  • 应付账款的会计含义
  • 工会经费减除项包括哪些
  • phpcms生成html
  • db2之间的数据库迁移
  • mongodb从入门到商业实战
  • 怎么把python代码发给别人运行
  • 企业需要准备哪些申报材料?
  • 接受银行承兑汇票需要开通吗
  • 小微企业报税是多久报一次
  • 货物样品出口
  • 存货跌价准备在借方表示什么
  • 工会经费通过应交税费科目核算吗
  • 增值税进项税额加计抵减政策
  • 主营业务收入明细科目
  • 开劳务发票需要的资料是?
  • 白条抵库现象
  • 公司注销实收资本要清零吗?
  • 营业税暂行实施细则
  • 个税速算扣除数2023
  • 销售折扣含义
  • 供货方代垫运费计入什么科目
  • 预付账款借方如何结转
  • SQL server字符串存数据库大还是二进制大
  • 如何获取数据库的sid
  • win8键盘f1到f12取消按fn
  • avcodec.dll是什么意思
  • centos永久修改主机名
  • SMceMan.exe - SMceMan进程是什么意思
  • archlinux 配置网络
  • win7系统每次开机都要选择用户
  • linux用yum
  • linux查看命令帮助信息的方式
  • 使用cp命令时以下说法错误的是
  • javascript对象的属性和方法
  • jquery 选择
  • vue做一个table
  • jQuery实现table中的tr上下移动并保持序号不变的实例代码
  • python twinter
  • 招聘退役士兵减刑政策
  • 广东省国家税务总局班子成员
  • 研发材料占研发费用比例超出50%
  • 车船税保单哪里打印
  • 即征即退什么时候退
  • 手机微信怎么预约
  • 注册一个信息咨询公司需要什么
  • 税务申报网上申报
  • 退回多扣的个人所得税会计分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设