exponenta event banner

computeBoundaryModel

Получение координат y границ полосы движения, заданных координатами x

Описание

пример

yWorld = computeBoundaryModel(boundaries,xWorld) вычисляет координаты мира по оси Y моделей границ полосы движения при заданных координатах мира по оси X.

  • Если boundaries является моделью границы одной полосы движения, то yWorld - вектор координат, соответствующий координатам в xWorld.

  • Если boundaries является массивом моделей границ полосы движения, то yWorld является матрицей. Каждая строка или столбец yWorld соответствует модели границы полосы движения, вычисленной по координатам x в строке или векторе столбца xWorld.

Примеры

свернуть все

Создать parabolicLaneBoundary объект для моделирования границы полосы движения. Вычислите положения полосы вдоль набора расположений по оси X.

Задайте параболические параметры и создайте модель границ полосы движения.

parabolicParams = [-0.005 0.15 0.55];
lb = parabolicLaneBoundary(parabolicParams);

Вычислите местоположения по оси Y для заданных местоположений по оси X в пределах диапазона датчика камеры, установленного на передней части транспортного средства.

xWorld = 3:30; % in meters
yWorld = computeBoundaryModel(lb,xWorld);

Постройте график граничных точек полосы движения. Чтобы подогнать систему координат, переверните порядок осей и измените направление оси X.

plot(yWorld,xWorld)
axis equal
set(gca,'XDir','reverse')

Figure contains an axes. The axes contains an object of type line.

Создайте полосу шириной 3 метра.

lb = parabolicLaneBoundary([-0.001,0.01,1.5]);
rb = parabolicLaneBoundary([-0.001,0.01,-1.5]);

Вычислите модель границы полосы вручную от 0 до 30 метров вдоль оси X.

xWorld = (0:30)';
yLeft = computeBoundaryModel(lb,xWorld);
yRight = computeBoundaryModel(rb,xWorld);

Создайте график птичьего глаза и плоттер границ полосы движения. Отображение информации о полосе движения на графике птичьего глаза.

bep = birdsEyePlot('XLimits',[0 30],'YLimits',[-5 5]);
lanePlotter = laneBoundaryPlotter(bep,'DisplayName','Lane boundaries');
plotLaneBoundary(lanePlotter,{[xWorld,yLeft],[xWorld,yRight]});

Figure contains an axes. The axes contains an object of type line. This object represents Lane boundaries.

Создайте плоттер траектории. Создание и отображение пути транспортного средства ego, перемещающегося по центру полосы движения.

yCenter = (yLeft + yRight)/2;
egoPathPlotter = pathPlotter(bep,'DisplayName','Ego vehicle path');
plotPath(egoPathPlotter,{[xWorld,yCenter]});

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Lane boundaries, Ego vehicle path.

Поиск возможных границ эго-полосы из массива границ полосы.

Создайте массив кубических границ полосы движения.

lbs = [cubicLaneBoundary([-0.0001, 0.0, 0.003,  1.6]), ...
       cubicLaneBoundary([-0.0001, 0.0, 0.003,  4.6]), ...
       cubicLaneBoundary([-0.0001, 0.0, 0.003, -1.6]), ...
       cubicLaneBoundary([-0.0001, 0.0, 0.003, -4.6])];

Для каждой границы полосы рассчитайте положение оси Y, в котором координата X равна 0.

xWorld = 0; % meters
yWorld = computeBoundaryModel(lbs,0);

Используйте вычисленные расположения, чтобы найти границы эго-полосы, которые лучше всего соответствуют критериям.

leftEgoBoundaryIndex = find(yWorld == min(yWorld(yWorld>0)));            
rightEgoBoundaryIndex = find(yWorld == max(yWorld(yWorld<=0)));
leftEgoBoundary = lbs(leftEgoBoundaryIndex);
rightEgoBoundary = lbs(rightEgoBoundaryIndex);

Постройте графики границ с помощью графика птичьего глаза и плоттера границ полос движения.

bep = birdsEyePlot('XLimits',[0 30],'YLimits',[-5 5]);
lbPlotter = laneBoundaryPlotter(bep,'DisplayName','Left-lane boundary','Color','r');
rbPlotter = laneBoundaryPlotter(bep,'DisplayName','Right-lane boundary','Color','g');
plotLaneBoundary(lbPlotter,leftEgoBoundary)
plotLaneBoundary(rbPlotter,rightEgoBoundary)

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Left-lane boundary, Right-lane boundary.

Входные аргументы

свернуть все

Модели границ полос движения, содержащие параметры, используемые для вычисления координат оси Y, заданных как объект границ полос движения или массив объектов границ полос движения. Допустимые объекты: parabolicLaneBoundary и cubicLaneBoundary.

Местоположения по оси x границ в мировых координатах, заданные как действительный скалярный или вещественно-значимый вектор.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

Объекты

Функции

Представлен в R2017a