exponenta event banner

Детекторы датчиков модельного видения

В этом примере показано, как моделировать и моделировать выходные данные автомобильного датчика зрения для различных сценариев вождения. Генерация синтетических детекторов зрения важна для тестирования и проверки алгоритмов слежения и слияния датчиков в угловых случаях или когда аппаратное обеспечение датчика недоступно. В этом примере анализируются различия между измерениями зрения и истинным положением и скоростью транспортного средства для сценария предупреждения о столкновении в прямом направлении (FCW), сценария проезжающего транспортного средства и сценария снижения высоты.

В этом примере выполняется программная генерация детекторов зрения. Можно также генерировать обнаружения с помощью приложения Конструктор сценариев управления. Пример см. в разделах Создание сценария управления в интерактивном режиме и Создание данных синтетических датчиков.

Введение

Транспортные средства, которые содержат усовершенствованные функции системы помощи водителю (ADAS) или спроектированы таким образом, чтобы быть полностью автономными, обычно полагаются на датчики различных типов. Эти датчики включают в себя гидролокатор, радар, лидар и зрение. Надежное решение включает алгоритм слияния датчиков для объединения сильных сторон различных типов датчиков, включенных в систему. Дополнительные сведения о слиянии датчиков синтетических детекторов из многосенсорной системы ADAS см. в разделе Слияние датчиков с использованием синтетических данных радара и зрения.

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

Модель датчика зрения

В этом примере используется visionDetectionGenerator генерировать синтетические детекторы датчиков зрения. visionDetectionGenerator моделирует следующие эксплуатационные характеристики датчиков зрения автомобиля:

Преимущества

  • Хорошее боковое положение и точность скорости

  • Сообщается об одном обнаружении для каждой цели

Слабые места

  • Низкое продольное положение и точность скорости

  • Невозможность обнаружения окклюдированных целей

  • Продольные смещения для повышенных целей

Сценарий управления FCW

Создайте сценарий испытания с предупреждением о столкновении в прямом направлении (FCW), который используется для иллюстрации измерения положения цели с помощью автомобильного датчика зрения. Сценарий состоит из движущегося эго-транспортного средства и стационарного целевого транспортного средства, расположенного в 75 метрах вниз по дороге. Эго-транспортное средство имеет начальную скорость 50 км/ч перед применением тормозов для достижения постоянного замедления 3 м/с ^ 2. Затем транспортное средство полностью останавливается на 1 метр перед задним бампером целевого транспортного средства.

rng default;
initialDist = 75;  % m
finalDist = 1;     % m
initialSpeed = 50; % kph
brakeAccel = 3;    % m/s^2
[scenario, egoCar] = helperCreateSensorDemoScenario('FCW', initialDist, initialSpeed, brakeAccel, finalDist);

Датчик зрения, обращенный вперед

Создайте датчик обзора, установленный на переднем лобовом стекле эго-автомобиля, на высоте 1,1 м над уровнем земли. Датчик наклоняется вниз на 1 градус к дороге и производит измерения каждые 0,1 секунды. Камера датчика имеет матрицу изображения размером 480 на 640 пикселей и фокусное расстояние 800 пикселей. Датчик может обнаруживать объекты в пределах одного изображения с точностью до 5 пикселей и имеет максимальный диапазон обнаружения 150 м. ActorProfiles свойство определяет физические размеры транспортных средств, видимых датчиком зрения при моделировании.

visionSensor = visionDetectionGenerator(...
    'SensorIndex', 1, ...
    'UpdateInterval', 0.1, ...
    'SensorLocation', [0.75*egoCar.Wheelbase 0], ...
    'Height', 1.1, ...
    'Pitch', 1, ...
    'Intrinsics', cameraIntrinsics(800, [320 240], [480 640]), ...
    'BoundingBoxAccuracy', 5, ...
    'MaxRange', 150, ...
    'ActorProfiles', actorProfiles(scenario))
