镭神16线激光雷达跑lego-loam保姆级教程【实测】

LeGO-LOAM的修改:

提示:这主要需要修改utility.h以及imageProjection.cpp:

原作者提醒需要修改的地方:
1、使代码适应新传感器的关键是确保点云可以正确投影到距离图像并且可以正确检测到地面。例如,VLP-16 在两个方向上的角分辨率分别为 0.2° 和 2°。它有 16 根光束。底部光束的角度为-15°。因此,“utility.h”中的参数如下所示。实施新传感器时,请确保 ground_cloud 有足够的匹配点。在发布任何问题之前,请阅读此内容。

extern const int N_SCAN = 16;
extern const int Horizon_SCAN = 1800;
extern const float ang_res_x = 0.2;
extern const float ang_res_y = 2.0;
extern const float ang_bottom = 15.0;
extern const int groundScanInd = 7;

2、Velodyne HDL-32e 范围图像投影的另一个示例:

extern const int N_SCAN = 32;
extern const int Horizon_SCAN = 1800;
extern const float ang_res_x = 360.0/Horizon_SCAN;
extern const float ang_res_y = 41.333/float(N_Scan-1);
extern const float ang_bottom = 30.666666;
extern const int groundScanInd = 20;

[注]:添加了一个新的useCloudRing标志以帮助进行点云投影(即 VLP-32C、VLS-128)。Velodyne 点云具有“环形”通道,可直接给出范围图像中的点行 ID。其他激光雷达可能具有相同类型的通道,即 Ouster 中的“r”。如果您使用的是非 Velodyne 激光雷达,但它具有类似的“环形”通道,您可以更改 utility.h 中的 PointXYZIR 定义以及 imageProjection.cpp 中的相应代码。

对于KITTI用户,如果您想将我们的算法与 HDL-64e一起使用,您需要为此类投影编写自己的实现。如果点云投影不正确,您将失去很多点和性能。

如果您将激光雷达与 IMU 一起使用,请确保您的 IMU 与激光雷达正确对齐。该算法使用 IMU 数据来校正由传感器运动引起的点云失真。如果 IMU 没有正确对齐,IMU 数据的使用会恶化结果。包装中不支持 Ouster 激光雷达 IMU,因为 LeGO-LOAM 需要 9-DOF IMU。


修改utility.h

激光话题名:

我数据集的话题名为:

点云(pointCloudTopic):/lslidar_point_cloud
IMU(imuTopic): /imu_data

激光雷达参数:

extern const int N_SCAN = 16;
extern const int Horizon_SCAN = 1800;
extern const float ang_res_x = 0.2;
extern const float ang_res_y = 2.0;
extern const float ang_bottom = 15.0 + 0.1;
extern const int groundScanInd = 7;

参数一定要设置对,不然性能差别很大。确定自己的雷达设置的多少Hz,一般是默认10Hz。

useCloudRing修改:

镭神好像是没有Velodyne雷达的ring channel功能,所以useCloudRing设置为false了。

extern const bool useCloudRing = false; // if true, ang_res_y and ang_bottom are not used

修改imageproject.cpp:

找到copyPointCloud函数

    void copyPointCloud(const sensor_msgs::PointCloud2ConstPtr& laserCloudMsg){

        cloudHeader = laserCloudMsg->header;
        cloudHeader.stamp = ros::Time::now(); // Ouster lidar users may need to uncomment this line
        pcl::fromROSMsg(*laserCloudMsg, *laserCloudIn);
        // Remove Nan points
        std::vector<int> indices;
        pcl::removeNaNFromPointCloud(*laserCloudIn, *laserCloudIn, indices);
        // have "ring" channel in the cloud
        if (useCloudRing == true){
            pcl::fromROSMsg(*laserCloudMsg, *laserCloudInRing);
            if (laserCloudInRing->is_dense == false) {
                ROS_ERROR("Point cloud is not in dense format, please remove NaN points first!");
                ros::shutdown();
            }  
        }
    }

这里是把cloudHeader.stamp = ros::Time::now();的注释去掉了。


实验(基于录制好的bag文件):

