matlab 内置丰富的函数用于提取分析激光雷达数据,提取步如下
%%
% 定义rosbag所在位置
filePath = fullfile(‘D:\lidar_data\’,‘lidar_data.bag’);
%提取bag中消息格式信息
bag = rosbag(filePath);
数据格式如下图:
%% bag文件数据选择,选择LaserScan
bagtopic = select(bag,‘MessageType’,{‘sensor_msgs/LaserScan’});
%% 点云数据读取
topicdata = readMessages(bagtopic);
N = length(topicdata);
M = length(topicdata{i, 1}.Ranges);
timeall = zeros(N,1);
distall = zeros(N,M);
reflectall = zeros(N,M);
for i = 1:length(topicdata)
distall(i,:) = topicdata{i, 1}.Ranges;
reflectall(i,:) = topicdata{i, 1}.Intensities;
timeall(i,:) = (topicdata{i, 1}.Header.Stamp.Sec*10^9+topicdata{i, 1}.Header.Stamp.Nsec)/(10^6);
end
timedelta = diff(timeall);
%%
tar_index = 1660;
% 角度
angle_range = (topicdata{1, 1}.AngleMin * 57.2958) :(topi