visionSensor = 

  visionDetectionGenerator with properties:

               SensorIndex: 1
            UpdateInterval: 0.1000

            SensorLocation: [2.1000 0]
                    Height: 1.1000
                       Yaw: 0
                     Pitch: 1
                      Roll: 0
                Intrinsics: [1x1 cameraIntrinsics]

            DetectorOutput: 'Objects only'
               FieldOfView: [43.6028 33.3985]
                  MaxRange: 150
                  MaxSpeed: 100
       MaxAllowedOcclusion: 0.5000
        MinObjectImageSize: [15 15]

      DetectionProbability: 0.9000
    FalsePositivesPerImage: 0.1000

  Use get to show all properties

Моделирование визуальных детекторов

Смоделировать датчик обзора, измеряющий положение целевого транспортного средства, увеличив время моделирования сценария. Датчик зрения генерирует детекции из истинной целевой позы (положение, скорость и ориентация), выраженной в кадре координат эго-транспортного средства.

Датчик зрения выполнен с возможностью формирования детекторов с интервалом 0,1 секунды, что согласуется с частотой обновления типичных датчиков зрения автомобиля. Однако для точного моделирования движения транспортных средств моделирование сценария продвигается каждые 0,01 секунды. Датчик возвращает логический флаг, isValidTime, это верно, когда датчик зрения достигает требуемого интервала обновления, что указывает на то, что этот шаг времени моделирования будет генерировать обнаружения.

% Create display for FCW scenario
[bep, figScene] = helperCreateSensorDemoDisplay(scenario, egoCar, visionSensor);

metrics = struct;                 % Initialize struct to collect scenario metrics
while advance(scenario)           % Update vehicle positions
    gTruth = targetPoses(egoCar); % Get target positions in ego vehicle coordinates

    % Generate time-stamped vision detections
    time = scenario.SimulationTime;
    [dets, ~, isValidTime] = visionSensor(gTruth, time);

    if isValidTime
        % Update Bird's-Eye Plot with detections and road boundaries
        helperUpdateSensorDemoDisplay(bep, egoCar, visionSensor, dets);

        % Collect vision detections and ground truth for offline analysis
        metrics = helperCollectScenarioMetrics(metrics, gTruth, dets);
    end

    % Take a snapshot for the published example
    helperPublishSnapshot(figScene, time>=6);
end

Измерения положения

В течение испытания FCW расстояние до транспортного средства-эго до цели охватывает широкий диапазон значений. Сравнивая измеренное продольное и боковое положения датчика зрения целевого транспортного средства с истинным положением земли целевого транспортного средства, можно наблюдать точность измеренного положения датчика.

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

helperPlotSensorDemoDetections(metrics, 'position', 'reverse range', [-6 6]);

% Show rear overhang of target vehicle
tgtCar = scenario.Actors(2);
rearOverhang = tgtCar.RearOverhang;

subplot(1,2,1);
hold on; plot(-rearOverhang*[1 1], ylim, 'k'); hold off;
legend('Error', '2\sigma noise', 'Rear overhang');

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

Измерения продольного положения

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

Вертикальное положение объекта на изображении сильно соотносится с высотой объекта над дорогой, но слабо соотносится с расстоянием объекта от камеры. Эта слабая корреляция приводит к тому, что погрешности продольного положения монокулярного датчика зрения становятся большими при удалении объекта от датчика. Ошибки продольного положения на предыдущем графике слева показывают, как быстро увеличиваются продольные ошибки датчика, когда целевое транспортное средство находится далеко от датчика. Шум,$2\sigma$ производимый датчиком при продольном измерении, составляет менее 1 метра, когда дальность истинности земли до целевого транспортного средства составляет менее 30 метров, но увеличивается более чем до 5 метров на дальностях более 70 метров от эго-транспортного средства.

