3、速腾16线激光雷达RS-16 ----- 3D建图算法LeGO-LOAM的使用(Ubuntu18.04 + ROS Melodic)


运行环境


1. 安装gtsam因子图库

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.0-alpha2/
mkdir build && cd build
cmake ..
sudo make install

2. 新建ROS工程目录文件夹,下载源码进行编译

  • 新建工程文件
mkdir catkin_ws
cd catkin_ws
mkdir src
catkin_make
  • 下载编译LeGO-LOAM
cd src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1

3. 下载相关数据集进行测试

根据GitHub上面的测试集进行相对应的测试

source ~/devel/setup.bash
roslaunch lego_loam run.launch
rosbag play *.bag --clock --topic /velodyne_points /imu/data

在这里插入图片描述


4. 使用速腾16线激光雷达RS-16进行实时建图

4.1 下载rslidar_sdk

https://github.com/RoboSense-LiDAR/rslidar_sdk/releases

根据官网的介绍,下载 rslidar_sdk.tar.gz 压缩包

  • 注意:不要下载Source code。 因为Source code压缩包内不包含子模块 rs_drive r的代码, 还需自行下载rs_driver的代码放入其中才行。
    在这里插入图片描述

打开工作空间进入src文件夹下将下面的文件解压到此处,先不要编译

4.2 雷达驱动环境安装

安装pcapYaml

sudo apt-get install -y libpcap-dev
sudo apt-get install -y libyaml-cpp-dev #若已安装ROS desktop-full, 可跳过

4.3 修改 CMakeLists.txt 和 package.xml

(1) 将文件顶部的set(COMPILE_METHOD ORIGINAL)改为set(COMPILE_METHOD CATKIN)

(2) 将set(POINT_TYPE XYZI)改为set(POINT_TYPE XYZIRT)

(3) 将rslidar_sdk工程目录下的package_ros1.xml文件重命名为package.xml

4.4 修改 config.yaml 参数

rslidar_sdk只有一份参数文件 config.yaml, 储存于rslidar_sdk/config文件夹内。打开此文件,找到以下部分:

idar:
  - driver:
  //此处修改激光雷达型号
      lidar_type: RS128           
      frame_id: /rslidar           
      msop_port: 6699             
      difop_port: 7788            
      start_angle: 0              
      end_angle: 360               
      min_distance: 0.2            
      max_distance: 200            
      use_lidar_clock: false 

激光雷达型号默认RS128,修改为自己的激光雷达型号即可
不修改则会报错,并且读取不到激光扫描参数:

  • 下图为报错的图
    在这里插入图片描述
    作者使用的是16线的激光雷达,故修改如下,
lidar:
  - driver:
      lidar_type: RS16            #LiDAR type - RS16, RS32, RSBP, RS128, RS80, RSM1, RSHELIOS
      frame_id: /rslidar           #Frame id of message
      msop_port: 6699              #Msop port of lidar
      difop_port: 7788             #Difop port of lidar
      start_angle: 0               #Start angle of point cloud
      end_angle: 360               #End angle of point cloud 
      min_distance: 0.2            #Minimum distance of point cloud
      max_distance: 200            #Maximum distance of point cloud
      use_lidar_clock: false       #True--Use the lidar clock as the message timestamp
                                   #False-- Use the system clock as the timestamp

4.5 下载rs雷达话题转velodyne雷达话题源码


  • 方法二:使用 git 下载
cd ~/catkin_ws/src
git clone https://github.com/HViktorTsoi/rs_to_velodyne.git
cd ../
catkin_make

4.6 编译LeGO-LOAM

修改LeGO-LOAM的launch文件:
将这句话的true改成false

<param name="/use_sim_time" value="false"/>

4.7 编译并运行所有节点和launch文件

  • 先运行雷达;
  • 再运行rs_to_velodyne节点(这里要注意LeGO-LOAM需要的雷达点云是XYZIR格式的,话题还是velodyne_points)
  • 最后运行lego_loam
catkin_make
source devel/setup.bash
roslaunch rslidar_sdk start.launch
rosrun rs_to_velodyne rs_tovelodyne XYZIRT XYZIR 
roslaunch lego_loam run.launch

