赞
踩
kitti-lego-loam提供了将kitti序列转化成rosbag的代码,在kittibag中.
需要注意下数据文件的存放顺序,以00序列为例:
dataset_folder
|____results
|____00.txt|____sequences
|_____00
|___image_0
|___image_1
|___velodyne
|___times.txt
|___calib.txt
另外,在kittibag.launch文件中,也需要改动datafolder参数、序列号、bag的保存路径等。
kitti-lego-loam对lego-loam代码主要做了三点改动:
(1)修改雷达参数
(2)关闭运动补偿
(3)以kitti gt格式保存结果,用于轨迹测评
(1)代码不能正常在Rviz中显示构建的地图,原因在于,在将kitti数据集转化到rosbag的代码中,velodyne消息header中的TimeStamp为了能够使用evo进行轨迹评估,采用了和kitti的时间戳。但是消息的发送时间是ROS::Time()提供的当前时间,时间不一致导致Rviz不能正常显示。
解决方法:
将消息的发送时间也设置为kitti的时间,同时因为消息的发送时间不能为0,还需要在times.txt文件给时间额外增加0.000001之类的小数。
(2) 增加优化后的地图中的路径显示
主要代码如下:
transformfusion.cpp
nav_msgs::Path laserAfterMappedPath;
ros::Publisher pubLaserAfterMappedPath;
pubLaserAfterMappedPath = nh.advertise<nav_msgs::Path>("/aft_mapped_path", 100);
geometry_msgs::PoseStamped laserAfterMappedPose;
laserAfterMappedPose.header = laserOdometry2.header;
laserAfterMappedPose.pose = laserOdometry2.pose.pose;
laserAfterMappedPath.header.stamp = laserOdometry2.header.stamp;
laserAfterMappedPath.header.frame_id = "/camera_init"; laserAfterMappedPath.poses.push_back(laserAfterMappedPose);
pubLaserAfterMappedPath.publish(laserAfterMappedPath);
(3) Rviz中增加路径,Image topic的显示
实验环境:Ubuntu 18.04 ,ROS melodic,PCL 1.10,GTSAM 4.0.3
数据集:kitti数据集00序列
运行结果:
未加入回环检测:
加入回环检测:
地图中路径显示不太明显,Rviz中将点云颜色调为Flat Color可以看得更清楚。
可以看到加入回环检测后,修正了轨迹漂移。
evo下载链接:
https://github.com/MichaelGrupp/evo
结果:
没有加入IMU信息,效果不是很好。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。