Ошибки продольного положения также показывают смещение -1 метр между долготой, измеренной датчиком зрения, и истинным положением цели. Смещение -1 метра указывает на то, что датчик последовательно измеряет, чтобы цель была ближе к эго-транспортному средству, чем истинное положение целевого транспортного средства на земле. Вместо аппроксимации цели в виде одной точки пространства датчик зрения моделирует физические размеры кузова транспортного средства. Для сценария FCW датчик обзора отображает заднюю сторону целевого транспортного средства. Смещение -1 метра в детекторах, генерируемых с этой стороны, соответствует заднему свесу транспортного средства. Задний свес транспортного средства определяет расстояние между задней стороной транспортного средства и его задней осью, на которой находится ссылка на истинность грунта.

Измерения бокового положения

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

В отличие от продольного положения, боковое положение объекта сильно коррелирует с его горизонтальным положением на изображении датчика зрения. Эта сильная корреляция дает точные измерения бокового положения, которые не ухудшаются быстро с расстоянием объекта от датчика. Погрешности бокового положения на предыдущем графике справа медленно растут с диапазоном.$2\sigma$ Измерительный шум, сообщаемый датчиком, остается ниже 0,2 метра до диапазона истинности земли 70 метров.

Измерения скорости и закупорка цели

Создание сценария вождения с двумя целевыми транспортными средствами (головным автомобилем и проезжающим автомобилем) для иллюстрации точности измерений продольной и поперечной скорости датчика зрения. Ведущий автомобиль расположен на 40 метров перед эго-транспортным средством и едет с той же скоростью. Проезжающий автомобиль начинается в левой полосе рядом с эго-транспортным средством, проходит эго-транспортное средство и сливается в правую полосу сразу за ведущим автомобилем. Этот маневр объединения создает продольную и боковую составляющие скорости, позволяя сравнивать точность датчика вдоль этих двух размеров.

Поскольку ведущий автомобиль находится непосредственно перед датчиком, он имеет исключительно продольную составляющую скорости. Проходящий автомобиль имеет профиль скорости, имеющий как продольную, так и боковую составляющие скорости. Эти компоненты меняются, когда автомобиль проходит эго-транспортное средство и движется в правую полосу за ведущим автомобилем. Сравнение измеренных продольной и поперечной скоростей датчика целевых транспортных средств с их истинными скоростями на земле иллюстрирует способность датчика зрения наблюдать за обеими этими компонентами скорости.

% Create passing scenario
leadDist = 40;     % m
speed = 50;        % kph
passSpeed = 70;    % kph
mergeFract = 0.55; % Merge 55% into right lane
[scenario, egoCar] = helperCreateSensorDemoScenario('Passing', leadDist, speed, passSpeed, mergeFract);

Конфигурация измерений скорости датчика зрения

Датчик зрения не может определить скорость объекта по одному изображению. Для оценки скорости датчик зрения сравнивает перемещение объекта между несколькими изображениями. Извлеченные целевые позиции из множества изображений обрабатываются с использованием сглаживающего фильтра. В дополнение к оценке скорости этот фильтр создает сглаженную оценку положения. Чтобы настроить степень сглаживания, применяемую фильтром, можно задать интенсивность технологического шума датчика. Технологический шум датчика должен быть установлен на порядок максимальной величины ускорения, ожидаемой от цели, которая должна быть обнаружена датчиком.

Возьмите датчик зрения, использованный в предыдущем разделе, и настройте его для формирования оценок положения и скорости из сглаживающего фильтра с интенсивностью технологического шума 5 м/с ^ 2.

% Configure vision sensor's noise intensity used by smoothing filter
release(visionSensor);
visionSensor.ProcessNoiseIntensity = 5; % m/s^2

% Use actor profiles for the passing car scenario
visionSensor.ActorProfiles = actorProfiles(scenario);

Использовать helperRunSensorDemoScenario для моделирования движения эго и целевых транспортных средств. Эта функция также собирает смоделированные метрики, как это было сделано ранее для сценария управления FCW.

