function [f,plotters] = createV2VDisplay(scenario, sensors, attachedVehicle)
% Create bird's eye plot
f = figure('Visible','off'); pause(0.1)
set(f,'Position',[433 425 1362 607]);
p1 = uipanel(f,'Title', 'Vehicle 1', 'Position', [0.01 0.01 0.48 0.98]);
p2 = uipanel(f,'Title', 'Vehicle 2', 'Position', [0.51 0.01 0.48 0.98]);
a = axes(p1);
xlims = [50 220];
bep{1} = birdsEyePlot('Parent', a, 'XLim', xlims, 'YLim', [-50 50]);
a = axes(p2);
bep{2} = birdsEyePlot('Parent', a, 'XLim', xlims, 'YLim', [-50 50]);
set(p1.Children(1),'Position',[0.35 0.95 0.3 0.0345],'Orientation','horizontal','NumColumnsMode','manual','NumColumns',5);
set(p2.Children(1),'Position',[0.35 0.95 0.3 0.0345],'Orientation','horizontal','NumColumnsMode','manual','NumColumns',5);
for i = 1:numel(sensors)
shift = scenario.Actors(attachedVehicle(i)).Position(1:2);
name = "";%Vehicle " + string(attachedVehicle(i));
if isa(sensors{i},'radarDataGenerator') || isa(sensors{i},'drivingRadarDataGenerator')
plotters.SensorPlotter(i) = coverageAreaPlotter(bep{attachedVehicle(i)}, 'DisplayName',...
name + " radar", 'FaceColor', 'r');
plotCoverageArea(plotters.SensorPlotter(i), sensors{i}.MountingLocation(1:2) + shift,...
sensors{i}.RangeLimits(2), sensors{i}.MountingAngles(3),...
sensors{i}.FieldOfView(1));
else
plotters.SensorPlotter(i) = coverageAreaPlotter(bep{attachedVehicle(i)}, 'DisplayName',...
name + " vision", 'FaceColor', 'b');
plotCoverageArea(plotters.SensorPlotter(i), sensors{i}.SensorLocation + shift,...
sensors{i}.MaxRange, sensors{i}.Yaw,...
sensors{i}.FieldOfView(1));
end
end
plotters.veh1DetPlotter = detectionPlotter(bep{1}, 'DisplayName', 'Detections',...
'MarkerEdgeColor', 'black', 'MarkerFaceColor', 'black');
plotters.veh1TrkPlotter = trackPlotter(bep{1}, 'DisplayName', 'Local Tracks',...
'MarkerEdgeColor', 'black');
plotters.veh2TrkPlotter = trackPlotter(bep{2}, 'DisplayName', 'Local Tracks',...
'MarkerEdgeColor', 'black', 'MarkerFaceColor', 'black');
plotters.veh1FusePlotter = trackPlotter(bep{1}, 'DisplayName', 'Fuser Tracks',...
'MarkerEdgeColor', 'black', 'Marker', 'd');
plotters.veh2FusePlotter = trackPlotter(bep{2}, 'DisplayName', 'Fuser Tracks',...
'MarkerEdgeColor', 'black', 'Marker', 'd');
plotters.ol1Plotter = outlinePlotter(bep{1});
plotters.lb1Plotter = laneBoundaryPlotter(bep{1});
plotters.ol2Plotter = outlinePlotter(bep{2});
plotters.lb2Plotter = laneBoundaryPlotter(bep{2});
rb = roadBoundaries(scenario);
[position, yaw, length, width, originOffset, color] = targetOutlines(scenario.Actors(1));
position = position + scenario.Actors(1).Position(1:2);
% update the bird's-eye plotters with the road and actors
plotLaneBoundary(plotters.lb1Plotter, rb);
plotOutline(plotters.ol1Plotter, position, yaw, length, width, ...
'OriginOffset', originOffset, 'Color', color);
plotLaneBoundary(plotters.lb2Plotter, rb);
plotOutline(plotters.ol2Plotter, position, yaw, length, width, ...
'OriginOffset', originOffset, 'Color', color);
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
此示例演示如何融合两辆车的履带,以提供比每辆车更全面的环境估计。该示例演示如何使用轨道级融合器和对象轨道数据格式。在此示例中,将使用“自动驾驶工具箱中的驾驶场景和视觉检测生成器、“雷达工具箱”中的雷达数据生成器以及“传感器融合和跟踪工具箱”中的跟踪和跟踪融合模型。 汽车安全应用依赖于来自安装在车辆上的不同传感器系统的数据融合。通过使用集中式跟踪器或采用更分散的方法并融合单个传感器产生的轨道,单个车辆融合传感器检测。除了车内数据融合之外,来自多辆车的数据融合还提供了额外的好处,包括更好的覆盖范围、态势感知和安全性。这种车间带传感器融合方法利用了各种传感器的优势,并为每辆车提供了更好的覆盖范围,因为它使用了由该地区其他车辆上的传感器更新的数据。政府和汽车制造商早就认识到需要在车辆之间共享信息,以提高汽车安全性。例如,V2X协议和蜂窝通信链路正在开发中。
资源推荐
资源详情
资源评论
收起资源包目录
汽车安全应用轨道融合仿真.rar (7个子文件)
汽车安全应用轨道融合仿真
showsnap.m 190B
V2VFusion.png 828KB
updateV2VDisplay.m 1KB
createV2VDisplay.m 3KB
TracktoTrackFusionForAutomotiveSafetyApplicationsExample.mlx 386KB
TrackToTrackChasePlot.fig 22KB
TrackToTrackChasePlot.png 22KB
共 7 条
- 1
资源评论
- m0_744226362024-01-10总算找到了自己想要的资源,对自己的启发很大,感谢分享~
- 2201_758863742023-06-03总算找到了自己想要的资源,对自己的启发很大,感谢分享~
珞瑜·
- 粉丝: 11w+
- 资源: 500
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功