Skip to content

点云地图制作

Overview

目的:利用建图程序得到地图(GlobalMap.pcd)

LIO-SAM-6AXIS

lio-sam-6axis

step-1 标定传感器 (初始参数已设置,可跳过,若建图效果不佳标定请重新标定)

step-2 录制ros2 bag

注意 录制前先检查话题输出,录制话题过程中车辆尽量平稳缓速行使,建议回环的您的地图场景。

方式一脚本录制话题: ~/pixkit/pix/ros2_bag目录下
                  ros2 bag record $(cat rosbag.txt)
方式二手动录制话题: ~/pixkit/pix/ros2_bag目录下
                  ros2 bag record  /lidar_topic /gnss_topic /imu_topic 
                  这里的 /lidar_topic:雷达设备的话题
                        /gnss_topic :惯导设备的话题
                        /imu_topic  : IMU的话题

step-3 修改配置文件

launch文件下run.launch:

import os
from ament_index_python.packages import get_package_share_directory
XXX
XXX

def generate_launch_description():

    share_dir = get_package_share_directory('lio_sam')
    parameter_file = LaunchConfiguration('params_file')
    xacro_path = os.path.join(share_dir, 'config', 'robot.urdf.xacro')
    rviz_config_file = os.path.join(share_dir, 'config', 'rviz2.rviz')

    params_declare = DeclareLaunchArgument(
        'params_file',
        default_value=os.path.join(
            share_dir, 'config', 'params_rs16.yaml'),
        description='FPath to the ROS2 parameters file to use.')

params_rs16.yaml:读取config下的配置文件,如需改动请注意这里

  • 需要修改为你的传感器配置的topic lio-sam-topic
参数 msg 类型 描述
pointCloudTopic sensor_msgs/Pointcloud2 您录制LiDAR点云的topic
imuTopic sensor_msgs/Imu 您录制IMU的topic
odomTopic nav_msgs/Odometry IMU里程计topic,不需要修改
gpsTopic nav_msgs/NavSatFix 您录制gnss的定位topic
  • 如果使用GNSS进行方位初始化,需要将useImuHeadingInitialization设为truegps-params

step-4: 运行建图程序

注意 结束autoware

mapping_ws下运行建图launch文件

source install/setup.bash
ros2 launch lio_sam run.launch.py

step-5: 播放rosbag

ros2 bag play  [your_ros2_bag] --clock 
your_ros2_bag: 您录制的ros2bag,等待您的ros2bag播放结束执行以下操作

step-6: 保存地图

mapping_ws文件下:

source install/setup.bash
ros2 service call /lio_sam/save_map  lio_sam/srv/SaveMap 

保存好的地图在Downloads下LOAM,将用于

name 描述
GlobalMap.pcd 点云地图,导入Vector Map Builder可以画图,如果使用GNSS的话方向已经转换至ENU方向

点云地图的原点WGS84坐标,用于GNSS定位

建议把终端里的信息保存下来,方便用于GNSS定位时使用 map-origin

代码git

prerequest

  • Ubuntu 22.04
  • ROS2 Humble

step-1: 构建建图工作空间

创建工作空间

mkdir ~/mapping_ws
cd ~/mapping_ws
mkdir src
cd src

step-2 clone仓库

git clone https://github.com/pixmoving-moveit/LIO-SAM-ROS2-PIXKIT # clone 仓库代码

step-3 安装依赖

sudo apt install ros-humble-perception-pcl \
       ros-humble-pcl-msgs \
       ros-humble-vision-opencv \
       ros-humble-xacro
# Add GTSAM-PPA
sudo add-apt-repository ppa:borglab/gtsam-release-4.1
sudo apt install libgtsam-dev libgtsam-unstable-dev

step-4 编译package

cd ~/mapping_ws
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

LiDAR参数说明

lidar-params

参数 描述
sensor LiDAR的类型,可选velodyne, ouster, livox, robosense
N_SCAN 点云通道数,16线激光雷达即为16
Horizon_SCAN LiDAR的横向分辨率,(Velodyne:1800, Ouster:512,1024,2048, Livox Horizon: 4000)
downsampleRate 下采样率,让N_SCAN/downsampleRate=16
lidarMinRange 最小点云距离,默认为1.5
lidarMaxRange 最大点云距离,默认为1000.0

IMU intrinsics

参数 描述
imuAccNoise 3轴加速度计白噪声均值 (m/s^s)
imuGyrNoise 3轴陀螺白噪声均值 (rad/s)
imuAccBiasN 3轴加速度计零偏均值 (m/s^s)
imuGyrBiasN 3轴陀螺零偏均值 (rad/s)
imuGravity 当地重力加速度 (m/s^2)
imuRPYWeight 角度权重,默认0.01

IMU外参,可以使用[LiDAR与IMU外参标定],也可以使用卷尺手动量取(坐标系为右手法则) 当手动量取时: - extrinsicTrans:卷尺手动量取 - extrinsicRot: 单位矩阵即可

IMU extrinsics

参数 描述
extrinsicTrans 平移矩阵
extrinsicRot 旋转矩阵

引用