exponenta event banner

monostaticLidarSensor

Моделирование и моделирование генератора облака лидарных точек

Описание

monostaticLidarSensor Система object™ формирует точечные обнаружения облаков целей моностатическим лидарным датчиком. Вы можете использовать monostaticLidarSensor объект в сценарии, содержащем движущиеся и стационарные платформы, такие как созданная с помощью trackingScenario. monostaticLidarSensor объект генерирует облака точек из платформ с определенными сетками (с помощью Mesh свойство). 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, для платформы датчика. Информация ИНС используется алгоритмами сопровождения и слияния для оценки положения цели в кадре сценария.

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

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

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

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

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

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

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

Поза платформы из оценки ИНС, указанная как структура. Информация 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-by-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 цели.

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

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

release(obj)

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

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

Примеры

свернуть все

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

scenario = trackingScenario;

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

Определите геометрическую сетку цели. Размер сетки корректируется после задания целевых размеров.

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

Визуализируйте сетку цели.

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');

Получение сетки цели, просматриваемой с эго-платформы, после продвижения сценария на один шаг вперед.

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

Созданный датчик используется для создания облаков точек из полученной целевой сетки.

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