snapTime = 5.9; % Simulation time to take snapshot for publishing
metrics = helperRunSensorDemoScenario(scenario, egoCar, visionSensor, snapTime);

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

helperPlotSensorDemoDetections(metrics, 'velocity', 'time', [-25 25]);
subplot(1,2,1);
legend('Lead car error', 'Lead car 2\sigma noise', 'Pass car error', 'Pass car 2\sigma noise');

Измерения продольной скорости

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

Ошибки продольной скорости из сценария проезжающего транспортного средства показаны на предыдущем графике слева. Поскольку ведущий автомобиль поддерживает постоянное расстояние от датчика зрения, его ошибки (отображаемые как красные точки) показывают одинаковый$2\sigma$ шум измерения на протяжении всего сценария. Однако расстояние проезжающего автомобиля от датчика не является постоянным, но это расстояние увеличивается, когда автомобиль проходит датчик и движется к ведущему автомобилю. Ошибки продольной скорости проходящего автомобиля (отображаемые в виде желтых точек) малы, когда он впервые попадает в поле зрения датчика через 2 секунды. Проезжающий мимо автомобиль близок к датчику зрения в этот момент сценария. От 2 секунд до 6 секунд проезжающий мимо автомобиль отходит от эго-транспортного средства и приближается к ведущему автомобилю. Погрешности продольной скорости увеличиваются по мере увеличения расстояния от датчика. Как только проезжающий автомобиль сливается в правую полосу за ведущим автомобилем, он сохраняет постоянное расстояние от датчика, а его$2\sigma$ измерительный шум остается постоянным.

Измерения поперечной скорости

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

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

Обнаружение целей с частичной окклюзией

На предыдущих графиках ошибок скорости ведущий автомобиль (красные точки) надежно обнаруживается в течение первых 6 секунд сценария. Проезжающий мимо автомобиль (желтые точки) обнаруживается через 2 секунды при первом входе в поле зрения камеры. Детекции затем генерируются на обоих целевых транспортных средствах до 6 секунд. Через 6 секунд проезжающий мимо автомобиль сливается в правую полосу и движется между эго-транспортным средством и ведущим автомобилем. В оставшейся части сценария проходящий мимо автомобиль частично закрывает зрительный датчик ведущего автомобиля. 55% задней стороны ведущего автомобиля закрывается, оставляя только 45% видимыми для обнаружения. Этот закрытый вид ведущего автомобиля не позволяет датчику обнаружить автомобиль на изображении камеры и создать детекторы.

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

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

% Configure vision sensor to support maximum occlusion of 60%
release(visionSensor);
visionSensor.MaxAllowedOcclusion = 0.6;

% Run simulation and collect detections and ground truth for offline analysis
metrics = helperRunSensorDemoScenario(scenario, egoCar, visionSensor);

% Plot longitudinal and lateral velocity errors
helperPlotSensorDemoDetections(metrics, 'velocity', 'time', [-25 25]);
subplot(1,2,1);
legend('Lead car error', 'Lead car 2\sigma noise', 'Pass car error', 'Pass car 2\sigma noise');

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

Смещение продольного положения от целевой отметки

Вертикальное положение объекта на изображении камеры сильно соотносится с его высотой над дорогой. Поскольку монокулярный датчик зрения генерирует измерения продольного положения из вертикального положения объектов на изображении его камеры, могут возникать большие ошибки для целей на разных высотах от эго-транспортного средства. Когда объект меняет высоту, датчик неверно интерпретирует вертикальное смещение изображения камеры как изменение продольного положения объекта.

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

% Create FCW hill descent scenario
initialDist = 75;  % m
finalDist = 1;     % m
initialSpeed = 50; % kph
brakeAccel = 3;    % m/s^2
[scenario, egoCar] = helperCreateSensorDemoScenario('FCW', initialDist, initialSpeed, brakeAccel, finalDist, false, 2);

% Use actor profiles for the FCW hill descent scenario
release(visionSensor);
visionSensor.ActorProfiles = actorProfiles(scenario);