其中rosrun rs_to_velodyne rs_to_velodyne XYZIRT XYZIR这个节点启动,可以该写成下面的launch文件进行启动。
在与src并列的位置新建launch文件夹,在launch文件夹内新建XX.launch文件用来启动节点,并在launch内写入如下。其中args="XYZIRT XYZIR"是Main函数的输入参数:XYZIRT、XYZIR,使用空格隔开参数。

<launch>
 <node pkg="rs_to_velodyne" name="rs_to_velodyne" type="rs_to_velodyne"  args="XYZIRT XYZIR"   output="screen">
 </node>
</launch>

运行成功的图:
在这里插入图片描述

在这里插入图片描述


5. 进行测试过程中遇到的相关问题及解决方案

遇到的问题:[mapOptmization-7] process has died
原因:可能是libmetis 库没有安装,安装libparmetis-dev可以解决

在这里插入图片描述

解决方法:

sudo apt-get update
sudo apt-get install libparmetis-dev

使用参考链接2方法遇到的问题
遇到的问题:[ERROR] [1638358942.333987429]: Point cloud is not in dense format, please remove NaN points first!
在这里插入图片描述

解决方法:
找到utility.huseCloudRIng设置为false
并重新编译


暂未解决,使用其它方法直接对速腾的雷达数据进行转换时遇到的问题
遇到的问题:[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
原因:
在这里插入图片描述


该图为参考链接2处实现的建图效果
在这里插入图片描述



  • 8
    点赞
  • 165
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 速腾聚创16雷达是一种激光雷达传感器,用于测量周围环境的距离和位置信息。而lego-loam是一种基于激光雷达数据的SLAM算法,用于实现机器人的自主定位和建图。这两种技术可以结合使用,实现更精确的定位和建图效果。 ### 回答2: 速腾聚创16雷达 lego-loam 是一种用于自动驾驶的传感器系统。该系统使用激光雷达技术来捕获车辆周围的环境信息,包括车道、地面高度、障碍物等。 该系统使用的是速腾聚创 16 线激光雷达,这是一种高精度的激光雷达,能够在不同光照条件下工作,具有长距离探测能力。它具有 360 度视角,可以同时扫描车辆周围的环境,并提供高分辨率的地图。 而 lego-loam 是一种自主车辆定位与地图建立算法。它利用激光雷达、惯性测量单元和视觉传感器来实现实时的车辆定位和地图构建,并且可以适应不同的路况和地形。该算法还可以利用视觉传感器来跟踪车辆的运动,从而提高自主驾驶系统的精度和可靠性。 但是同时速腾聚创16雷达 lego-loam使用过程中也存在一些问题,比如激光雷达会受到天气和光照条件的影响,可能会失效或数据质量较差;同时,算法也需要不断优化和更新,以适应不同场景和路况。 总之,速腾聚创16雷达 lego-loam自动驾驶技术中必不可少的传感器和算法系统,但是在实际使用中需要综合考虑各种因素,不断优化和改进,以确保自动驾驶技术的安全和可靠性。 ### 回答3: 速腾聚创16雷达 lego-loam是一种用于自主驾驶的传感器技术,它可以帮助汽车感知周围的环境和障碍物,从而实现智能驾驶。该技术采用了多模式感知技术,包括激光雷达、视觉传感器、GPS等,可以实现高精度的环境感知和实时地图构建。 速腾聚创16雷达 lego-loam作为一种多模式传感器技术,具有高精度、快速响应、低功耗等优点。它可以在各种天气和光照条件下正常工作,可以实现实时定位和精确地图绘制。此外,该技术在多车道和复杂路况下也能够实现稳定和可靠的感知和控制。 总之,速腾聚创16雷达 lego-loam的出现对于自主驾驶技术的发展有着重要的促进作用。它能够充分利用多模式感知技术来实现高精度和实时的环境感知,同时还可以优化系统的计算和通信效率,从而提高自主驾驶系统的安全性和可靠性。随着技术不断的发展和完善,相信未来将会有更多更先进、更智能的自主驾驶系统问世,为人类的出行和生活带来更大的便利和效益。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值