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. The axes 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. The axes 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++ с помощью Coder™ MATLAB ®

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