跳到主要内容

使用 SLAM 算法

1 概述

机器人在未知环境中移动,需要获取自身的运动状态,并对周边的环境建立一种表示(可以是路标也可以是地图)。通过使用 SLAM (Simultaneous Localization And Mapping, 即同步定位与建图)算法,能够获得这种运动的状态 (Localization),同时建立地图 (Mapping),帮助机器人理解周围的环境。

2 使用方法

本文将以 JT128 这款禾赛激光雷达产品为例,简要介绍 DLIO 开源 SLAM 算法的使用方法。

  • JT128 是专为机器人和工业领域设计的迷你型 360° x 189° 超半球 3D 激光雷达,拥有 0.4° (H) x 0.74° (V) 的分辨率以及内置 IMU,适合进行集成到移动机器人进行感知、建图任务(更多 JT128 信息介绍可详见此处)。

  • DLIO 是一种轻量级的雷达惯性里程计 SLAM 开源算法,经过简单适配可以支持多种 lidar 数据格式。此开源算法的详细介绍以及获取路径参见Direct LiDAR-Inertial Odometry (DLIO)

使用 JT128 运行 DLIO 算法的具体步骤如下:

  1. 配置 ROS 环境(可参考ROS 环境准备

注:推荐安装使用ROS Noetic

  1. 根据DLIOHesai ROS 驱动 中的 readme 进行安装和编译

  2. 正确连接 Lidar 并配置 Hesai ROS 驱动

注:如果使用了 IMU 数据,需要在config.yaml中配置send_imu_ros: true。配置完成后,并参照下图所示方式验证驱动是否正确发送了 IMU 数据和点云数据:

SLAM_ros_topic
  1. 另外打开一个终端,输入以下指令运行 DLIO 算法:
roslaunch direct_lidar_inertial_odometry dlio.launch \
rviz:=true \
livox_topic:=/lidar_points \
imu_topic:=/lidar_imu

3 运行效果

运行 DLIO 算法后的 JT128 点云 SLAM 效果示例如下图所示:

SLAM_DLIO_results

此算法根据激光雷达点云和 IMU 的数据输出了当前的位姿、历史轨迹以及点云地图,并可以使用以下指令将点云地图导出为.pcd格式。

rosservice call /robot/dlio_map/save_pcd LEAF_SIZE /path/to/your/directory

此文档对您有帮助吗?