Создание визуальных обнаружений для сценария вождения
visionDetectionGenerator Система object™ генерирует сигналы обнаружения от датчика монокулярной камеры, установленного на эго-транспортном средстве. Все обнаружения относятся к системе координат эго-транспортного средства или установленного на транспортном средстве датчика. Вы можете использовать visionDetectionGenerator объект в сценарии, содержащем актеры и траектории, которые можно создать с помощью drivingScenario объект. Используя статистический режим, генератор может моделировать реальные обнаружения с добавлением случайного шума, а также генерировать ложные аварийные обнаружения. Кроме того, можно использовать visionDetectionGenerator объект для создания входных данных в multiObjectTracker. При построении сценариев с помощью приложения Driving Script 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 - Требуемый интервал времени между обновлениями датчиков0.1 | положительный действительный скалярТребуемый интервал времени между обновлениями датчика, указанный как положительный действительный скаляр. drivingScenario объект вызывает генератор обнаружения видения через регулярные интервалы времени. Детектор технического зрения генерирует новые сигналы обнаружения с интервалами, определенными UpdateInterval собственность. Значение UpdateInterval свойство должно быть целым числом, кратным интервалу времени моделирования. Обновления, запрошенные от датчика между интервалами обновления, не содержат обнаружений. Единицы измерения в секундах.
Пример: 5
Типы данных: double
SensorLocation - Расположение датчика[3.4 0] | [x y] векторРасположение центра датчиков зрения, указанного как [x y]. SensorLocation и Height свойства определяют координаты датчика зрения относительно системы координат эго-транспортного средства. Значение по умолчанию соответствует ориентированному вперед датчику, установленному на приборной панели транспортного средства. Единицы в метрах.
Пример: [4 0.1]
Типы данных: double
Height - Высота датчика над плоскостью земли1.1 | положительный действительный скалярВысота датчика над плоскостью грунта транспортного средства, заданная как положительный реальный скаляр. Значение по умолчанию соответствует ориентированному вперед датчику зрения, установленному на приборной панели седана. Единицы в метрах.
Пример: 1.5
Типы данных: double
Yaw - Угол рыскания датчика зрения0 | вещественный скалярУгол рыскания датчика зрения, заданный как реальный скаляр. Угол рыскания - это угол между центральной линией эго-транспортного средства и осью вниз датчика зрения. Положительный угол рыскания соответствует повороту по часовой стрелке при взгляде в положительном направлении оси z системы координат эго-транспортного средства. Единицы измерения в градусах.
Пример: -4
Типы данных: double
Pitch - Угол тангажа датчика обзора0 | вещественный скалярУгол тангажа датчика зрения, определяемый как реальный скаляр. Угол наклона - это угол между осью нижнего диапазона датчика зрения и плоскостью x-y системы координат эго-транспортного средства. Положительный угол наклона соответствует повороту по часовой стрелке при взгляде в положительном направлении оси y системы координат эго-транспортного средства. Единицы измерения в градусах.
Пример: 3
Типы данных: double
Roll - Угол крена датчика обзора0 | вещественный скалярУгол крена датчика зрения, заданный как реальный скаляр. Угол крена - это угол поворота оси вниз датчика зрения вокруг оси x системы координат эго-транспортного средства. Положительный угол крена соответствует повороту по часовой стрелке при взгляде в положительном направлении оси X системы координат. Единицы измерения в градусах.
Пример: -4
Типы данных: double
Intrinsics - Искробезопасные калибровочные параметры датчика зренияcameraIntrinsics([800 800],[320 240],[480 640])
(по умолчанию) | cameraIntrinsics объектВнутренние калибровочные параметры датчика зрения, указанные как cameraIntrinsics объект.
FieldOfView - Угловое поле зрения датчика зренияЭто свойство доступно только для чтения.
Угловое поле зрения датчика зрения, определяемое как действительный вектор 1 на 2 положительных значений, [azfov,elfov]. Поле зрения определяет границы азимута и отметки изображения датчика. Каждый компонент должен находиться в интервале от 0 до 180 градусов. Поле зрения определяется внутренними параметрами датчика зрения. Цели вне углового поля зрения датчика не обнаружены. Единицы измерения в градусах.
Типы данных: double
MaxRange - Максимальный диапазон обнаружения150 | положительный действительный скалярМаксимальный диапазон обнаружения, заданный как положительный действительный скаляр. Датчик не может обнаружить цель за пределами этого диапазона. Единицы в метрах.
Пример: 200
Типы данных: double
MaxSpeed - Максимальная скорость обнаруживаемого объекта100 (по умолчанию) | неотрицательный вещественный скалярМаксимальная скорость обнаруживаемого объекта, заданная как неотрицательный действительный скаляр. Единицы измерения в метрах в секунду.
Пример: 10.0
Типы данных: double
MaxAllowedOcclusion - Максимально допустимая окклюзия объекта0.5 (по умолчанию) | вещественный скаляр в диапазоне (0 1]Максимально допустимая окклюзия объекта, заданная как действительный скаляр в диапазоне [0 1]. Окклюзия - это доля общей площади поверхности объекта, не видимого датчиком. Значение 1 указывает на то, что объект полностью закрыт. Единицы измерения безразмерны.
Пример: 0.2
Типы данных: double
DetectionProbability - Вероятность обнаружения0.9 (по умолчанию) | положительный действительный скаляр, меньший или равный 1Вероятность обнаружения цели, заданная как положительный действительный скаляр, меньший или равный 1. Эта величина определяет вероятность того, что датчик обнаружит обнаруживаемый объект. Обнаруживаемый объект - это объект, удовлетворяющий минимальным обнаруживаемым размерам, максимальному диапазону, максимальной скорости и максимально допустимым ограничениям окклюзии.
Пример: 0.95
Типы данных: double
FalsePositivesPerImage - Количество ложных обнаружений на изображение0.1 (по умолчанию) | неотрицательный вещественный скалярКоличество ложных обнаружений, генерируемых датчиком зрения для каждого изображения, заданного как неотрицательный действительный скаляр.
Пример: 2
Типы данных: double
MinObjectImageSize - Минимальный размер изображения обнаруживаемого объекта[15 15] (по умолчанию) | вектор 1 на 2 положительных значенийМинимальная высота и ширина объекта, обнаруженного датчиком зрения в изображении, заданная как [minHeight,minWidth] вектор положительных значений. 2-D спроецированная высота объекта должна быть больше или равна minHeight. Спроецированная ширина объекта должна быть больше или равна minWidth. Единицы измерения выражены в пикселях.
Пример: [30 20]
Типы данных: double
BoundingBoxAccuracy - Точность ограничивающей рамки5 (по умолчанию) | положительный вещественный скалярТочность ограничивающей рамки, заданная как положительный действительный скаляр. Эта величина определяет точность, с которой детектор может сопоставить ограничительную рамку с целью. Единицы измерения выражены в пикселях.
Пример: 4
Типы данных: double
ProcessNoiseIntensity - Интенсивность шума, используемого для измерения положения и скорости фильтрации5 (по умолчанию) | положительный вещественный скалярИнтенсивность шума, используемая для измерения положения и скорости фильтрации, заданная как положительный действительный скаляр. Интенсивность шума определяет стандартное отклонение технологического шума внутреннего фильтра Калмана с постоянной скоростью, используемого в датчике зрения. Фильтр моделирует технологический шум с использованием кусочно-постоянной модели ускорения белого шума. Интенсивность шума обычно составляет порядок максимальной величины ускорения, ожидаемой для цели. Единицы измерения в м/с2.
Пример: 2.5
Типы данных: double
HasNoise - Возможность добавления шума к измерениям датчиков зренияtrue (по умолчанию) | falseВключить добавление шума к измерениям датчиков зрения, указанных как true или false. Установить для этого свойства значение true для добавления шума к измерениям датчика. В противном случае измерения не имеют шума. Даже если установить HasNoise кому false, объект все еще вычисляет MeasurementNoise свойство каждого обнаружения.
Типы данных: logical
MaxNumDetectionsSource - Источник максимального количества обнаруженных обнаружений'Auto' (по умолчанию) | 'Property'Источник максимального количества обнаружений, сообщаемых датчиком, указанный как 'Auto' или 'Property'. Если для этого свойства установлено значение 'Auto', датчик сообщает обо всех обнаружениях. Если для этого свойства установлено значение 'Property', датчик сообщает не более количества обнаружений, указанных MaxNumDetections собственность.
Типы данных: char | string
MaxNumDetections - Максимальное количество зарегистрированных обнаружений50 (по умолчанию) | положительное целое числоМаксимальное число обнаружений, указанное датчиком как положительное целое число. Сообщается об обнаружениях, ближайших к датчику.
Чтобы включить это свойство, установите значение MaxNumDetectionsSource свойство для 'Property'.
Типы данных: double
DetectionCoordinates - Система координат сообщаемых обнаружений'Ego Cartesian' (по умолчанию) | 'Sensor Cartesian'Система координат сообщаемых обнаружений, заданная как одно из следующих значений:
'Ego Cartesian' - Обнаружение регистрируется в декартовой системе координат эго-транспортного средства.
'Sensor Cartesian' - Обнаружение сообщается в декартовой системе координат датчика.
Типы данных: char | string
LaneUpdateInterval - Требуемый интервал времени между обновлениями обнаружения полосы движения0.1 (по умолчанию) | положительный вещественный скалярТребуемый интервал времени между обновлениями обнаружения полосы движения, указанный как положительный действительный скаляр. drivingScenario объект вызывает генератор обнаружения видения через регулярные интервалы времени. Детектор зрения генерирует новые детекторы полосы с интервалами, определенными этим свойством, которые должны быть кратны целому интервалу времени моделирования. Обновления, запрошенные от датчика между интервалами обновления, не содержат обнаруженных дорожек. Единицы измерения в секундах.
Пример: 0.4
Типы данных: double
MinLaneImageSize - Минимальный размер полосы движения в изображении[20 5] (по умолчанию) | 1 на 2 действительный векторМинимальный размер проецируемой разметки полосы движения, которая может быть обнаружена датчиком после учета кривизны, определяемой как действительный вектор 1 на 2, [minHeight minWidth]. Для обнаружения разметка полосы движения должна превышать оба этих значения. Это свойство используется только при обнаружении полос. Единицы измерения выражены в пикселях.
Пример: [5,7]
Типы данных: double
LaneBoundaryAccuracy - Точность границ полос движения3 | положительный действительный скалярТочность границ полосы движения, заданная как положительный действительный скаляр. Это свойство определяет точность, с которой датчик полосы может размещать границу полосы. Единицы измерения выражены в пикселях. Это свойство используется только при обнаружении полос.
MaxNumLanesSource - Источник максимального количества сообщаемых полос'Property' (по умолчанию) | 'Auto'Источник максимального количества сообщаемых полос, указанный как 'Auto' или 'Property'. Если указано как 'Auto'максимальное количество полос вычисляется автоматически. Если указано как 'Property', используйте MaxNumLanes для установки максимального количества или полос движения.
Типы данных: char | string
MaxNumLanes - Максимальное количество сообщаемых полос движения30 (по умолчанию) | положительное целое числоМаксимальное количество полос, указанных как положительное целое число.
Чтобы включить это свойство, установите значение 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.
[___, также возвращает логическое значение, numValidDetsisValidTime] = 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, заданная как действительный вектор вида [vx vy vz]. Единицы измерения в метрах в секунду. |
Roll | Угол крена актера, заданный как действительный скаляр. Единицы измерения в градусах. |
Pitch | Угол тангажа актера, определяемый как действительный скаляр. Единицы измерения в градусах. |
Yaw | Угол рыскания актера, определяемый как действительный скаляр. Единицы измерения в градусах. |
AngularVelocity | Угловая скорость (λ) актера в направлениях x -, y - и z, заданная как действительный вектор вида [startx starty ü 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 - число граничных координат полосы движения. Единицы измерения в радианах на квадратный метр. |
| Начальный угол курса границы полосы движения, заданный как действительный скаляр. Угол курса границы полосы движения относительно курса эго-транспортного средства. Единицы измерения в градусах. |
| Расстояние границы полосы движения от положения эго-транспортного средства, определяемое как действительный скаляр. Смещение к границе полосы слева от эго-транспортного средства является положительным. Смещение справа от эго-транспортного средства является отрицательным. Единицы в метрах. |
| Тип разметки границ полосы движения, указанный как одно из следующих значений:
|
| Сила насыщения разметки границы полосы движения, заданная как действительный скаляр от 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, Pitch, и Roll свойства visionDetectionGenerator. |
HasVelocity | Указывает, содержат ли измерения компоненты скорости или скорости диапазона. |
ObjectAttributes
| Признак | Определение |
|---|---|
TargetIndex | Идентификатор актера, ActorID, что сгенерировало обнаружение. Для ложных аварийных сигналов это значение является отрицательным. |
numValidDets - Количество обнаруженийКоличество возвращенных обнаружений, определенных как неотрицательное целое число.
Когда MaxNumDetectionsSource свойство имеет значение 'Auto', numValidDets устанавливается в длину dets.
Когда MaxNumDetectionsSource имеет значение 'Property', dets - массив ячеек с длиной, определяемой MaxNumDetections собственность. Не более MaxNumDetections возвращается количество обнаружений. Если число обнаружений меньше MaxNumDetections, первый numValidDets элементы dets задержать допустимые обнаружения. Остальные элементы dets имеют значение по умолчанию.
.
Типы данных: double
isValidTime - Допустимое время обнаружения0 | 1Допустимое время обнаружения, возвращено как 0 или 1. isValidTime является 0 когда обновления обнаружения запрашиваются в моменты времени между интервалами обновления, указанными в UpdateInterval.
Типы данных: logical
lanedets - Обнаружение границ полосы движенияОбнаружение границ полосы движения, возвращаемое в виде структуры массива. Поля структуры:
Структура обнаружения границ полосы движения
| Область | Описание |
Time | Время обнаружения полосы движения |
SensorIndex | Уникальный идентификатор датчика |
LaneBoundaries | Массив clothoidLaneBoundary объекты. |
numValidLaneDets - Количество обнаруженийКоличество возвращенных обнаружений полосы движения, определенное как неотрицательное целое число.
Когда MaxNumLanesSource свойство имеет значение 'Auto', numValidLaneDets устанавливается в длину lanedets.
Когда MaxNumLanesSource имеет значение 'Property', lanedets - массив ячеек с длиной, определяемой MaxNumLanes собственность. Не более MaxNumLanes возвращается количество обнаружений полосы движения. Если число обнаружений меньше MaxNumLanes, первый numValidLaneDetections элементы lanedets удержание допустимых обнаружений полосы движения. Остальные элементы lanedets имеют значение по умолчанию.
.
Типы данных: double
isValidLaneTime - Допустимое время обнаружения полосы движения0 | 1Допустимое время обнаружения полосы движения, возвращено как 0 или 1. isValidLaneTime является 0 когда запрашиваются обновления обнаружения полосы движения в моменты времени между интервалами обновления, указанными в LaneUpdateInterval.
Типы данных: logical
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
visionDetectionGeneratorisLocked | Определить, используется ли объект System |
Создание обнаружений с помощью датчика зрения автомобиля, установленного на эго-автомобиле. Предположим, что существуют два целевых транспортного средства:
Транспортное средство 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}.Measurementans = 6×1
31.0000
-11.2237
0
0
0
0
dets{1}.MeasurementNoiseans = 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)

Примечания и ограничения по использованию:
Для автономного развертывания: visionDetectionGenerator Системный объект поддерживает только цели Simulink Real-Time™.
См. Системные объекты в создании кода MATLAB (кодер MATLAB).
drivingRadarDataGenerator | drivingScenario | insSensor | laneMarking | lanespec | lidarPointCloudGenerator | monoCamera | multiObjectTracker | objectDetectionИмеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.