3D激光雷达-Robotsense使用---LIO_SAM测试

这篇具有很好参考价值的文章主要介绍了3D激光雷达-Robotsense使用---LIO_SAM测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3D激光雷达-Robotsense使用—LIO_SAM测试

1. 参考链接

  • TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping
  • lio-sam运行自己的rosbag_heirenlop的博客-CSDN博客
  • LIO-SAM:配置环境、安装测试、适配自己采集数据集_有待成长的小学生的博客-CSDN博客_lio-sam

2. 雷达驱动-更改点云类型

运行lio-sam需要用到ringtimestamp两个参数,点云类型是XYZIRT ,lio-sam作者用的velodyne雷达是带这两个参数的

IR_M200小车上速腾的robotsense雷达默认发布的点云类型是XYZI,需要在CMakeLists.txt手动修改

------------------------------最新的SDK下载在debug_ws------------------------------

打开**/home/shansu/debug_ws/src/rslidar_sdk/CMakeLists.txt**

#=======================================
# Custom Point Type (XYZI, XYZIRT)
#=======================================
set(POINT_TYPE XYZIRT)

在文件顶部便可以选择点的类型,把set(POINT_TYPE XYZI)改为set(POINT_TYPE XYZIRT),然后需要重新编译整个工程

3. rslidar_points转velodyne_points

直接在lio-sam的config/params.yaml中文件修改雷达的话题为rslidar_points的话会出现如下错误:

[ERROR] [1608623674.483017189]: Point cloud is not in dense format, please remove NaN points first!

使用如下功能包将rslidar_points转成velodyne_points

HViktorTsoi/rs_to_velodyne: A ros tool for converting Robosense pointcloud to Velodyne pointcloud format.

功能包编译完成后,终端运行如下命令:

rosrun rs_to_velodyne rs_to_velodyne XYZIRT XYZIRT

会出现如下信息:

caohaojie@caohaojie-virtual-machine:~$ rosrun rs_to_velodyne rs_to_velodyne XYZIRT XYZIRT
[ INFO] [1671807722.528597207]: Listening to /rslidar_points ......
Failed to find match for field 'intensity'.
Failed to find match for field 'intensity'.
Failed to find match for field 'intensity'.
Failed to find match for field 'intensity'.
Failed to find match for field 'intensity'.
Failed to find match for field 'intensity'.
Failed to find match for field 'intensity'.

可以修改该功能包下的rs_to_velodyne.cpp

intensity的数据类型改为float, 重新编译即可

struct RsPointXYZIRT {
    PCL_ADD_POINT4D;
    float intensity;  //intensity 该为float类型,如下同理
    uint16_t ring = 0;
    double timestamp = 0;

EIGEN_MAKE_ALIGNED_OPERATOR_NEW

} EIGEN_ALIGN16;
POINT_CLOUD_REGISTER_POINT_STRUCT(RsPointXYZIRT,
                                  (float, x, x)(float, y, y)(float, z, z)(float, intensity, intensity)
                                          (uint16_t, ring, ring)(double, timestamp, timestamp))
  • 节点加入launch文件
<launch>
  <node pkg="rs_to_velodyne" name="rs_to_velodyne" type="rs_to_velodyne"  args="XYZIRT XYZIRT"   output="screen">
  </node>
</launch>
  • rslidar_points转velodyne_points
roslaunch rs_to_velodyne rs2velodyne.launch

4. 使用imu_utils工具标定imu的内参

参考链接
  • 使用imu_utils工具标定imu的内参_大聪明墨菲特的博客-CSDN博客_imu_utils标定

  • 用imu_utils标定IMU,之后用于kalibr中相机和IMU的联合标定_一ping就通的博客-CSDN博客_kalibr 很多 abandoned:

安装依赖项
sudo apt-get install libdw-dev
编译
  • 先编译code_utils: https://github.com/gaowenliang/code_utils

code_utils/下打开sumpixel_test.cpp文件

修改#include "backward.hpp"#include ''code_utils/backward.hpp''

  • 再编译imu_utils:https://github.com/gaowenliang/imu_utils
录制imu数据包

