exponenta event banner

uavLidarPointCloudGenerator

Создание облаков точек из сетей

Описание

uavLidarPointCloudGenerator Система object™ генерирует сигналы обнаружения от статистического моделируемого лидарного датчика. Системный объект использует статистическую модель датчика для моделирования лидарных обнаружений с добавленным случайным шумом. Все обнаружения относятся к координатной рамке установленного на транспортном средстве датчика. Вы можете использовать uavLidarPointCloudGenerator объект в сценарии, созданный с помощью uavSensor, содержащие статические сетки, платформы БЛА и датчики.

Чтобы создать облака лидарных точек:

  1. Создать uavLidarPointCloudGenerator и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

lidar = uavLidarPointCloudGenerator создает статистическую сенсорную модель для создания облака точек для лидара. Эта модель датчика будет иметь свойства по умолчанию.

lidar = uavLidarPointCloudGenerator(Name,Value) задает свойства, используя одну или несколько пар имя-значение. Например, uavLidarPointCloudGenerator('UpdateRate',100,'HasNoise',0) создает генератор облака точек лидара, который сообщает об обнаружениях с частотой обновления 100 Гц без шума.

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Частота обновления лидарного датчика, заданная как положительный действительный скаляр в Гц. Это свойство задает частоту новых обнаружений.

Пример: 20

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

Максимальный диапазон обнаружения датчика, заданный как положительный действительный скаляр. Датчик не обнаруживает объекты за пределами этого диапазона. Единицы измерения в метрах.

Пример: 120

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

Точность измерений диапазона, заданная как положительный действительный скаляр в метрах. Это свойство задает точность измерения диапазона датчиков с одним стандартным отклонением.

Пример: 0,001

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

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

Пример: 0.6000

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

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

Пример: 0.6000

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

Азимутальные пределы лидара, определяемые как двухэлементный вектор вида [min max]. Единицы измерения в градусах.

Пример: [-60 100]

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

Пределы отметки лидара, заданные как двухэлементный вектор вида [min max]. Единицы измерения в градусах.

Пример: [-60 100]

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

Добавить шум к измерениям лидарного датчика, указанный как true или false. Установить для этого свойства значение true для добавления шума к измерениям датчика. В противном случае измерения не имеют шума.

Пример: false

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

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

Пример: false

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

Использование

Описание

ptCloud = lidar(tgts,simTime) создает объект-облако точек лидара ptCloud из указанного целевого объекта, tgts, в указанное время моделирования simTime.

[ptCloud,isValidTime] = lidar(tgts,simTime) дополнительно возвращает isValidTime который указывает, указано ли simTime кратно интервалу обновления датчика (1/UpdateRate).

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

развернуть все

Данные целевого объекта, указанные как структура или массив структуры. Каждая структура соответствует сетке. В таблице показаны свойства, используемые объектом для создания обнаружений.

Данные целевого объекта

ОбластьОписание
MeshОдин extendedObjectMesh объект, представляющий геометрию целевого объекта в его собственной координатной рамке.
PositionТрехэлементный вектор, определяющий координатное положение цели относительно кадра датчика.
OrientationA quaternion объект или матрица 3 на 3, содержащая углы Эйлера, определяющие ориентацию цели относительно кадра датчика.

Текущее время моделирования, указанное как положительный действительный скаляр. lidar объект вызывает генератор лидарного облака точек с регулярными интервалами для создания новых облаков точек с частотой, определенной updateRate собственность. Значение UpdateRate свойство должно быть целым числом, кратным интервалу времени моделирования. Обновления, запрошенные от датчика между интервалами обновления, не создают облако точек. Единицы измерения в секундах.

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

развернуть все

Данные облака точек, возвращенные как pointCloud объект.

Допустимое время создания облака точек, возвращенное как логическое 0 (false) или 1 (false). isValidTime является 0 когда запрошенное время обновления не кратно updateRate значение свойства.

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

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

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

В этом примере показано, как использовать модель статистического лидарного сенсора для создания облаков точек из сетки.

Создание модели датчика

Создание статистической модели датчика, lidar, с использованием uavLidarPointCloudGenerator Системный объект.

lidar = uavLidarPointCloudGenerator('HasOrganizedOutput',false);

Создать перекрытие

Используйте extendedObjectMesh для создания сетки для целевого объекта.

tgts.Mesh = scale(extendedObjectMesh('cuboid'),[100 100 2]); 

Определите положение целевого объекта относительно рамки датчика.

tgts.Position = [0 0 -10];

Определите ориентацию цели относительно рамки датчика.

 tgts.Orientation = quaternion([1 0 0 0]);

Создание облаков точек из пола

 ptCloud = lidar(tgts,0); 

Визуализировать

Используйте translate для перемещения сетки объекта в указанное местоположение и использования show функция визуализации. Используйте scatter3 функция для построения графиков точечных облаков, хранящихся в ptCloud.

figure
show(translate(tgts.Mesh,tgts.Position));
hold on
scatter3(ptCloud.Location(:,1),ptCloud.Location(:,2), ...
       ptCloud.Location(:,3));

Figure contains an axes. The axes contains 2 objects of type patch, scatter.

Представлен в R2020b