monostaticLidarSensor

Моделируйте и моделируйте генератор облака точек лидара

Описание

The monostaticLidarSensor Система object™ генерирует обнаружения облака точек целей с помощью моностатического датчика лидара. Можно использовать monostaticLidarSensor объект в сценарии, содержащем движущиеся и стационарные платформы, такие как созданные с помощью trackingScenario. The monostaticLidarSensor объект генерирует облака точек от платформ с заданными сетками (используя Mesh свойство). The monostaticLidarSensor Системный объект моделирует идеальный генератор облака точек и не учитывает эффекты ложных предупреждений и пропущенных обнаружений.

Чтобы сгенерировать обнаружения облака точек с помощью имитированного датчика лидара:

  1. Создайте monostaticLidarSensor Объекту и установите его свойства.

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

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

Создание

Описание

пример

sensor = monostaticLidarSensor(SensorIndex) создает имитированный датчик лидара с заданным индексом датчика, SensorIndex. Используются значения свойств по умолчанию.

sensor = monostaticLidarSensor(SensorIndex,Name,Value) устанавливает свойства с помощью одной или нескольких пар "имя-значение". Заключайте каждое имя свойства в кавычки. Для примера, monostaticLidarSensor(1,'DetectionCoordinates','Sensor') создает моделируемый датчик лидара, который сообщает о обнаружениях в Декартовой системе координат датчика с индексом датчика, равным 1.

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Уникальный идентификатор датчика, заданный как положительное целое число. Это свойство отличает облака точек, сгенерированные различными датчиками в мультисенсорной системе. При создании monostaticLidarSensor системный объект, необходимо либо задать SensorIndex в качестве первого входного параметра в синтаксисе создания или укажите его как значение для SensorIndex свойство в синтаксисе создания.

Датчик частоты обновления, заданный как положительная скалярная величина в Гц. Интервал обновления (взаимный UpdateRate) должно быть целым числом, кратным временному интервалу симуляции, заданному в trackingScenario. Любое обновление, запрошенное к датчику между интервалами обновления, не содержит облаков точек.

Пример: 5

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

Расположение датчика на платформе, заданное как вектор с реальным значением 1 на 3. Это свойство определяет координаты датчика относительно источника платформы. Значение по умолчанию задает, что источник датчика находится на 1,5 метра вперед от источника платформы. Модули измерения указаны в метрах.

Пример: [.2 0.1 0]

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

Ориентация установки датчика на платформе, заданная как 3-элементный вектор скаляров в степенях. Каждый элемент вектора соответствует собственному повороту угла Эйлера, который несет оси тела платформы к осям датчика. Три элемента определяют повороты вокруг z -, y - и x - осей в этом порядке. Первое вращение вращает ось платформы вокруг оси z. Второе вращение вращает систему координат вокруг оси y вращения. Окончательное вращение поворачивает систему координат вокруг оси x.

Пример: [10 20 -15]

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

Максимальная область значений обнаружения, заданное как положительная скалярная величина в метрах.

Пример: 500

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

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

Пример: 0.1

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

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

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

Повышение разрешение датчика лидара, заданное как положительная скалярная величина в степени. Значение числа точек по азимутальному каналу равно пределам повышения, разделенным на разрешение повышения.

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

Пределы азимута датчика лидара, заданные как вектор скаляров в степенях 1 на 2 строки.

Пример: [-90 90]

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

Пределы повышения датчика лидара, заданные как вектор скаляров в степенях 1 на 2 строки.

Пример: [-90 90]

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

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

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

Включите организованные местоположения облака точек, заданные как true или false.

  • Когда это свойство установлено как trueвыход облака точек представляет собой N -by- M -by-3 массив скаляров, где N - количество каналов повышения, а M - количество азимутальных каналов.

  • Когда это свойство установлено как false, выход облака точек является матрицей P -by-3 скаляров, где P является продуктом чисел восходящего и азимутального каналов.

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

Включите необязательный входной параметр, который передает текущую оценку INS положения платформы датчика датчику, заданную как false или true. Когда trueинформация о положении добавляется к MeasurementParameters свойство строения, позволяющее алгоритмам отслеживания и слияния оценивать состояние целей в системе координат сценария. Это также позволяет сообщать местоположения облака точек в системе координат сценария.

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

Система координат, в которой сообщается о обнаружениях, задается как:

  • 'Sensor' - Обнаружения регистрируются в прямоугольной системе координат датчика.

  • 'Body' - Сообщения об обнаружениях поступают в прямоугольную систему тел платформы.

  • 'Scenario' - Обнаружения регистрируются в прямоугольной системе координат сценария. Чтобы включить это значение, установите HasINS свойство к true.

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

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

Описание

pointCloud = sensor(targetMeshes,time) возвращает измерения облака точек из 3-D геометрических сеток целей, tgtMeshes, в time симуляции.

pointCloud = sensor(targetMeshes,insPose,time) также задает оценочное положение INS, insPose, для сенсорной платформы. Информация INS используется алгоритмами отслеживания и слияния, чтобы оценить целевые положения в системе координат сценария.

Чтобы включить этот синтаксис, установите HasINS свойство к true.

[pointCloud,config] = sensor(___) также возвращает строение датчика, config, во время текущей симуляции. Можно использовать эти выходные аргументы с любым из предыдущих входных синтаксисов.

[pointCloud,config,clusters] = sensor(___) также возвращается clusters, истинные метки кластера для каждой точки в облаке точек.

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

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

