rayIntersection

Найдите точки пересечения лучей и занятых ячеек карты

Описание

пример

intersectionPts = rayIntersection(map,pose,angles,maxrange) возвращает точки пересечения лучей и занятых ячеек в заданном map. Лучи происходят от заданного pose и angles. Точки пересечения возвращены в системе координат мировой координаты. Если нет никакого пересечения до заданного maxrange, [NaN NaN] возвращен.

Примеры

свернуть все

Создайте бинарную карту сетки заполнения. Добавьте препятствия и раздуйте их. Более низкая карта разрешения используется, чтобы проиллюстрировать важность размера ваших ячеек сетки. Покажите карту.

map = binaryOccupancyMap(10,10,2);
obstacles = [4 10; 3 5; 7 7];
setOccupancy(map,obstacles,ones(length(obstacles),1))
inflate(map,0.25)
show(map)

Figure contains an axes object. The axes object with title Binary Occupancy Grid contains an object of type image.

Найдите точки пересечения занятых ячеек и лучей, которые испускают от данного положения транспортного средства. Укажите макс. диапазон и углы для этих лучей. Последний луч не пересекается с препятствием в макс. области значений, таким образом, это не имеет никакой точки столкновения.

maxrange = 6;
angles = [pi/4,-pi/4,0,-pi/8];
vehiclePose = [4,4,pi/2];
intsectionPts = rayIntersection(map,vehiclePose,angles,maxrange)
intsectionPts = 4×2

    3.5000    4.5000
    6.0000    6.0000
    4.0000    9.0000
       NaN       NaN

Постройте точки пересечения и лучи от положения.

hold on
plot(intsectionPts(:,1),intsectionPts(:,2),'*r') % Intersection points
plot(vehiclePose(1),vehiclePose(2),'ob') % Vehicle pose
for i = 1:3
    plot([vehiclePose(1),intsectionPts(i,1)],...
        [vehiclePose(2),intsectionPts(i,2)],'-b') % Plot intersecting rays
end
plot([vehiclePose(1),vehiclePose(1)-6*sin(angles(4))],...
    [vehiclePose(2),vehiclePose(2)+6*cos(angles(4))],'-b') % No intersection ray

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

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

свернуть все

Сопоставьте представление в виде binaryOccupancyMap объект. Этот объект представляет среду робота. Объект содержит матричную сетку с двоичными значениями, указывающими на препятствия как true(1 ) и свободные местоположения как false(0 ).

Положение и ориентация датчика в виде [x y theta] вектор. Положением датчика является x и положение y с угловой ориентацией theta (в радианах) измеренный от x - ось.

Излучите углы, происходящие от датчика в виде вектора с элементами в радианах. Этими углами является относительно заданного датчика pose.

Максимальная область значений лазерного датчика области значений в виде скаляра в метрах. Значения области значений, больше, чем или равный maxrange рассматриваются свободными вдоль целой продолжительности луча, до maxrange.

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

свернуть все

Точки пересечения, возвращенные как n-by-2 матрица [x y] пары в системе координат мировой координаты, где n является длиной angles.

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

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

Введенный в R2019b