使用cartographer创建自定义激光点云地图

最近使用一个64线激光+IMU在cartographer上建图,总结以下几点,备忘。

准备数据

自己录制的IMU和Pandar64 线Point2数据(一个激光雷达传感器),并且有LiDAR到IMU的外参。
修改数据包时,注意frame_id要与cartorgrapher参数urdf中描述的一致。
IMU数据因为要被用于Robot的位姿估计,所以要注意当前数据与Cartographer中的座标一致性。

注意
激光雷达扫描一周时所生成帧的频率,此处是每旋转一周生成一帧点云数据,
当采用npackages模式时,每个UDP包就生成一帧,一个旋转周期可能会上百帧,
要注意跟 参数 TRAJECTORY_BUILDER_3D.num_accumulated_range_data 配合使用。

在cargographer中的数据校验

只要没有特别醒目的报错,即可认为没问题。
类似以下这样的报警,可以不必在意,基本不影响建图,

Point data (frame_id: "horizontal_vlp16_link") has a large gap, largest is 0.118117 s, recommended is [0.0005, 0.05] s with no jitter.

launch和lua参数配置

按照demo_backpack_3d.launch以及对应的lua和urdf参数进行配置即可,需要注意以下参数

map_frame = "map",
tracking_frame = "imu_link",
published_frame = "base_link",
odom_frame = "odom",
provide_odom_frame = false,
use_odometry = false,
num_point_clouds = 1,

#这个参数一定要注意
TRAJECTORY_BUILDER_3D.num_accumulated_range_data = 1  #如果不改成对应的频率,可能会出现点云一直不动,没有轨迹生成的情况

同时也要注意,urdf中 欧拉角给出的顺序,参考backpack_3d.urdf可知,实际顺序为 rpy=“pitch roll yaw”,而不是想象中的RPY。

建好的图

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章