% Run simulation and collect detections and ground truth for offline analysis
snapTime = 3; % Simulation time to take snapshot for publishing
metrics = helperRunSensorDemoScenario(scenario, egoCar, visionSensor, snapTime, true);

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

helperPlotSensorDemoDetections(metrics, 'position', 'reverse range', [-6 6;0 80]);
subplot(1,2,1); xlim([-10 60]); ylim([0 80]);
legend('Error', '2\sigma noise');

На предыдущих графиках показаны ошибки продольного положения (слева) и бокового положения (справа) для сценария спуска холма. Следует отметить, что на графике погрешности продольного положения границы оси погрешности были увеличены, чтобы приспособиться к большому смещению, вызванному подъемом цели относительно датчика камеры, когда эго-транспортное средство спускается по холму.

Эго-транспортное средство начинает свой спуск, когда находится в 75 метрах от целевого транспортного средства. Поскольку эго-транспортное средство опускается вниз при спуске на холм, цель появляется в возвышенном положении рядом с верхней частью изображения камеры. Когда эго-транспортное средство спускается на холм, местоположение целевого транспортного средства на изображении камеры перемещается от вершины изображения и пересекает линию горизонта. Для монокулярных датчиков зрения цели, расположенные вблизи линии горизонта на изображении камеры, отображаются в положения, которые находятся очень далеко от датчика. (По определению, точки на линии горизонта расположены на бесконечности.) Датчик зрения не создает обнаружений для объектов, появляющихся над горизонтом на изображении камеры, поскольку эти точки не сопоставляются с местоположениями на поверхности дороги.

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

Когда эго-транспортное средство находится приблизительно в 40 метрах от целевого транспортного средства, местоположение изображения целевого транспортного средства пересекает линию горизонта, и оценки скорости датчика удовлетворяют ограничению максимальной скорости. На этом расстоянии датчик зрения начинает генерировать сигналы обнаружения от целевого транспортного средства. Отображение целевых местоположений вблизи горизонта камеры на точки на дороге, далекие от датчика, объясняет большие продольные ошибки, смоделированные монокулярным датчиком зрения, когда он начинает обнаружение целевого транспортного средства. Продольное смещение продолжает уменьшаться по мере приближения эго-транспортного средства к дну холма и удаления местоположения цели от линии горизонта на изображении камеры. В конце снижения эго-транспортного средства цель находится на той же высоте, что и эго-транспортное средство. Имеется только смещение -1 метра, соответствующее заднему свесу целевого транспортного средства. Ошибки бокового положения датчика не показывают смещения, поскольку шаг эго-транспортного средства при спуске на холм не изменяет горизонтальное положение цели на изображении камеры.

Обнаружение пешеходов и транспортных средств

Способность датчика зрения обнаруживать объект на изображении камеры зависит от количества пикселей, занимаемых объектом на изображении. Когда размер объекта на изображении велик (сотни пикселей), датчик может легко идентифицировать объект и генерировать обнаружение. Однако, когда размер объекта в изображении мал (десятки пикселей), датчик может не найти его и не будет генерировать обнаружение. Проецируемый размер объекта в массиве изображений камеры зависит как от физического размера объекта, так и от его расстояния от камеры. Следовательно, когда транспортное средство расположено дальше от камеры, чем пешеход, и транспортное средство, и пешеход могут иметь одинаковые размеры на изображении камеры. Это означает, что датчик зрения будет обнаруживать большие объекты (транспортные средства) на больших расстояниях, чем меньшие объекты (пешеходы).

Снова выполните сценарий FCW, используя как стационарный автомобиль, так и пешехода в 75 метрах перед датчиком. Этот сценарий иллюстрирует разницу в диапазоне обнаружения датчика для этих двух объектов. Эго-автомобиль, стационарный автомобиль и пешеход расположены на одной высоте.