提示:这里是基于录制好的bag文件,也可以在线测试,可参考大佬的。(在下面链接)

编译

catkin_make

运行 lego-loam

source devel/setup.bash
roslaunch lego-loam run.launch

播放 指定的rosbag

rosbag play *.bag --clock --topic /lslidar_point_cloud

效果

在这里插入图片描述


参考博客:
搭建实验室3d slam 移动小车 4.1jackal小车+镭神32线激光雷达lego-loam建图
LeGO-LOAM初探:原理,安装和测试
lego loam 跑镭神32线激光雷达

  • 11
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 要将IMU信息添加到LEGO-LOAM中,需要进行以下步骤: 1. 首先,需要在代码中添加IMU数据的读取和处理功能。可以使用ROS中的IMU消息类型来读取IMU数据,并将其转换为适合LEGO-LOAM使用的格式。 2. 接下来,需要将IMU数据与激光雷达数据进行同步。可以使用时间戳来将两者同步,确保它们在同一时刻被处理。 3. 最后,需要将IMU数据与激光雷达数据进行融合,以提高定位和建图的精度。可以使用卡尔曼滤波或扩展卡尔曼滤波等技术来实现融合。 总之,将IMU信息添加到LEGO-LOAM中需要进行一些代码修改和算法调整,以确保IMU数据能够与激光雷达数据有效地融合。 ### 回答2: LEGO-LOAM是一个基于LEGO Mindstorms EV3硬件平台和三维激光雷达(3D Lidar)的开源SLAM系统。在实际的应用场景中,通常需要加入IMU(惯性测量单元)信息来提高其定位精度和鲁棒性。那么,LEGO-LOAM如何加入IMU信息呢? 在LEGO-LOAM中,IMU信息是通过IMU传感器进行获取的。具体来说,IMU传感器能够测量设备的加速度和角速度信息,通过对这些信息进行积分可以获取设备的位置和姿态信息。因此,将IMU传感器的输出信息与3D Lidar的测量数据进行融合,便可以提高LEGO-LOAM系统的定位精度和鲁棒性。 在LEGO-LOAM中,可以通过以下步骤将IMU信息加入到系统中: 1.将IMU传感器与LEGO Mindstorms EV3设备相连接,通过EV3软件获取IMU传感器的输出数据。可以使用EV3DEV系统配合Python命令行工具对IMU传感器进行操作。 2.利用IMU传感器获取到设备的加速度和角速度信息,并进行积分得到设备的位置和姿态信息。 3.通过将IMU信息与3D Lidar测量数据进行融合,得到更可靠和精准的定位信息。 4.在代码实现中,可以运用卡尔曼滤波等算法进行IMU信息的融合和滤波,进一步提高系统的精度和稳定性。 总之,在LEGO-LOAM系统中加入IMU信息,能够显著提高系统的定位精度和鲁棒性,为实际的应用场景带来更多便利和价值。 ### 回答3: LEGO-LOAM是一种基于激光雷达的无人驾驶系统,它利用点云数据进行建图和定位。但是,对于具有运动状态的无人车辆而言,仅仅使用激光雷达并不能很好地实现建图和定位。因此,LEGO-LOAM需要结合IMU(惯性测量单元)的信息。 惯性测量单元(IMU)是一种能够测量物体姿态和运动状态的仪器。它通常包括加速度计和陀螺仪。加速度计可以测量物体的加速度,从而可以得到物体的姿态信息。而陀螺仪可以测量物体的角速度,从而可以得到物体的旋转信息。 在LEGO-LOAM中,可以通过将IMU的信息加入激光雷达数据中,使得无人车辆能够更准确地进行建图和定位。 具体来讲,首先需要读取IMU的数据,并将其转换为IMU坐标系下的加速度和角速度信息。然后,需要将IMU坐标系和激光雷达坐标系之间的关系进行校准,从而得到准确的坐标系转换矩阵。最后,将转换后的IMU信息与激光雷达数据进行融合,从而得到更加准确的点云数据,进而进行建图和定位。 总的来说,加入IMU信息可以提高LEGO-LOAM的定位精度和建图效果,使得无人车辆能够更加准确和稳定地进行自主导航和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值