Сетки целей, заданные как массив структур. Каждая структура должна содержать следующие поля.

Имя поляОписание
PlatformIDУникальный идентификатор цели, заданный как неотрицательное целое число.
ClassIDУникальный идентификатор класса целевого объекта, заданный как неотрицательное целое число.
ПоложениеПоложение цели относительно каркас кузова монтажной платформы датчика, заданное как 3-элементный вектор скаляров.
ОриентацияОриентация цели относительно каркас кузова монтажной платформы датчика, заданная как quaternion объект или матрица поворота.
MeshГеометрический mesh цели, заданная как extendedObjectMesh объект относительно каркаса кузова цели.

Положение платформы из оценки INS, заданное как структура. Информация INS может использоваться алгоритмами отслеживания и слияния, чтобы оценить положение и скорость платформы в системе координат сценария.

Информация о положении платформы от инерционной навигационной системы (INS) является структурой с этими полями:

ОбластьОпределение
Position

Положение в навигационной системе координат, заданное как реальный вектор 1 на 3. Модули измерения указаны в метрах.

Velocity

Скорость в навигационной системе координат, заданная как реальный вектор 1 на 3. Модули указаны в метрах в секунду.

Orientation

Ориентация относительно навигационной системы координат, заданная как quaternion или матрицу вращения 3 на 3 вещественных значений. Вращение происходит от навигационной системы координат до текущего каркаса кузова INS. Это также упоминается как вращение «родительский элемент к ребенку».

Зависимости

Чтобы включить этот аргумент, установите HasINS свойство к true.

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

Текущее время симуляции, заданное как положительная скалярная величина в секундах.

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

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

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

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

  • Когда свойство установлено как true, pointClouds возвращен N -by- M -by-3 массив скаляров, где N - количество каналов повышения, а M - количество азимутальных каналов.

  • Когда свойство установлено как false, pointClouds возвращается как P-на-3 матрица скаляров, где P является продуктом чисел восходящего и азимутального каналов.

Координатная система координат, в которой сообщаются местоположения облака точек, определяется DetectionCoordinates свойство.

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

ОбластьОписание
SensorIndex

Уникальный индекс датчика, возвращенный как положительное целое число.

IsValidTime

Допустимое время обнаружения, возвращаемое как true или false. IsValidTime является false при запросе обновлений обнаружения между интервалами обновления, заданными частотой обновления.

IsScanDone

IsScanDone является true когда датчик завершит скан.

FieldOfView

Поле зрения датчика, возвращаемое как матрица 2 на 2 положительных вещественных значений. Элементами первых строк являются нижний и верхний пределы азимута; элементы второй строки являются нижним и верхним пределами по повышению.

MeasurementParameters

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

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

Метки кластеров точек в pointCloud выход, возвращается как массив неотрицательных целых чисел. Размерность массива определяется HasOrganizedOuput свойство.

  • Когда это свойство установлено как true, cluster возвращается как N -by M -by-2 массив скаляров, где N - количество каналов повышения, а M - количество азимутальных каналов. В третьей размерности первый элемент представляет PlatformID целевого объекта, генерирующего точку, а второй элемент представляет ClassID цели.

  • Когда это свойство установлено как false, pointClouds возвращается как P -by-2 матрица скаляров, где P является продуктом чисел восходящего и азимутального каналов. Для каждого столбца матрицы первый элемент представляет PlatformID целевого объекта, генерирующего точку, в то время как второй элемент представляет ClassID цели.

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

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

release(obj)

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

coverageConfigПокрытие датчика и излучателя строения
perturbПрименить возмущения к объекту
perturbationsВозмущение, заданное для объекта
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Создайте сценарий отслеживания. Добавьте ego-платформу и целевую платформу.

scenario = trackingScenario;

ego = platform(scenario);
target = platform(scenario,'Trajectory',kinematicTrajectory('Position',[10 -3 0],'Velocity',[5 0 0]));

Задайте геометрический mesh целевого объекта. Размер mesh корректируется после определения целевых размерностей.

target.Mesh = extendedObjectMesh('sphere');
target.Dimensions.Length = 5; 
target.Dimensions.Width = 3;
target.Dimensions.Height = 2;

Визуализируйте mesh целевого объекта.

show(target.Mesh)

Figure contains an axes. The axes contains an object of type patch.

ans = 
  Axes with properties:

             XLim: [-3 3]
             YLim: [-2 2]
           XScale: 'linear'
           YScale: 'linear'
    GridLineStyle: '-'
         Position: [0.1300 0.1100 0.7750 0.8150]
            Units: 'normalized'

  Show all properties

Создайте monostaticLidarSensor с заданными UpdateRate и DetectionCoordinates.

sensor = monostaticLidarSensor(1,'UpdateRate',10,'DetectionCoordinates','Body');

Получите mesh целевого объекта, просматриваемую с платформы ego, после продвижения сценария на шаг вперед.

advance(scenario);
tgtmeshes = targetMeshes(ego);

Используйте созданный датчик, чтобы сгенерировать облака точек из полученного целевого mesh.

time = scenario.SimulationTime;
[ptCloud, config, clusters] = sensor(tgtmeshes, time);

Визуализация обнаружений облака точек.

figure()
plot3(ptCloud(:,1),ptCloud(:,2),ptCloud(:,3),'o')

Figure contains an axes. The axes contains an object of type line.

Введенный в R2020b