% Create FCW test scenario
initialDist = 75;  % m
finalDist = 1;     % m
initialSpeed = 50; % kph
brakeAccel = 3;    % m/s^2
[scenario, egoCar] = helperCreateSensorDemoScenario('FCW', initialDist, initialSpeed, brakeAccel, finalDist, true);

% Use actor profiles for the FCW hill descent scenario
release(visionSensor);
visionSensor.ActorProfiles = actorProfiles(scenario);

% Run simulation and collect detections and ground truth for offline analysis
snapTime = 5; % Simulation time to take snapshot for publishing
metrics = helperRunSensorDemoScenario(scenario, egoCar, visionSensor, snapTime);

Постройте график ошибок положения, сгенерированных для целевого транспортного средства и пешехода из сценария FCW.

helperPlotSensorDemoDetections(metrics, 'position', 'reverse range', [-6 6]);
legend('Car error','Car 2\sigma noise', 'Pedestrian error', 'Pedestrian 2\sigma noise');

На предыдущих графиках показаны ошибки продольного положения (слева) и бокового положения (справа), возникающие в результате обнаружения датчиком зрения целевого транспортного средства и пешехода. Ошибки при обнаружении целевого транспортного средства (показаны красным цветом) генерируются в самом дальнем диапазоне, включенном в этот тест (75 м), но ошибки для пешехода (показаны желтым цветом) не появляются до тех пор, пока эго-транспортное средство не достигнет расстояния приблизительно 30 м. Эта разница в диапазонах обнаружения обусловлена разницей в размерах этих двух объектов.

Датчик перестает генерировать сигналы обнаружения от пешехода в диапазоне менее 12 м. На этом диапазоне смещение пешехода от оптической оси камеры перемещает пешехода за пределы горизонтального поля зрения камеры. Поскольку целевой автомобиль находится непосредственно перед камерой, он остается центрированным в изображении камеры в течение всего теста FCW.

Некоторые датчики зрения могут обнаруживать объекты с меньшими размерами изображения, позволяя датчикам обнаруживать объекты на больших расстояниях. В предыдущем сценарии обнаружение пешеходом датчика ограничено шириной пешехода (0,45 м), что значительно уже ширины автомобиля (1,8 м). Чтобы увеличить диапазон обнаружения датчика для пешеходов до 40 м, вычислите ширину пешехода на изображении камеры, когда она находится на отметке 40 м.

Найти физическую ширину, смоделированную для пешехода

profiles = actorProfiles(scenario);
pedWidth = profiles(3).Width

% Compute width of pedestrian in camera's image in pixels at 40 meters from ego vehicle
cameraRange = 40-visionSensor.SensorLocation(1);
focalLength = visionSensor.Intrinsics.FocalLength(1);
pedImageWidth = focalLength*pedWidth/cameraRange
pedWidth =

    0.4500


pedImageWidth =

    9.4987

На 40 м пешеход имеет ширину 9,5 пикселей на изображении камеры. Установите минимальную ширину объекта датчика зрения в соответствии с шириной пешехода 40 м.

% Configure sensor to detect pedestrians out to a range of 40 m
release(visionSensor);
visionSensor.MinObjectImageSize(2) = pedImageWidth
visionSensor = 

  visionDetectionGenerator with properties:

               SensorIndex: 1
            UpdateInterval: 0.1000

            SensorLocation: [2.1000 0]
                    Height: 1.1000
                       Yaw: 0
                     Pitch: 1
                      Roll: 0
                Intrinsics: [1x1 cameraIntrinsics]

            DetectorOutput: 'Objects only'
               FieldOfView: [43.6028 33.3985]
                  MaxRange: 150
                  MaxSpeed: 100
       MaxAllowedOcclusion: 0.6000
        MinObjectImageSize: [15 9.4987]

      DetectionProbability: 0.9000
    FalsePositivesPerImage: 0.1000

  Use get to show all properties

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