全程保持imu静止不动,imu上电运行十分钟后开始录制,录制两个小时)

rosbag record -O imu.bag /imu/data
标定imu(标定过程imu不要运行)

在 imu_utils/src/imu_utils/launch/下找到xsense.launch,修改imu话题名和time,两小时就设为120

#启动launch
roslaunch imu_utils xsense.launch

#在放imu包的文件夹下右键新开终端,以两百倍速播放imu包
rosbag play -r200  imu.bag /imu/data:=/imu_an/imu/data

播包结束时才会显示标定完成,标定结果在data文件夹下会生成一堆文件我们需要的是第一个标定结束

标定结果存在imu_utils/src/imu_utils/data/xsense_imu_param.yaml

修改lio_sam下的.yaml文件的对应参数

avg-axis:

​ acc_n---->imuAccNoise

avg-axis:

​ gyr_n---->imuGyrNoise

avg-axis:

​ acc_w---->imuAccBiasN

avg-axis:

​ gyr_w----> imuGyrBiasN

5. imu和雷达的外参标定

  • https://github.com/chennuo0125-HIT/lidar_imu_calib

6. 录制Lidar和Imu数据

  • 小车上电开机后,启动3D激光robotsense
roslaunch rslidar_sdk start.launch 
  • rslidar_points转velodyne_points
roslaunch rs_to_velodyne rs2velodyne.launch
  • 录制lidar和imu
rosbag record -O 701_v1.bag /imu/data /velodyne_points

7. 运行LIO_SAM

版本为liorf/launch/include at main · YJZLuckyBoy/liorf (github.com)

修改版本2:为了后续想要适配更多激光雷达(机械/固态/多雷达),而不用考虑特征提取模块的通用性,因此参考FAST-LIO2更改了一版移除LIO-SAM特征提取模块的代码,直接使用全部点云数据进行里程计解算,并且代码适配了速腾雷达、6轴IMU、9轴IMU数据,目前测试LIO-SAM提供数据(Velodyne、Livox、Ouster)及UrbanNavDataset数据集均没有问题,并且进行一些性能测试和对比,现已上传到github, 有需要的朋友可以Star一下, 具体适配自己设备需要修改的参数可以参考README.md文件.
原文链接:https://blog.csdn.net/qq_42938987/article/details/108434290

在小车主机上编译通过,但在本地20.04虚拟机测试编译的时候出现如下错误

robosense 雷达 没有ring timestamp,SLAM,linux,ubuntu,c++,算法

修改liorf下的 CMakeLists.txt的31行

timer后面添加 serialization thread

find_package(Boost REQUIRED COMPONENTS timer serialization thread)

这里最终使用原版LIO_SAM,并通过本地虚拟机的容器启动

  • 通过vs code的docker插件配置,启动LIO_SAM
    参考博客

  • 修改lio_sam 的 params.yaml 文件
    根据上述步骤imu和雷达的外参标定
    修改params.yaml 文件中# Extrinsics: T_lb (lidar -> imu)的相关数据

# Extrinsics: T_lb (lidar -> imu)
  extrinsicTrans: [-0.365, 0.0, 1.12]
  extrinsicRot: [0.944813,-0.327588, 0.00378493,
                 0.327583, 0.944821, 0.00180425,
                 -0.00416713, -0.000464799,0.999991]
  extrinsicRPY: [0.944813,-0.327588, 0.00378493,
                 0.327583, 0.944821, 0.00180425,
                 -0.00416713, -0.000464799,0.999991]
  • 启动LIO_SAM
roslaunch lio_sam run.launch 
  • 播放数据集

    1. 701_v1.bag (室内环境)
    rosbag play 701_v1.bag /imu/data:=/imu_raw /velodyne_points:=/points_raw
    

robosense 雷达 没有ring timestamp,SLAM,linux,ubuntu,c++,算法文章来源地址https://www.toymoban.com/news/detail-771343.html

  1. data_rs2velodyne.bag (室外环境)
rosbag play data_rs2velodyne.bag /imu/data:=/imu_raw /velodyne_points:=/points_raw --clock --topics /imu/data /velodyne_points
  • 视频链接【LIO_SAM】校园建图测试
    robosense 雷达 没有ring timestamp,SLAM,linux,ubuntu,c++,算法
    robosense 雷达 没有ring timestamp,SLAM,linux,ubuntu,c++,算法

