Сгенерируйте обнаружения видения для ведущего сценария
visionDetectionGenerator
Система object™ генерирует обнаружения от монокулярного датчика камеры, смонтированного на автомобиле, оборудованном датчиком. На все обнаружения ссылаются к системе координат автомобиля, оборудованного датчиком или смонтированного транспортным средством датчика. Можно использовать visionDetectionGenerator
объект в сценарии, содержащем агентов и траектории, которые можно создать при помощи drivingScenario
объект. Используя статистический режим, генератор может симулировать действительные обнаружения с добавленным случайным шумом и также сгенерировать ложные сигнальные обнаружения. Кроме того, можно использовать visionDetectionGenerator
объект создать вход к multiObjectTracker
. При создании сценариев с помощью приложения Driving Scenario Designer датчики камеры, смонтированные на автомобиле, оборудованном датчиком, выводятся как visionDetectionGenerator
объекты.
Сгенерировать визуальные обнаружения:
Создайте visionDetectionGenerator
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?
создает объект генератора обнаружения видения со значениями свойств по умолчанию.sensor
= visionDetectionGenerator
создает объект генератора обнаружения видения с помощью sensor
= visionDetectionGenerator(cameraConfig
)monoCamera
объект настройки, cameraConfig
.
свойства наборов с помощью одной или нескольких пар "имя-значение". Например, sensor
= visionDetectionGenerator(Name,Value
)visionDetectionGenerator('DetectionCoordinates','Sensor Cartesian','MaxRange',200)
создает генератор обнаружения видения, который сообщает об обнаружениях в Декартовой системе координат датчика и имеет максимальную область значений обнаружения 200 метров. Заключите каждое имя свойства в кавычки.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.
DetectorOutput
— Типы обнаружений сгенерированы датчиком'Objects only'
(значение по умолчанию) | 'Lanes only'
| 'Lanes with occlusion'
| 'Lanes and objects'
Типы обнаружений сгенерированы датчиком в виде 'Objects only'
, 'Lanes only'
, 'Lanes with occlusion'
, или 'Lanes and objects'
.
Когда установлено в 'Objects only'
, только агенты обнаруживаются.
Когда установлено в 'Lanes only'
, только маршруты обнаруживаются.
Когда установлено в 'Lanes with occlusion'
, только маршруты обнаруживаются, но агенты в поле зрения камеры могут повредить способность к датчику обнаружить маршруты.
Когда установлено в 'Lanes and objects'
, датчик генерирует оба обнаружения объектов и закрытые обнаружения маршрута.
Пример: 'Lanes with occlusion'
Типы данных: char |
string
SensorIndex
— Уникальный идентификатор датчикаУникальный идентификатор датчика в виде положительного целого числа. Это свойство отличает обнаружения, которые прибывают из различных датчиков в системе мультидатчика.
Пример 5
Типы данных: double
UpdateInterval
— Необходимый временной интервал между обновлениями датчика
| положительный действительный скалярНеобходимый временной интервал между датчиком обновляется в виде положительного действительного скаляра. drivingScenario
вызовы объектов генератор обнаружения видения в интервалах постоянного времени. Детектор видения генерирует новые обнаружения, с промежутками заданные UpdateInterval
свойство. Значение UpdateInterval
свойство должно быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не содержат обнаружений. Величина в секундах.
Пример 5
Типы данных: double
SensorLocation
— Местоположение датчика
| [x y]
векторМестоположение датчика видения сосредотачивается в виде [x y]
. SensorLocation
и Height
свойства задают координаты датчика видения относительно системы координат автомобиля, оборудованного датчиком. Значение по умолчанию соответствует датчику по ходу движения, смонтированному на инструментальной панели транспортного средства. Величины в метрах.
Пример: [4 0.1]
Типы данных: double
Height
— Высота датчика наземная плоскость
| положительный действительный скалярВысота датчика выше транспортного средства основывает плоскость в виде положительного действительного скаляра. Значение по умолчанию соответствует датчику видения по ходу движения, смонтированному на инструментальной панели седана. Величины в метрах.
Пример: 1.5
Типы данных: double
Yaw
— Угол рыскания датчика видения
| действительный скалярУгол рыскания датчика видения в виде действительного скаляра. Угол рыскания является углом между центральной линией автомобиля, оборудованного датчиком и осью вниз-области-значений датчика видения. Положительный угол рыскания соответствует по часовой стрелке вращение при взгляде в положительном направлении z - ось системы координат автомобиля, оборудованного датчиком. Модули в градусах.
Пример 4
Типы данных: double
Pitch
— Передайте угол датчика видения
| действительный скалярПередайте угол датчика видения в виде действительного скаляра. Угол тангажа является углом между осью вниз-области-значений датчика видения и плоскостью x-y системы координат автомобиля, оборудованного датчиком. Положительный угол тангажа соответствует по часовой стрелке вращение при взгляде в положительном направлении y - ось системы координат автомобиля, оборудованного датчиком. Модули в градусах.
Пример 3
Типы данных: double
Roll
— Крен датчика видения
| действительный скалярКрен датчика видения в виде действительного скаляра. Крен является углом вращения оси вниз-области-значений датчика видения вокруг x - ось системы координат автомобиля, оборудованного датчиком. Положительный крен соответствует по часовой стрелке вращение при взгляде в положительном направлении x - ось системы координат. Модули в градусах.
Пример 4
Типы данных: double
Intrinsics
— Внутренние калибровочные параметры датчика виденияcameraIntrinsics([800 800],[320 240],[480 640])
(значение по умолчанию) | cameraIntrinsics
объектВнутренние калибровочные параметры датчика видения в виде cameraIntrinsics
объект.
FieldOfView
— Угловое поле зрения датчика виденияЭто свойство доступно только для чтения.
Угловое поле зрения датчика видения в виде вектора 1 на 2 с действительным знаком положительных значений, [azfov,elfov]
. Поле зрения задает азимут и степени вертикального изменения изображения датчика. Каждый компонент должен лечь в интервале от 0 градусов до 180 градусов. Поле зрения выведено из внутренних параметров датчика видения. Цели за пределами углового поля зрения датчика не обнаруживаются. Модули в градусах.
Типы данных: double
MaxRange
— Максимальная область значений обнаружения
| положительный действительный скалярМаксимальная область значений обнаружения в виде положительного действительного скаляра. Датчик не может обнаружить цель вне этой области значений. Величины в метрах.
Пример: 200
Типы данных: double
MaxSpeed
— Максимальная обнаруживаемая объектная скорость
(значение по умолчанию) | неотрицательный действительный скалярМаксимальная обнаруживаемая объектная скорость в виде неотрицательного действительного скаляра. Модули исчисляются в метрах в секунду.
Пример: 10.0
Типы данных: double
MaxAllowedOcclusion
— Максимальное позволенное поглощение газов объекта
(значение по умолчанию) | действительный скаляр в области значений (0 1]Максимальное позволенное поглощение газов объекта в виде действительного скаляра в области значений [0 1]. Поглощение газов является частью общей площади поверхности объекта, не видимого к датчику. Значение каждый указывает, что объект полностью закрывается. Модули являются безразмерными.
Пример: 0.2
Типы данных: double
DetectionProbability
— Вероятность обнаружения
(значение по умолчанию) | положительный действительный скаляр, меньше чем или равный 1Вероятность обнаружения цели в виде положительного действительного скаляра, меньше чем или равного 1. Это количество задает вероятность, что датчик обнаруживает обнаруживаемый объект. detectable object является объектом, который удовлетворяет минимальному обнаруживаемому размеру, максимальной области значений, максимальной скорости и максимальным позволенным ограничениям поглощения газов.
Пример: 0.95
Типы данных: double
FalsePositivesPerImage
— Количество ложных обнаружений на изображение
(значение по умолчанию) | неотрицательный действительный скалярКоличество ложных обнаружений, которые датчик видения генерирует для каждого изображения в виде неотрицательного действительного скаляра.
Пример 2
Типы данных: double
MinObjectImageSize
— Минимальный размер изображения обнаруживаемого объекта
(значение по умолчанию) | вектор 1 на 2 положительных значенийМинимальная высота и ширина объекта, который датчик видения обнаруживает в изображении в виде [minHeight,minWidth]
вектор из положительных значений. 2D спроектированная высота объекта должна быть больше или быть равна minHeight
. Спроектированная ширина объекта должна быть больше или быть равна minWidth
. Модули находятся в пикселях.
Пример: [30 20]
Типы данных: double
BoundingBoxAccuracy
— Точность ограничительной рамки
(значение по умолчанию) | положительный действительный скалярТочность ограничительной рамки в виде положительного действительного скаляра. Это количество задает точность, которой детектор может совпадать с ограничительной рамкой к цели. Модули находятся в пикселях.
Пример 4
Типы данных: double
ProcessNoiseIntensity
— Шумовая интенсивность используется для фильтрации скоростные измерения и положение
(значение по умолчанию) | положительный действительный скалярШумовая интенсивность используется для фильтрации положения и скоростных измерений в виде положительного действительного скаляра. Шумовая интенсивность задает стандартное отклонение шума процесса внутреннего Фильтра Калмана постоянной скорости, используемого в датчике видения. Фильтр моделирует шум процесса использование кусочно-постоянной ускоряющей модели белого шума. Шумовая интенсивность обычно имеет порядок максимальной ускоряющей величины, ожидаемой для цели. Модули находятся в m/s2.
Пример: 2.5
Типы данных: double
HasNoise
— Позвольте добавить шум в измерения датчика виденияtrue
(значение по умолчанию) | false
Позвольте добавить шум в измерения датчика видения в виде true
или false
. Установите это свойство на true
добавить шум в измерения датчика. В противном случае измерения не имеют никакого шума. Даже если вы устанавливаете HasNoise
к false
, объект все еще вычисляет MeasurementNoise
свойство каждого обнаружения.
Типы данных: логический
MaxNumDetectionsSource
— Источник максимального количества обнаружений, о которых сообщают'Auto'
(значение по умолчанию) | 'Property'
Источник максимального количества обнаружений, о которых сообщает датчик в виде 'Auto'
или 'Property'
. Когда это свойство установлено в 'Auto'
, датчик сообщает обо всех обнаружениях. Когда это свойство установлено в 'Property'
, датчик сообщает не больше, чем о количестве обнаружений, заданных MaxNumDetections
свойство.
Типы данных: char |
string
MaxNumDetections
— Максимальное количество обнаружений, о которых сообщают,
(значение по умолчанию) | положительное целое числоМаксимальное количество обнаружений, о которых сообщает датчик в виде положительного целого числа. Об обнаружениях, самых близких к датчику, сообщают.
Чтобы включить это свойство, установите MaxNumDetectionsSource
свойство к 'Property'
.
Типы данных: double
DetectionCoordinates
— Система координат обнаружений, о которых сообщают,'Ego Cartesian'
(значение по умолчанию) | 'Sensor Cartesian'
Система координат обнаружений, о которых сообщают, в виде одного из этих значений:
'Ego Cartesian'
— Об обнаружениях сообщают в Декартовой системе координат автомобиля, оборудованного датчиком.
'Sensor Cartesian'
— Об обнаружениях сообщают в Декартовой системе координат датчика.
Типы данных: char |
string
LaneUpdateInterval
— Необходимый временной интервал между обновлениями обнаружения маршрута
(значение по умолчанию) | положительный действительный скалярНеобходимый временной интервал между обнаружением маршрута обновляется в виде положительного действительного скаляра. drivingScenario
вызовы объектов генератор обнаружения видения в интервалах постоянного времени. Детектор видения генерирует новые обнаружения маршрута, с промежутками заданные этим свойством, которое должно быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не содержат обнаружений маршрута. Величина в секундах.
Пример: 0.4
Типы данных: double
MinLaneImageSize
— Минимальный размер маршрута в изображении
(значение по умолчанию) | 1 2 вектор с действительным знакомМинимальный размер спроектированного маршрута, отмечающего, который может быть обнаружен датчиком после составления искривления в виде 1 2 вектора с действительным знаком, [minHeight minWidth]
. Маркировки маршрута должны превысить оба из этих значений, которые будут обнаружены. Это свойство используется только при обнаружении маршрутов. Модули находятся в пикселях.
Пример: [5,7]
Типы данных: double
LaneBoundaryAccuracy
— Точность контуров маршрута
| положительный действительный скалярТочность контуров маршрута в виде положительного действительного скаляра. Это свойство задает точность, с которой датчик маршрута может поместить контур маршрута. Модули находятся в пикселях. Это свойство используется только при обнаружении маршрутов.
MaxNumLanesSource
— Источник максимального количества маршрутов, о которых сообщают,'Property'
(значение по умолчанию) | 'Auto'
Источник максимального количества маршрутов, о которых сообщают, в виде 'Auto'
или 'Property'
. Когда задано как 'Auto'
, максимальное количество маршрутов вычисляется автоматически. Когда задано как 'Property'
, используйте MaxNumLanes
свойство определить максимальный номер или маршруты.
Типы данных: char |
string
MaxNumLanes
— Максимальное количество маршрутов, о которых сообщают,
(значение по умолчанию) | положительное целое числоМаксимальное количество маршрутов, о которых сообщают, в виде положительного целого числа.
Чтобы включить это свойство, установите MaxNumLanesSource
свойство к 'Property'
.
Типы данных: char |
string
ActorProfiles
— Профили агентаАгент профилирует в виде структуры или как массив структур. Каждая структура содержит физические характеристики и радарные характеристики агента.
Если ActorProfiles
одна структура, все агенты передали в visionDetectionGenerator
возразите используют этот профиль.
Если ActorProfiles
массив, каждый агент, переданный в объект, должен иметь уникальный профиль агента.
Чтобы сгенерировать массив структур для вашего ведущего сценария, используйте actorProfiles
функция. Таблица показывает допустимые поля структуры. Если вы не задаете поле, то поле установлено в свое значение по умолчанию. Если никакие агенты не передаются в объект, то ActorID
поле не включено.
Поле | Описание |
---|---|
ActorID | Заданный сценарием идентификатор агента в виде положительного целого числа. |
ClassID | Идентификатор классификации в виде неотрицательного целого числа. 0 резервируется для объекта неизвестного или неприсвоенного класса. |
Length | Длина агента в виде положительного действительного скаляра. Значением по умолчанию является 4.7 Величины в метрах. |
Width | Ширина агента в виде положительного действительного скаляра. Значением по умолчанию является 1.8 Величины в метрах. |
Height | Высота агента в виде положительного действительного скаляра. Значением по умолчанию является 1.4 Величины в метрах. |
OriginOffset | Смещение вращательного центра агента от его геометрического центра в виде [x
y
z] вектор с действительным знаком. Вращательный центр или источник, расположен в нижнем центре агента. Для транспортных средств вращательный центр является точкой на земле ниже центра задней оси. Значением по умолчанию является |
RCSPattern | Шаблон эффективной площади рассеивания агента в виде numel(RCSElevationAngles) - numel(RCSAzimuthAngles) матрица с действительным знаком. Значением по умолчанию является [10 10; 10 10] . Модули находятся в децибелах на квадратный метр. |
RCSAzimuthAngles | Углы азимута, соответствующие строкам RCSPattern В виде вектора из вещественных значений в области значений [–180, 180]. Значением по умолчанию является [-180 180] . Модули в градусах. |
RCSElevationAngles | Углы возвышения, соответствующие строкам RCSPattern В виде вектора из вещественных значений в области значений [–90, 90]. Значением по умолчанию является [-90 90] . Модули в градусах. |
Для полных определений полей структуры смотрите actor
и vehicle
функции.
создает визуальные обнаружения, dets
= sensor(actors
,time
)dets
, от измерений датчика, проведенных actors
при текущей симуляции time
. Объект может сгенерировать обнаружения датчика для нескольких агентов одновременно. Не включайте автомобиль, оборудованный датчиком как одного из агентов.
Чтобы включить этот синтаксис, установите DetectionOutput
к 'Objects only'
.
генерирует обнаружения маршрута, lanedets
= sensor(laneboundaries
,time
)lanedets
, от граничных структур маршрута, laneboundaries
.
Чтобы включить этот синтаксис устанавливает DetectionOutput
к 'Lanes only'
. Детектор маршрута генерирует контуры маршрута, с промежутками заданные LaneUpdateInterval
свойство.
генерирует обнаружения маршрута, lanedets
= sensor(actors
,laneboundaries
,time
)lanedets
, от граничных структур маршрута, laneboundaries
.
Чтобы включить этот синтаксис, установите DetectionOutput
к 'Lanes with occlusion'
. Детектор маршрута генерирует контуры маршрута, с промежутками заданные LaneUpdateInterval
свойство.
[___,
также возвращает количество допустимых обнаружений, о которых сообщают, numValidDets
]
= sensor(___)numValidDets
.
[___,
также возвращает логическое значение, numValidDets
isValidTime
]
= sensor(___)isValidTime
, указание, что UpdateInterval
время, чтобы сгенерировать обнаружения протекло.
[
возвращает оба обнаружения объектов, dets
,numValidDets
,isValidTime
,lanedets
,numValidLaneDets
,isValidLaneTime
] = sensor(actors
,laneboundaries
,time
)dets
, и обнаружения маршрута lanedets
. Этот синтаксис также возвращает количество допустимых обнаружений маршрута, о которых сообщают, numValidLaneDets
, и флаг, isValidLaneTime
, указание, протекло ли необходимое время симуляции, чтобы сгенерировать обнаружения маршрута.
Чтобы включить этот синтаксис, установите DetectionOutput
к 'Lanes and objects'
.
actors
— Положения агента сценарияАгент сценария позирует в виде структуры или массива структур. Каждая структура соответствует агенту. Можно сгенерировать эту структуру с помощью actorPoses
функция. Можно также создать эти структуры вручную. Таблица показывает поля что объектное использование, чтобы сгенерировать обнаружения. Все другие поля проигнорированы.
Поле | Описание |
---|---|
ActorID | Заданный сценарием идентификатор агента в виде положительного целого числа. |
Position | Положение агента в виде вектора с действительным знаком из формы [x y z]. Величины в метрах. |
Velocity | Скорость (v) агента в x - y - и z - направления в виде вектора с действительным знаком из формы [v x v y v z]. Модули исчисляются в метрах в секунду. |
Roll | Крен агента в виде скаляра с действительным знаком. Модули в градусах. |
Pitch | Передайте угол агента в виде скаляра с действительным знаком. Модули в градусах. |
Yaw | Угол рыскания агента в виде скаляра с действительным знаком. Модули в градусах. |
AngularVelocity | Скорость вращения (ω) агента в x - y - и z - направления в виде вектора с действительным знаком из формы [ω x ω y ω z]. Модули в градусах в секунду. |
Для полных определений полей структуры смотрите actor
и vehicle
функции.
Чтобы включить этот аргумент, установите DetectorOutput
свойство к 'Objects only'
, 'Lanes with occlusion'
, или 'Lanes and objects'
.
laneboundaries
— Контуры маршрутаКонтуры маршрута в виде массива граничных структур маршрута. Таблица показывает поля для каждой структуры.
Поле | Описание |
| Контур маршрута координирует в виде N с действительным знаком-by-3 матрицу, где N является количеством координат контура маршрута. Координаты контура маршрута задают положение точек на контуре на заданных продольных расстояниях далеко от автомобиля, оборудованного датчиком вдоль центра дороги.
Эта матрица также включает граничные координаты в нулевое расстояние от автомобиля, оборудованного датчиком. Эти координаты налево и право на источник автомобиля, оборудованного датчиком, который расположен под центром задней оси. Величины в метрах. |
| Искривление контура маршрута для каждой строки Coordinates матрица в виде N с действительным знаком-by-1 вектор. N является количеством координат контура маршрута. Модули исчисляются в радианах на метр. |
| Производная искривления контура маршрута для каждой строки Coordinates матрица в виде N с действительным знаком-by-1 вектор. N является количеством координат контура маршрута. Модули исчисляются в радианах на квадратный метр. |
| Начальный угол рыскания контура маршрута в виде действительного скаляра. Угол рыскания контура маршрута относительно заголовка автомобиля, оборудованного датчиком. Модули в градусах. |
| Боковое смещение положения автомобиля, оборудованного датчиком от контура маршрута в виде действительного скаляра. Смещение к контуру маршрута слева от автомобиля, оборудованного датчиком положительно. Смещение справа от автомобиля, оборудованного датчиком отрицательно. Величины в метрах. В этом изображении автомобиль, оборудованный датчиком возмещен в 1,5 метрах от левого маршрута и в 2,1 метрах от правильного маршрута. |
| Тип контура маршрута, отмечающего в виде одного из этих значений:
|
| Сила насыщения контура маршрута, отмечающего в виде действительного скаляра от 0 до 1. Значение |
| Ширина контура маршрута в виде положительного действительного скаляра. В маркере маршрута двойной линии та же ширина используется для обеих линий и для пробела между линиями. Величины в метрах. |
| Длина тире в пунктирных линиях в виде положительного действительного скаляра. В маркере маршрута двойной линии та же длина используется для обеих линий. |
| Продолжительность пробела между тире в пунктирных линиях в виде положительного действительного скаляра. В пунктирном маркере маршрута двойной линии то же пространство используется для обеих линий. |
Чтобы включить этот аргумент, установите DetectorOutput
свойство к 'Lanes only'
, 'Lanes with occlusion'
, или 'Lanes and objects'
.
Типы данных: struct
time
— Текущее время симуляцииТекущее время симуляции в виде положительного действительного скаляра. drivingScenario
вызовы объектов генератор обнаружения видения в интервалах постоянного времени. Детектор видения генерирует новые обнаружения, с промежутками заданные UpdateInterval
свойство. Значения UpdateInterval
и LanesUpdateInterval
свойства должны быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не содержат обнаружений. Величина в секундах.
Пример: 10.5
Типы данных: double
dets
— Обнаружения объектовobjectDetection
объектыОбнаружения объектов, возвращенные как массив ячеек objectDetection
объекты. Каждый объект содержит эти поля:
Свойство | Определение |
---|---|
Time | Время измерения |
Measurement | Объектные измерения |
MeasurementNoise | Ковариационная матрица шума измерения |
SensorIndex | Уникальный идентификатор датчика |
ObjectClassID | Предметная классификация |
ObjectAttributes | Дополнительная информация передала средству отслеживания |
MeasurementParameters | Параметры используются функциями инициализации нелинейного Кальмана, отслеживающего фильтры |
Measurement
, MeasurementNoise
, и MeasurementParameters
сообщаются в системе координат, заданной DetectionCoordinates
свойство visionDetectionGenerator
.
Измерение
DetectionCoordinates Свойство | Измерение и координаты шума измерения |
---|---|
'Ego Cartesian' | [x;y;z;vx;vy;vz] |
'Sensor Cartesian' |
MeasurementParameters
Параметр | Определение |
---|---|
Frame | Перечислимый тип, указывающий на систему координат раньше, сообщал об измерениях. Когда Frame установлен в 'rectangular' , об обнаружениях сообщают в Декартовых координатах. Когда Frame набор 'spherical' , об обнаружениях сообщают в сферических координатах. |
OriginPosition | 3-D векторное смещение источника датчика от источника автомобиля, оборудованного датчиком. Вектор выведен из SensorLocation и Height свойства заданы в visionDetectionGenerator . |
Orientation | Ориентация системы координат датчика видения относительно системы координат автомобиля, оборудованного датчиком. Ориентация выведена из Yaw Тангаж , и Roll свойства visionDetectionGenerator . |
HasVelocity | Указывает, содержат ли измерения скорость или компоненты уровня области значений. |
ObjectAttributes
Атрибут | Определение |
---|---|
TargetIndex | Идентификатор агента, ActorID , это сгенерировало обнаружение. Для ложных предупреждений это значение отрицательно. |
numValidDets
— Количество обнаруженийКоличество обнаружений, возвращенных, заданных как неотрицательное целое число.
Когда MaxNumDetectionsSource
свойство установлено в 'Auto'
, numValidDets
установлен в длину dets
.
Когда MaxNumDetectionsSource
установлен в 'Property'
, dets
массив ячеек с длиной, определенной MaxNumDetections
свойство. Не больше, чем MaxNumDetections
количество обнаружений возвращено. Если количество обнаружений - меньше, чем MaxNumDetections
, первый numValidDets
элементы dets
содержите допустимые обнаружения. Остающиеся элементы dets
установлены в значение по умолчанию.
.
Типы данных: double
isValidTime
— Допустимое время обнаружения
| 1
Допустимое время обнаружения, возвращенное как 0
или 1
. isValidTime
0
когда обновления обнаружения время от времени требуют, которые являются между интервалами обновления, заданными UpdateInterval
.
Типы данных: логический
lanedets
— Обнаружения контура маршрутаОбнаружения контура маршрута, возвращенные как структуры массива. Поля структуры:
Структура обнаружения контура маршрута
Поле | Описание |
Time | Время обнаружения маршрута |
SensorIndex | Уникальный идентификатор датчика |
LaneBoundaries | Массив clothoidLaneBoundary объекты. |
numValidLaneDets
— Количество обнаруженийКоличество обнаружений маршрута, возвращенных, заданных как неотрицательное целое число.
Когда MaxNumLanesSource
свойство установлено в 'Auto'
, numValidLaneDets
установлен в длину lanedets
.
Когда MaxNumLanesSource
установлен в 'Property'
, lanedets
массив ячеек с длиной, определенной MaxNumLanes
свойство. Не больше, чем MaxNumLanes
количество обнаружений маршрута возвращено. Если количество обнаружений - меньше, чем MaxNumLanes
, первый numValidLaneDetections
элементы lanedets
содержите допустимые обнаружения маршрута. Остающиеся элементы lanedets
установлены в значение по умолчанию.
.
Типы данных: double
isValidLaneTime
— Допустимое время обнаружения маршрута
| 1
Допустимое время обнаружения маршрута, возвращенное как 0
или 1
. isValidLaneTime
0
когда обновления обнаружения маршрута время от времени требуют, которые являются между интервалами обновления, заданными LaneUpdateInterval
.
Типы данных: логический
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
visionDetectionGenerator
isLocked | Определите, используется ли Системный объект |
Сгенерируйте обнаружения с помощью автомобильного датчика видения по ходу движения, смонтированного на автомобиле, оборудованном датчиком. Примите, что существует два целевых транспортных средства:
Транспортное средство 1 непосредственно перед автомобилем, оборудованным датчиком и перемещающийся на той же скорости.
Транспортное средство 2 транспортных средства управляет быстрее, чем автомобиль, оборудованный датчиком на 12 км/ч в левом маршруте.
Все положения, скорости и измерения относительно автомобиля, оборудованного датчиком. Запустите симуляцию для десяти шагов.
dt = 0.1; car1 = struct('ActorID',1,'Position',[100 0 0],'Velocity', [5*1000/3600 0 0]); car2 = struct('ActorID',2,'Position',[150 10 0],'Velocity',[12*1000/3600 0 0]);
Создайте автомобильный датчик видения, возмещающий местоположение от автомобиля, оборудованного датчиком. По умолчанию местоположение датчика в (3.4,0) метры от центра транспортного средства и 1,1 метра над землей плоскость.
sensor = visionDetectionGenerator('DetectionProbability',1, ... 'MinObjectImageSize',[5 5],'MaxRange',200,'DetectionCoordinates','Sensor Cartesian'); tracker = multiObjectTracker('FilterInitializationFcn',@initcvkf, ... 'ConfirmationParameters',[3 4],'NumCoastingUpdates',6);
Сгенерируйте визуальные обнаружения для агентов неэго, когда они перемещаются. Выходные обнаружения формируют массив ячеек. Извлеките только информацию о положении из обнаружений, чтобы передать multiObjectTracker
, который ожидает только информацию о положении. Затем обновите средство отслеживания для каждого нового набора обнаружений.
simTime = 0; nsteps = 10; for k = 1:nsteps dets = sensor([car1 car2],simTime); n = size(dets,1); for k = 1:n meas = dets{k}.Measurement(1:3); dets{k}.Measurement = meas; measmtx = dets{k}.MeasurementNoise(1:3,1:3); dets{k}.MeasurementNoise = measmtx; end [confirmedTracks,tentativeTracks,allTracks] = updateTracks(tracker,dets,simTime); simTime = simTime + dt; car1.Position = car1.Position + dt*car1.Velocity; car2.Position = car2.Position + dt*car2.Velocity; end
Используйте birdsEyePlot
создать вид сверху обнаружений. Постройте зону охвата датчика. Извлеките положения X и Y целей путем преобразования Measurement
поля ячейки в массив MATLAB®. Затем постройте обнаружения с помощью birdsEyePlot
функции.
BEplot = birdsEyePlot('XLim',[0 220],'YLim',[-75 75]); caPlotter = coverageAreaPlotter(BEplot,'DisplayName','Vision Coverage Area'); plotCoverageArea(caPlotter,sensor.SensorLocation,sensor.MaxRange, ... sensor.Yaw,sensor.FieldOfView(1)) detPlotter = detectionPlotter(BEplot,'DisplayName','Vision Detections'); detPos = cellfun(@(d)d.Measurement(1:2),dets,'UniformOutput',false); detPos = cell2mat(detPos')'; if ~isempty(detPos) plotDetection(detPlotter,detPos) end
Создайте датчик видения при помощи монокулярной настройки камеры и сгенерируйте обнаружения от того датчика.
Задайте внутренние параметры камеры и создайте monoCamera
объект от этих параметров. Камера смонтирована сверху автомобиля, оборудованного датчиком на высоте 1,5 метров над землей и тангаже 1 степени к земле.
focalLength = [800 800];
principalPoint = [320 240];
imageSize = [480 640];
intrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize);
height = 1.5;
pitch = 1;
monoCamConfig = monoCamera(intrinsics,height,'Pitch',pitch);
Создайте генератор обнаружения видения с помощью монокулярной настройки камеры.
visionSensor = visionDetectionGenerator(monoCamConfig);
Сгенерируйте ведущий сценарий с автомобилем, оборудованным датчиком и двумя целевыми автомобилями. Расположите первый целевой автомобиль 30 метров непосредственно перед автомобилем, оборудованным датчиком. Расположите второй целевой автомобиль 20 метров перед автомобилем, оборудованным датчиком, но возместите налево на 3 метра.
scenario = drivingScenario; egoVehicle = vehicle(scenario,'ClassID',1); targetCar1 = vehicle(scenario,'ClassID',1,'Position',[30 0 0]); targetCar2 = vehicle(scenario,'ClassID',1,'Position',[20 3 0]);
Используйте видимый с большого расстояния график отобразить основы транспортного средства и зону охвата датчика.
figure bep = birdsEyePlot('XLim',[0 50],'YLim',[-20 20]); olPlotter = outlinePlotter(bep); [position,yaw,length,width,originOffset,color] = targetOutlines(egoVehicle); plotOutline(olPlotter,position,yaw,length,width); caPlotter = coverageAreaPlotter(bep,'DisplayName','Coverage area','FaceColor','blue'); plotCoverageArea(caPlotter,visionSensor.SensorLocation,visionSensor.MaxRange, ... visionSensor.Yaw,visionSensor.FieldOfView(1))
Получите положения целевых автомобилей с точки зрения автомобиля, оборудованного датчиком. Используйте эти положения, чтобы сгенерировать обнаружения от датчика.
poses = targetPoses(egoVehicle); [dets,numValidDets] = visionSensor(poses,scenario.SimulationTime);
Отобразитесь (X, Y) положения допустимых обнаружений. Для каждого обнаружения, (X, Y) положения являются первыми двумя значениями Measurement
поле .
for i = 1:numValidDets XY = dets{i}.Measurement(1:2); detXY = sprintf('Detection %d: X = %.2f meters, Y = %.2f meters',i,XY); disp(detXY) end
Detection 1: X = 19.09 meters, Y = 2.79 meters Detection 2: X = 27.81 meters, Y = 0.08 meters
Создайте ведущий сценарий, содержащий автомобиль, оборудованный датчиком и целевое транспортное средство, перемещающееся вдоль трехполосной дороги. Обнаружьте контуры маршрута при помощи генератора обнаружения видения.
scenario = drivingScenario;
Создайте трехполосную дорогу при помощи технических требований маршрута.
roadCenters = [0 0 0; 60 0 0; 120 30 0];
lspc = lanespec(3);
road(scenario,roadCenters,'Lanes',lspc);
Укажите, что автомобиль, оборудованный датчиком следует за центральным маршрутом на уровне 30 м/с.
egovehicle = vehicle(scenario,'ClassID',1);
egopath = [1.5 0 0; 60 0 0; 111 25 0];
egospeed = 30;
smoothTrajectory(egovehicle,egopath,egospeed);
Укажите, что целевые перемещения транспортного средства перед автомобилем, оборудованным датчиком на уровне 40 м/с и перестраиваются на другую полосу близко к автомобилю, оборудованному датчиком.
targetcar = vehicle(scenario,'ClassID',1);
targetpath = [8 2; 60 -3.2; 120 33];
targetspeed = 40;
smoothTrajectory(targetcar,targetpath,targetspeed);
Отобразите график преследования для 3-D представления сценария из-за автомобиля, оборудованного датчиком.
chasePlot(egovehicle)
Создайте генератор обнаружения видения, который обнаруживает маршруты и объекты. Тангаж датчика указывает одну степень вниз.
visionSensor = visionDetectionGenerator('Pitch',1.0); visionSensor.DetectorOutput = 'Lanes and objects'; visionSensor.ActorProfiles = actorProfiles(scenario);
Запустите симуляцию.
Создайте видимый с большого расстояния график и связанные плоттеры.
Отобразите зону охвата датчика.
Отобразите маркировки маршрута.
Получите положения основной истины целей на дороге.
Получите идеальные граничные точки маршрута до 60 м вперед.
Сгенерируйте обнаружения от идеальных целевых положений и контуров маршрута.
Отобразите схему цели.
Обнаружения экранного объекта, когда обнаружение объектов допустимо.
Отобразите контур маршрута, когда обнаружение маршрута будет допустимо.
bep = birdsEyePlot('XLim',[0 60],'YLim',[-35 35]); caPlotter = coverageAreaPlotter(bep,'DisplayName','Coverage area', ... 'FaceColor','blue'); detPlotter = detectionPlotter(bep,'DisplayName','Object detections'); lmPlotter = laneMarkingPlotter(bep,'DisplayName','Lane markings'); lbPlotter = laneBoundaryPlotter(bep,'DisplayName', ... 'Lane boundary detections','Color','red'); olPlotter = outlinePlotter(bep); plotCoverageArea(caPlotter,visionSensor.SensorLocation,... visionSensor.MaxRange,visionSensor.Yaw, ... visionSensor.FieldOfView(1)); while advance(scenario) [lmv,lmf] = laneMarkingVertices(egovehicle); plotLaneMarking(lmPlotter,lmv,lmf) tgtpose = targetPoses(egovehicle); lookaheadDistance = 0:0.5:60; lb = laneBoundaries(egovehicle,'XDistance',lookaheadDistance,'LocationType','inner'); [obdets,nobdets,obValid,lb_dets,nlb_dets,lbValid] = ... visionSensor(tgtpose,lb,scenario.SimulationTime); [objposition,objyaw,objlength,objwidth,objoriginOffset,color] = targetOutlines(egovehicle); plotOutline(olPlotter,objposition,objyaw,objlength,objwidth, ... 'OriginOffset',objoriginOffset,'Color',color) if obValid detPos = cellfun(@(d)d.Measurement(1:2),obdets,'UniformOutput',false); detPos = vertcat(zeros(0,2),cell2mat(detPos')'); plotDetection(detPlotter,detPos) end if lbValid plotLaneBoundary(lbPlotter,vertcat(lb_dets.LaneBoundaries)) end end
Сгенерируйте обнаружения от идеального датчика видения и сравните эти обнаружения с единицами от шумного датчика. Идеальный датчик является тем, который всегда генерирует обнаружения без ложных положительных сторон и никакого добавленного случайного шума.
Создайте ведущий сценарий
Создайте ведущий сценарий, в который автомобиль, оборудованный датчиком расположен перед диагональным массивом целевых автомобилей. С этой настройкой можно позже построить ковариации шума измерения обнаруженных целей, не имея целевых автомобилей, закрывают друг друга.
scenario = drivingScenario; egoVehicle = vehicle(scenario,'ClassID',1); numTgts = 6; x = linspace(20,50,numTgts)'; y = linspace(-20,0,numTgts)'; x = [x;x(1:end-1)]; y = [y;-y(1:end-1)]; numTgts = numel(x); for m = 1:numTgts vehicle(scenario,'ClassID',1,'Position',[x(m) y(m) 0]); end
Постройте ведущий сценарий в видимом с большого расстояния графике.
bep = birdsEyePlot('XLim',[0 60]); legend('hide') olPlotter = outlinePlotter(bep); [position,yaw,length,width,originOffset,color] = targetOutlines(egoVehicle); plotOutline(olPlotter,position,yaw,length,width, ... 'OriginOffset',originOffset,'Color',color)
Создайте идеальный датчик видения
Создайте датчик видения при помощи visionDetectionGenerator
Система object™. Чтобы сгенерировать идеальные обнаружения, установите DetectionProbability
к 1
, FalsePositivesPerImage
к 0
, и HasNoise
к false
.
DetectionProbability = 1
— Датчик всегда генерирует обнаружения для цели, пока цель не закрывается и соответствует области значений, скорости и ограничениям размера изображения.
FalsePositivesPerImage = 0
— Датчик генерирует обнаружения только от действительных целей в ведущем сценарии.
HasNoise = false
— Датчик не добавляет случайный шум в положение, о котором сообщают, и скорость цели. Однако objectDetection
объектам, возвращенным датчиком, установили значения шума измерения на шумовое отклонение, которое было бы добавлено если HasNoise
был true
. С этими шумовыми значениями можно обработать идеальные обнаружения с помощью multiObjectTracker
. Этот метод полезен для анализа задержки маневра, не будучи должен запустить длительные симуляции Монте-Карло.
idealSensor = visionDetectionGenerator( ... 'SensorIndex',1, ... 'UpdateInterval',scenario.SampleTime, ... 'SensorLocation',[0.75*egoVehicle.Wheelbase 0], ... 'Height',1.1, ... 'Pitch',0, ... 'Intrinsics',cameraIntrinsics(800,[320 240],[480 640]), ... 'BoundingBoxAccuracy',50, ... % Make the noise large for illustrative purposes 'ProcessNoiseIntensity',5, ... 'MaxRange',60, ... 'DetectionProbability',1, ... 'FalsePositivesPerImage',0, ... 'HasNoise',false, ... 'ActorProfiles',actorProfiles(scenario))
idealSensor = visionDetectionGenerator with properties: SensorIndex: 1 UpdateInterval: 0.0100 SensorLocation: [2.1000 0] Height: 1.1000 Yaw: 0 Pitch: 0 Roll: 0 Intrinsics: [1x1 cameraIntrinsics] DetectorOutput: 'Objects only' FieldOfView: [43.6028 33.3985] MaxRange: 60 MaxSpeed: 100 MaxAllowedOcclusion: 0.5000 MinObjectImageSize: [15 15] DetectionProbability: 1 FalsePositivesPerImage: 0 Show all properties
Постройте зону охвата идеального датчика видения.
legend('show') caPlotter = coverageAreaPlotter(bep,'DisplayName','Coverage area','FaceColor','blue'); mountPosition = idealSensor.SensorLocation; range = idealSensor.MaxRange; orientation = idealSensor.Yaw; fieldOfView = idealSensor.FieldOfView(1); plotCoverageArea(caPlotter,mountPosition,range,orientation,fieldOfView);
Симулируйте идеальные обнаружения видения
Получите положения целей. Положения находятся в координатах автомобиля, оборудованного датчиком.
gTruth = targetPoses(egoVehicle);
Сгенерируйте обнаружения видения, к которым добавляют метку времени. Эти обнаружения возвращены как массив ячеек objectDetection
объекты.
time = scenario.SimulationTime; dets = idealSensor(gTruth,time);
Смотрите отклонение шума измерения и измерения первого (крайнего левого) обнаружения. Даже при том, что обнаружение идеально и поэтому не имеет никакого добавленного случайного шума, MeasurementNoise
свойство показывает значения, как будто обнаружение действительно имело шум.
dets{1}.Measurement
ans = 6×1
31.0000
-11.2237
0
0
0
0
dets{1}.MeasurementNoise
ans = 6×6
1.5427 -0.5958 0 0 0 0
-0.5958 0.2422 0 0 0 0
0 0 100.0000 0 0 0
0 0 0 0.5398 -0.1675 0
0 0 0 -0.1675 0.1741 0
0 0 0 0 0 100.0000
Постройте идеальные обнаружения и замещающие знаки для контура с 2 сигмами ковариации шума измерения.
pos = cell2mat(cellfun(@(d)d.Measurement(1:2)',dets, ... 'UniformOutput',false)); cov = reshape(cell2mat(cellfun(@(d)d.MeasurementNoise(1:2,1:2),dets, ... 'UniformOutput',false))',2,2,[]); plotter = trackPlotter(bep,'DisplayName','Ideal detections', ... 'MarkerEdgeColor','blue','MarkerFaceColor','blue'); sigma = 2; plotTrack(plotter,pos,sigma^2*cov)
Симулируйте шумные обнаружения для сравнения
Создайте шумный датчик на основе свойств идеального датчика.
noisySensor = clone(idealSensor); release(noisySensor) noisySensor.HasNoise = true;
Сбросьте ведущий сценарий назад к его исходному состоянию.
restart(scenario)
Соберите статистические данные от шумных обнаружений.
numMonte = 1e3; pos = []; for itr = 1:numMonte time = scenario.SimulationTime; dets = noisySensor(gTruth,time); % Save noisy measurements pos = [pos;cell2mat(cellfun(@(d)d.Measurement(1:2)',dets,'UniformOutput',false))]; advance(scenario); end
Постройте шумные обнаружения.
plotter = detectionPlotter(bep,'DisplayName','Noisy detections', ... 'Marker','.','MarkerEdgeColor','red','MarkerFaceColor','red'); plotDetection(plotter,pos)
Датчик видения моделирует монокулярную камеру, которая производит 2D изображения камеры. Чтобы спроектировать координаты этих 2D изображений в 3-D мировые координаты, используемые в ведущих сценариях, алгоритм датчика принимает, что z, позиционный (высота) всех точек изображений базового края ограничительной рамки цели изображений, лежит на земле. Плоскость, задающая землю, задана свойством высоты генератора обнаружения видения, который задает смещение монокулярной камеры над землей плоскость. С этой проекцией вертикальные местоположения объектов в произведенных изображениях строго коррелируются к их высотам выше дороги. Однако, если дорога не является плоской, и высоты объектов отличаются от высоты датчика, то датчик сообщает о неточных обнаружениях. Для примера, который показывает это поведение, смотрите Обнаружения Датчика Видения Модели.
Указания и ограничения по применению:
Для автономного развертывания, visionDetectionGenerator
Системный объект поддерживает только цели Simulink Real-Time™.
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
lidarPointCloudGenerator
| objectDetection
| drivingScenario
| laneMarking
| lanespec
| monoCamera
| multiObjectTracker
| drivingRadarDataGenerator
| insSensor
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.