frenet2global

Преобразуйте состояния Frenet в глобальные состояния

Описание

пример

globalState = frenet2global(refPath,frenetState) преобразует состояния траектории Frenet в глобальные состояния.

Примеры

свернуть все

Сгенерируйте ссылочный путь от набора waypoints.

waypoints = [0 0; 50 20; 100 0; 150 10];
refPath = referencePathFrenet(waypoints);

Создайте объект trajectoryGeneratorFrenet из ссылочного пути.

connector = trajectoryGeneratorFrenet(refPath);

Сгенерируйте пять вторых траекторий между источником пути и точкой 30 m вниз путь, как Frenet утверждает.

initState = [0 0 0 0 0 0];  % [S dS ddS L dL ddL]
termState = [30 0 0 0 0 0]; % [S dS ddS L dL ddL]
frenetTraj = connect(connector,initState,termState,5);

Преобразуйте траекторию в глобальные состояния.

globalTraj = frenet2global(refPath,frenetTraj.Trajectory);

Отобразите ссылочный путь и траекторию.

show(refPath);
axis equal
hold on
plot(globalTraj(:,1),globalTraj(:,2),'b')

Задайте глобальные точки и найдите самые близкие точки на ссылочном пути.

globalPoints = waypoints(2:end,:) + [20 -50];
nearestPathPoint = closestPoint(refPath,globalPoints);

Отобразите глобальные точки и самые близкие точки на ссылочном пути.

plot(globalPoints(:,1),globalPoints(:,2),'r*','MarkerSize',10)
plot(nearestPathPoint(:,1),nearestPathPoint(:,2),'b*','MarkerSize',10)

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

arclengths = linspace(nearestPathPoint(1,6),nearestPathPoint(2,6),10);
pathStates = interpolate(refPath,arclengths);

Отобразите интерполированные точки контура.

plot(pathStates(:,1),pathStates(:,2),'g')
legend(["Waypoints","Reference Path","Trajectory to 30m",...
        "Global Points","Closest Points","Interpolated Path Points"])

Figure contains an axes object. The axes object contains 6 objects of type line. These objects represent Waypoints, Reference Path, Trajectory to 30m, Global Points, Closest Points, Interpolated Path Points.

Входные параметры

свернуть все

Ссылочный путь в виде referencePathFrenet объект.

Траектория в Frenet координирует систему координат в виде P-by-6 числовая матрица со строками формы [S dS ddS L dL ddL], где S длина дуги и L перпендикулярное отклонение от направления ссылочного пути. Производные S относительно времени. Производные L относительно длины дуги, S. P является количеством заданных состояний Frenet.

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

свернуть все

Траектории в системе координат глобальной координаты, возвращенной как P-by-6 числовая матрица со строками формы [x y theta kappa speed accel], где:

  • x y и theta – SE (2) состояние, описанное в глобальных координатах, с x и y в метрах и theta в радианах

  • kappa – Искривление или инверсия радиуса, в метрах

  • speed – Скорость в theta направление в m/s

  • accel – Ускорение в theta направление в m/s2

P является количеством траекторий Frenet, преобразованных в глобальные траектории.

Абсолютная разность между theta и ориентация самой близкой точки на пути от глобального состояния не должна превышать пи/2 при преобразовании между системами координат Frenet и глобальной переменной.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2020b