Отслеживание беспилотного автомобиля с помощью сажевого фильтра

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

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

Вот слайд от Daimler о локализации автомобилей.

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

Это часть беспилотного автомобиля 5-й серии. Другие статьи включают

Исходное положение

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

Если GPS недоступен, мы можем распределить частицы равномерно. Это то же самое, что сказать, что мы не знаем, где находится машина.

Для каждой частицы мы применяем динамическую модель (например, x ’= x + v 𝛿t), чтобы вычислить следующую позицию в момент времени t + 𝛿t.

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

С заранее определенной картой мы находим все окружающие ориентиры.

Но мы удаляем все ориентиры, которые считаются скрытыми от наших датчиков (крайний левый знак остановки).

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

Мы предполагаем, что шум измерения распределен по Гауссу, поэтому вероятность P2, представляющего наше текущее местоположение автомобиля, составляет:

Мы повторяем расчет (PDF) для каждого нового полученного нами измерения. Затем вычисляется окончательная вероятность для частицы путем умножения всех соответствующих PDF-файлов вместе.

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

Мы передискретизируем еще 10 частиц в зависимости от веса. Например, P2 удвоит шанс быть выбранным, если его вес в два раза больше, чем у P1. В наших случаях у нас есть 2 кластера локаций. Это означает, что наши измерения показывают 2 возможных места для нашей машины. Такую неоднозначность можно уменьшить, увеличив количество ориентиров на карте или уменьшив время (𝛿t) между прогнозами.

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

Затем мы повторяем процесс снова с новым набором измерений. На этот раз измерения наших сенсоров менее неоднозначны. Частицы из первого кластера теперь удаляются вместе с новым кластером из 10 частиц.

Заключение

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

Кредит

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