% Run simulation and collect detections and ground truth for offline analysis
metrics = helperRunSensorDemoScenario(scenario, egoCar, visionSensor);

% Plot position errors for the target vehicle and pedestrian
helperPlotSensorDemoDetections(metrics, 'position', 'reverse range', [-6 6]);
legend('Car error','Car 2\sigma noise', 'Pedestrian error', 'Pedestrian 2\sigma noise');

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

Измерения границ полосы движения и окклюзия полосы движения

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

% Create passing scenario
leadDist = 40;     % m
speed = 50;        % kph
passSpeed = 70;    % kph
mergeFract = 0.55; % Merge 55% into right lane
[scenario, egoCar] = helperCreateSensorDemoScenario('Passing', leadDist, speed, passSpeed, mergeFract);

Конфигурация измерений границы полосы движения датчика зрения

Сконфигурируйте датчик зрения, использованный в предыдущем разделе, и настройте его для формирования оценок положения и скорости из сглаживающего фильтра с интенсивностью технологического шума 5 м/с ^ 2.

% Configure vision sensor to detect both lanes and objects
release(visionSensor);
visionSensor.DetectorOutput = 'lanes and objects';

% Use actor profiles for the passing car scenario
visionSensor.ActorProfiles = actorProfiles(scenario);

Использовать helperRunSensorDemoScenario для моделирования движения эго и целевых транспортных средств.

snapTime = 5.9; % Simulation time to take snapshot for publishing
helperRunSensorDemoScenario(scenario, egoCar, visionSensor, snapTime);

Как можно видеть выше, детектор по умолчанию может видеть границы полосы до 45 метров или около того, когда представлен неокрываемый вид. Можно изменить характеристики детектора, чтобы наблюдать за его эффектом.

% show camera intrinsics
visionSensor.Intrinsics
ans = 

  cameraIntrinsics with properties:

             FocalLength: [800 800]
          PrincipalPoint: [320 240]
               ImageSize: [480 640]
        RadialDistortion: [0 0]
    TangentialDistortion: [0 0]
                    Skew: 0
         IntrinsicMatrix: [3x3 double]

% increase the focal length and observe its effect.
release(visionSensor);
visionSensor.Intrinsics = cameraIntrinsics([1200 1200],[320 240],[480 640])

helperRunSensorDemoScenario(scenario, egoCar, visionSensor, snapTime);
visionSensor = 

  visionDetectionGenerator with properties:

               SensorIndex: 1
            UpdateInterval: 0.1000

            SensorLocation: [2.1000 0]
                    Height: 1.1000
                       Yaw: 0
                     Pitch: 1
                      Roll: 0
                Intrinsics: [1x1 cameraIntrinsics]

            DetectorOutput: 'Lanes and objects'
               FieldOfView: [29.8628 22.6199]
                  MaxRange: 150
                  MaxSpeed: 100
       MaxAllowedOcclusion: 0.6000
        MinObjectImageSize: [15 9.4987]
          MinLaneImageSize: [20 3]

      DetectionProbability: 0.9000
    FalsePositivesPerImage: 0.1000

  Use get to show all properties

Изменение фокусного расстояния с 800 пикселей на 1200 в направлениях X и Y увеличивает масштаб камеры, позволяя ей обнаруживать дополнительные диапазоны.

Резюме

Этот пример продемонстрировал, как моделировать выходные данные автомобильных датчиков зрения с помощью синтетических детекторов. В частности, он представил, как visionDetectionGenerator модель:

  • Обеспечивает точные измерения бокового положения и скорости на больших расстояниях, но имеет ограниченную продольную точность на больших расстояниях

  • Ограничивает обнаружение в соответствии с физическими размерами цели и окклюзией цели другими объектами в сценарии

  • Включает продольные смещения для целей, расположенных на разных высотах, чем эго-транспортное средство

  • Коррекция обнаружения объектов и полос движения из-за особенностей монокулярной камеры.

См. также

Приложения

Объекты

Связанные темы