show

Визуализируйте сегмент пути

Синтаксис

show(pathSeg)
show(pathSeg,Name,Value)

Описание

пример

show(pathSeg) строит сегмент пути с запуском и целевыми положениями и их заголовками.

show(pathSeg,Name,Value) также задает пары Name,Value, чтобы управлять настройками отображения.

Примеры

свернуть все

Создайте объект DubinsConnection.

dubConnObj = robotics.DubinsConnection;

Задайте начальное и целевое положения как векторы[x y theta].

startPose = [0 0 0];
goalPose = [1 1 pi];

Вычислите допустимый сегмент пути, чтобы соединить положения.

[pathSegObj, pathCosts] = connect(dubConnObj,startPose,goalPose);

Покажите сгенерированный путь.

show(pathSegObj{1})

Создайте объект ReedsSheppConnection.

reedsConnObj = robotics.ReedsSheppConnection;

Задайте начальное и целевое положения как векторы[x y theta].

startPose = [0 0 0];
goalPose = [1 1 pi];

Вычислите допустимый сегмент пути, чтобы соединить положения.

[pathSegObj,pathCosts] = connect(reedsConnObj,startPose,goalPose);

Покажите сгенерированный путь. Заметьте направление поворотов.

show(pathSegObj{1})

pathSegObj{1}.MotionTypes
ans = 1×5 cell array
    {'L'}    {'R'}    {'L'}    {'N'}    {'N'}

pathSegObj{1}.MotionDirections
ans = 1×5

     1    -1     1     1     1

Отключите эту определенную последовательность движения в новом объекте связи. Уменьшайте MinTurningRadius, если робот более manueverable. Увеличьте противоположную стоимость, чтобы уменьшать вероятность используемых обратных направлений. Соедините положения снова, чтобы получить различный путь.

reedsConnObj = robotics.ReedsSheppConnection('DisabledPathTypes',{'LpRnLp'});
reedsConnObj.MinTurningRadius = 0.5;
reedsConnObj.ReverseCost = 5;

[pathSegObj,pathCosts] = connect(reedsConnObj,startPose,goalPose);
pathSegObj{1}.MotionTypes
ans = 1×5 cell array
    {'L'}    {'S'}    {'L'}    {'N'}    {'N'}

show(pathSegObj{1})
xlim([0 1.5])
ylim([0 1.5])

Создайте объект DubinsConnection.

dubConnObj = robotics.DubinsConnection;

Задайте начальное и целевое положения как векторы[x y theta].

startPose = [0 0 0];
goalPose = [1 1 pi];

Вычислите допустимый сегмент пути, чтобы соединить положения.

[pathSegObj,pathCosts] = connect(dubConnObj,startPose,goalPose);

Покажите сгенерированный путь.

show(pathSegObj{1})

Интерполируйте положения вдоль пути. Получите положение через каждые 0,2 метра, включая переходы между поворотами.

length = pathSegObj{1}.Length;
poses = interpolate(pathSegObj{1},[0:0.2:length])
poses = 32×3

         0         0         0
    0.1987   -0.0199    6.0832
    0.3894   -0.0789    5.8832
    0.5646   -0.1747    5.6832
    0.7174   -0.3033    5.4832
    0.8309   -0.4436    5.3024
    0.8418   -0.4595    5.3216
    0.9718   -0.6110    5.5216
    1.1293   -0.7337    5.7216
    1.3081   -0.8226    5.9216
      ⋮

Используйте функцию quiver, чтобы построить эти положения.

quiver(poses(:,1),poses(:,2),cos(poses(:,3)),sin(poses(:,3)),0.5)

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

свернуть все

Сегмент пути, заданный как объект robotics.DubinsPathSegment или robotics.ReedsSheppPathSegment.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Headings',{'transitions'}

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

Заголовок углов, чтобы отобразиться, заданный как массив ячеек вектора символов или скаляров строки. Опции являются любой комбинацией 'start', 'goal' и 'transitions'. Чтобы отключить все отображения заголовка, задайте {''}.

Положения, чтобы отобразиться, заданный как 'both', 'start', 'goal' или 'none'. Положение запуска отмечено зеленым, и целевое положение отмечено красным.

Введенный в R2018b