到了这里,关于3D激光雷达-Robotsense使用---LIO_SAM测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mid360激光雷达跑Point-LIO算法

    以下是建图的运行过程及参数配置 mid360激光雷达驱动 安装(ubuntu20.4 ) 配置修改MID360_config.json 192.168.1.5,是本机ip 192.168.1.157是激光ip 57是激光雷达的sn号后两位

    2024年02月11日
    浏览(38)
  • 使用激光雷达(LiDAR)和相机进行3D物体跟踪

    使用相机和激光雷达进行时间到碰撞(TTC)计算 在我的先前文章中,我介绍了通过检测关键点和匹配描述符进行2D特征跟踪的主题。在本文中,我将利用这些文章中的概念,以及更多的内容,开发一个软件流水线,使用相机和激光雷达测量在3D空间中检测和跟踪对象,并使用

    2024年02月05日
    浏览(49)
  • 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 论文:LIO-SAM:Tightly-coupled Lidar Inertial Odometry vis Smoothin

    2023年04月16日
    浏览(43)
  • 激光SLAM:Faster-Lio 算法编译与测试

    Faster-LIO是基于FastLIO2开发的。FastLIO2是开源LIO中比较优秀的一个,前端用了增量的kdtree(ikd-tree),后端用了迭代ESKF(IEKF),流程短,计算快。Faster-LIO则把ikd-tree替换成了iVox,顺带优化了一些代码逻辑,实现了更快的LIO。在典型的32线激光雷达中可以取得100-200Hz左右的计算频

    2024年02月02日
    浏览(37)
  • 使用Open3D实现3D激光雷达可视化:以自动驾驶的2DKITTI深度框架为例(下篇)

    原创 | 文 BFT机器人  【原文链接】使用Open3D实现3D激光雷达可视化:以自动驾驶的2DKITTI深度框架为例(上篇) 05 Open3D可视化工具 多功能且高效的3D数据处理:Open3D是一个全面的开源库,为3D数据处理提供强大的解决方案。它具有优化的后端架构,可实现高效的并行化,非常适

    2024年02月04日
    浏览(61)
  • 使用Open3D实现3D激光雷达可视化:以自动驾驶的2DKITTI深度框架为例(上篇)

    原创 | 文 BFT机器人  3DLiDAR传感器(或)三维光探测和测距是一种先进的发光仪器,能够像我们人类一样在三维空间中感知现实世界。这项技术特别彻底改变了地球观测、环境监测、侦察和现在的自动驾驶领域,它提供准确和详细数据的能力有助于促进我们对环境和自然资源

    2024年02月03日
    浏览(56)
  • 4D毫米波雷达和3D雷达、激光雷达全面对比

              众所周知,传统3D毫米波雷达存在如下性能缺陷:         1)静止目标和地物杂波混在一起,难以区分;         2) 横穿车辆和行人多普勒为零或很低,难以检测;         3) 高处物体和地面目标不能区分,容易造成误刹,影响安全性;        

    2024年02月05日
    浏览(58)
  • 3D激光雷达和相机融合

    主要看重投影误差,cv的标定识别率也太低了。。。原因是找到了,相机给的曝光时间5ms,增大曝光时间成功率大大提升,但曝光时间给打了,影响实时性,头疼。。 主要是3D-2D的标定 采集标定数据 参照以下采集标定数据和处理标定数据,pcd角点选取和图像角点选取: https:

    2024年02月06日
    浏览(63)
  • 视觉与激光雷达融合3D检测(一)AVOD

    AVOD(Aggregate View Object Detection)和MV3D类似,是一种融合3维点云和相机RGB图像的三维目标检测算法. 不同的是: MV3D中融合了相机RGB图像,点云BEV映射和FrontView映射,而AVOD则只融合相机RGB图像和点云BEV映射.         从网络结果来看,AVOD采用了基于两阶的检测网络,这让我们很容易想到

    2024年02月07日
    浏览(104)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包