function bepPlotters = initializeBirdsEyePlot(bepAxes,axisLimit,sensorConfigurationFile)

% Create the birds-eye plot object
BEP = birdsEyePlot('Parent',bepAxes,'XLim',axisLimit(1,:),'YLim',axisLimit(2,:));

% Create the sensor coverage areas (one vision & two radars)
bepPlotters.Sensor(1) = coverageAreaPlotter(BEP,'DisplayName','VisionFoV',...
    'FaceColor','cyan',...
    'EdgeColor','none',...
    'FaceAlpha',0.1);
bepPlotters.Sensor(2) = coverageAreaPlotter(BEP,'DisplayName','MRRFoV',...
    'FaceColor',[1 0.6 0.2],...
    'EdgeColor','none',...
    'FaceAlpha',0.1);
bepPlotters.Sensor(3) = coverageAreaPlotter(BEP,'DisplayName','LRRFoV',...
    'FaceColor','red',...
    'EdgeColor','none',...
    'FaceAlpha',0.07);

% --- Create plotter for radar object detections
bepPlotters.Radar  = detectionPlotter(BEP,'DisplayName','Radar',...
    'FontSize',6,...
    'LabelOffset',[0.2 -0.5],...
    'VelocityScaling',0.5,...
    'Marker','o',...
    'MarkerSize',4,...
    'MarkerEdgeColor','magenta');

% --- Create plotter for vision object detections
bepPlotters.Vision = detectionPlotter(BEP,'DisplayName','Vision',...
    'FontSize',7,...
    'LabelOffset',[0.2 -0.5],...
    'VelocityScaling',0.5,...
    'Marker','v',...
    'MarkerSize',5,...
    'MarkerEdgeColor','blue');

% --- Create plotter for lane boundary
bepPlotters.LaneLeft = laneBoundaryPlotter(BEP,'DisplayName','LeftLane',...
    'Color',[0 0.45 0.74],...
    'LineStyle','-');

bepPlotters.LaneRight = laneBoundaryPlotter(BEP,'DisplayName','RightLane',...
    'Color',[0 0.45 0.74],...
    'LineStyle','-');

% --- Create plotter for fusion object detections
bepPlotters.confirmedTracks  = trackPlotter(BEP,'DisplayName','Tracks','HistoryDepth',10,...
    'FontSize',7,...
    'LabelOffset',[0.2 -0.5],...
    'VelocityScaling',0.5,...
    'Marker','s',...
    'MarkerSize',8,...
    'MarkerEdgeColor','blue');

bepPlotters.unknownTracks  = trackPlotter(BEP,'DisplayName','Unknown','HistoryDepth',10,...
    'VelocityScaling',0.5,...
    'Marker','s',...
    'MarkerSize',7,...
    'MarkerEdgeColor','black'); %[0.5 0.5 0.5]);

% --- Create plotter for mio detections
bepPlotters.mio  = trackPlotter(BEP,'DisplayName','mio','HistoryDepth',0,...
    'Marker','s',...
    'MarkerSize',7,...
    'MarkerEdgeColor','none',...
    'MarkerFaceColor','yellow');

grid(BEP.Parent,'on');
grid(BEP.Parent,'minor');

% Lock the legend for speedup
set(BEP.Parent.Legend, 'AutoUpdate', 'off');

% Read the sensor configuration file
p = load(sensorConfigurationFile, 'sensorParams');

% Plot coverage area using bird's-eye plot
for i = 1:numel(p.sensorParams)
    plotCoverageArea(bepPlotters.Sensor(i),...
        [p.sensorParams(i).X, p.sensorParams(i).Y],...  % Position of sensor on vehicle
         p.sensorParams(i).Range,...                   % Coverage distance of sensor
         p.sensorParams(i).YawAngle,...                % Orientation of sensor
         p.sensorParams(i).FoV);                       % Coverage angle of sensor
end

end
