问题:
下载编译lego-loam代码。运行run.launch后,再播放自己的bag包,发现无输出数据
原因:
录制bag包时的topic时间与系统时间(如tf)有差别,播放时,系统找不到对应时间的topic,缓冲队列一满,就默认把topic全都丢弃了,导致了lego-loam无输入topic,也就无输出数据。
解决办法:
改将run.launch文件中的/use_sim_time为true,这代表指定让程序使用模拟时间,而不是实际的 wall-clock time。
<param name="/use_sim_time" value="true" />
运行lego-loam:
roslaunch lego_loam run.launch
再在播放bag包时加上--clock,发布bag中的模拟时间(这样程序的系统时间就与bag中的topic时间一样了),并播放对应的两个话题:
rosbag play lego_loam.bag --clock --topics /velodyne_points /imu_data
实时建图时将run.launch文件中的/use_sim_time改为false即可:
<param name="/use_sim_time" value="false" />