insertPointCloud

Вставьте 3-D точки или наблюдение облака точек в карту

Описание

пример

insertPointCloud(map3D,pose,points,maxrange) вставляет одно или несколько наблюдений датчика в данном points в карте заполнения, map3D. Занятые точки обновляются с наблюдением за 0,7. Все другие точки между датчиком pose и points обработаны как без препятствий и обновленные с наблюдением за 0,4. Точки вне maxrange не обновляются. NaN значения проигнорированы.

insertPointCloud(map3D,pose,ptcloud,maxrange) вставляет ptcloud объект в карту.

Примеры

свернуть все

occupancyMap3D препятствия объектно-ориентированной памяти в трехмерном пространстве, с помощью наблюдений датчика, чтобы сопоставить среду. Создайте карту и добавьте точки из облака точек, чтобы идентифицировать препятствия. Затем раздуйте препятствия в карте, чтобы гарантировать безопасный операционный пробел вокруг препятствий.

Создайте occupancyMap3D объект с разрешением карты 10 ячеек/метр.

map3D = occupancyMap3D(10);

Задайте набор 3-D точек как наблюдение от положения [x y z qw qx qy qz]. Это положение для датчика, который наблюдает эти точки и сосредоточен на источнике. Задайте два набора точек, чтобы вставить несколько наблюдений.

pose = [ 0 0 0 1 0 0 0];

points = repmat((0:0.25:2)', 1, 3);
points2 = [(0:0.25:2)' (2:-0.25:0)' (0:0.25:2)'];
maxRange = 5;

Вставьте первый набор точек с помощью insertPointCloud. Функция использует положение датчика и данные точки, чтобы вставить наблюдения в карту. Цвета отобразили коррелят к высоте точки только в иллюстративных целях.

insertPointCloud(map3D,pose,points,maxRange)
show(map3D)

Figure contains an axes object. The axes object with title Occupancy Map contains an object of type patch.

Вставьте второй набор точек. Луч между положением датчика (источник) и этими точками перекрывает точки от предыдущей вставки. Поэтому свободное пространство между датчиком и новыми точками обновлено и отмечено как свободное пространство.

insertPointCloud(map3D,pose,points2,maxRange)
show(map3D)

Figure contains an axes object. The axes object with title Occupancy Map contains an object of type patch.

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

vehicleRadius = 0.2;
safetyRadius = 0.3;
inflationRadius = vehicleRadius + safetyRadius;
inflate(map3D, inflationRadius);

show(map3D)

Figure contains an axes object. The axes object with title Occupancy Map contains an object of type patch.

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

свернуть все

3-D карта заполнения в виде occupancyMap3D объект.

Точки облака точек в датчике координируют в виде n-by-3 матрицу [x y z] точки, где n является числом точек в облаке точек.

Облако точек, читающее в виде pointCloud объект.

Примечание

Используя pointCloud объекты требуют Computer Vision Toolbox™.

Положение и ориентация транспортного средства в виде [x y z qw qx qy qz] вектор. Положением транспортного средства является xyz позиционный вектор с вектором ориентации кватерниона, заданным как [qw qx qy qz].

Максимальная область значений датчика облака точек в виде скаляра. Точки вне этой области значений проигнорированы.

Смотрите также

Классы

Функции

Введенный в R2019b