stateSpaceSE2

Пространство состояний SE (2)

Описание

The stateSpaceSE2 объект хранит параметры и состояния в пространстве состояний SE (2), которое состоит из векторов состояний, представленных [x, y, θ]. x и y являются Декартовыми координатами, и θ является углом ориентации. Объект использует Евклидово расстояние для вычисления расстояния и использует линейную интерполяцию для вычисления перемещения и поворота состояния.

Создание

Описание

пример

space = stateSpaceSE2 создает объект пространства состояний SE (2) с границами состояний по умолчанию для x, y и θ.

space = stateSpaceSE2(bounds) задает bounds для x, y и θ. Значения состояний за границами усечены до границ. Вход, bounds, позволяет вам задать значение свойства StateBounds.

Свойства

расширить все

Имя пространства состояний, заданное как строка.

Это свойство доступно только для чтения.

Размерность пространства состояний, заданная как положительное целое число.

Границы переменных состояния, заданные как вещественная матрица 3 на 2.

  • Первая строка задает нижнюю и верхнюю границы x состояния в метрах.

  • Вторая строка задает нижнюю и верхнюю границы y состояния в метрах.

  • Третья строка задает нижнюю и верхнюю границы θ состояния в радианах.

Типы данных: double

Вес, приложенный к вычислению расстояния x и y, задается как неотрицательный действительный скаляр.

В объекте расстояние вычисляется как:

d=(wxy(dx2+dy2))+wθdθ2

<reservedrangesplaceholder15> <reservedrangesplaceholder14> - вес, относился x и y к координатам, и <reservedrangesplaceholder11> <reservedrangesplaceholder10> - вес, относился θ к координате. <reservedrangesplaceholder8> <reservedrangesplaceholder7>, <reservedrangesplaceholder6> <reservedrangesplaceholder5> и <reservedrangesplaceholder4> <reservedrangesplaceholder3> - расстояния в x, y, и θ направление, соответственно.

Типы данных: double

Вес, примененный к вычислению θ расстояния, задается как неотрицательный действительный скаляр.

В объекте расстояние вычисляется как:

d=(wxy(dx2+dy2))+wθdθ2

<reservedrangesplaceholder15> <reservedrangesplaceholder14> - вес, относился x и y к координатам, и <reservedrangesplaceholder11> <reservedrangesplaceholder10> - вес, относился θ к координате. <reservedrangesplaceholder8> <reservedrangesplaceholder7>, <reservedrangesplaceholder6> <reservedrangesplaceholder5> и <reservedrangesplaceholder4> <reservedrangesplaceholder3> - расстояния в x, y, и θ направление, соответственно.

Типы данных: double

Функции объекта

copyСоздайте глубокую копию объекта пространства состояний
distanceРасстояние между двумя состояниями
enforceStateBoundsУменьшите состояние до границ состояния
interpolateИнтерполяция между состояниями
sampleGaussianДискретизация состояния с использованием Гауссова распределения
sampleUniformСостояние выборки с использованием равномерного распределения

Примеры

свернуть все

Создайте пространство состояний SE (2).

ss = stateSpaceSE2;

Создайте occupancyMap-датчик состояния на основе с использованием созданного пространства состояний.

sv = validatorOccupancyMap(ss);

Создайте карту заполнения из примера карты и установите разрешение карты 10 ячеек/метр.

load exampleMaps
map = occupancyMap(simpleMap,10);
sv.Map = map;

Установите расстояние валидации для валидатора.

sv.ValidationDistance = 0.01;

Обновите границы пространства состояний так же, как и пределы карты.

ss.StateBounds = [map.XWorldLimits;map.YWorldLimits; [-pi pi]];

Создайте планировщик пути и увеличьте максимальное расстояние соединения.

planner = plannerRRT(ss,sv);
planner.MaxConnectionDistance = 0.3;

Установите начальное и целевое состояния.

start = [0.5,0.5,0];
goal = [2.5,0.2,0];

Планируйте путь с настройками по умолчанию.

rng(100,'twister'); % for repeatable result
[pthObj,solnInfo] = planner.plan(start,goal);

Визуализация результатов.

map.show; hold on;
plot(solnInfo.TreeData(:,1),solnInfo.TreeData(:,2),'.-'); % tree expansion
plot(pthObj.States(:,1), pthObj.States(:,2),'r-','LineWidth',2) % draw path

Figure contains an axes. The axes with title Occupancy Grid contains 3 objects of type image, line.

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

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

.
Введенный в R2019b