Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Геолокация беспилотного транспортного средства с использованием видео

Геолокация беспилотного транспортного средства с использованием видео

Вадим Литвинов (MachineZone) рассказывает о своем опыте создания беспилотного транспортного средства.

«В течение последних нескольких лет я работал в лаборатории французского института Institut Pascal. Являясь сотрудником отделения, занимающегося исследованиями в области робототехники, я имел возможность поучаствовать в проекте по созданию автоматического транспортного средства.

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

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

E51d363aa46f4d059d54a15e0bcd8e6f?s=128

Tech Talks @NSU

October 27, 2015
Tweet

Transcript

  1. Беспилотное транспортное средство: геолокация с использованием видео 27 октября 2015

  2. Контекст

  3. • Проблема: переместить группу людей: ◦ На короткое расстояние (

    < 3 km) ◦ В защищенной среде ◦ Дешево • Потенциальные клиенты: ◦ Крупные производственные предприятия ◦ Аэропорты ◦ Парки, крупные выставки… Цели проекта
  4. Решение: Трамвай без инфраструктуры • Плюсы в сравнении с классическим

    трамваем: ◦ Нет затрат на инфраструктуру ◦ Можно легко поменять маршрут • Плюсы в сравнении с автобусом: ◦ Не нужно платить зарплату водителю ◦ Легко масштабируется ◦ Функционирует 24/7 Решение
  5. • Institut Pascal: ◦ Находится в Клермон-Ферране, Франция ◦ Большое

    количество направлений исследований: ▪ От биологии до робототехники • Ligiér: ◦ Производитель автомобилей ◦ Специалист по маленьким машинам Основные партнёры
  6. • около 2001: Начало первых исследований • 2009: Началась разработка

    первого прототипа • 2011: Первое крупномасштабное исследование • 2015: Открытие стартапа EasyMile Хронология проекта
  7. Платформа

  8. https://www.youtube.com/watch?v=u9Axo51ZJOY Немного видео…

  9. Эволюция прототипов

  10. Полигон для тестов

  11. • Основные характеристики: ◦ Вместимость: 6 человек ◦ Максимальная скорость:

    25 км/ч ◦ Автономия: 8 ч • Оборудование: ◦ 2 видео камеры ◦ 4 Лидара ◦ 1 oдометр Характеристики
  12. • Нижний уровень • Верхний уровень Система управления

  13. • Специально спроектированное электронное устройство • Ввод: ◦ Высокоуровневые команды

    ◦ Поступают по шине CAN • Вывод: Управляющие сигналы для силовых приводов Нижний уровень
  14. • Стандартный ПК в индустриальном корпусе: ◦ OS: Ubuntu Linux

    ◦ Язык программирования: С++ • Ввод: ◦ 2 видео потока ◦ Пользовательский ввод • Вывод: Команды для нижнего уровня Верхний уровень
  15. Архитектура верхнего уровня Карта Видео GPS Лидар Модули позиционирования Модуль

    управления UI
  16. Позиционирование по видео: Фаза обучения

  17. • Оператор проводит машину по траектории ◦ Видеопотоки записываются •

    Запускается процесс обучения ◦ Создаётся база данных ◦ Определяется система координат ◦ Определяется траектория движения Фаза обучения
  18. Для каждого кадра: • Ищутся интересные точки • Им ищутся

    соответствия в предидущем кадре • Обновляется база данных: ◦ Вычисляются 3Д координаты точек ◦ Вычисляются 3Д координаты машины Процесс обучения (одна камера)
  19. Детектор углов Харриса: Выявление интересных точек http://sse.tongji.edu.cn/linzhang/CV14/Projects/panorama.htm

  20. Детектор углов Харриса Harris Detector: Basic Idea “flat” region: no

    change in all directions “edge”: no change along the edge direction “corner”: significant change in all directions Плоский регион: нет изменений по всем направлениям Грань: резкое изменение в одном направлении Угол: резкое изменение во всех направлениях
  21. Используя корреляцию ZNCC: Определение соответствий http://sse.tongji.edu.cn/linzhang/CV14/Projects/panorama.htm

  22. Zero mean Normalized Cross-Correlation: Определение соответствий REMHFWV 7KLV ODWHU SURSHUW\

    LV SDUWLFXODUO\ LQWHUHVWLQJ IRU WKH VXUIDFH UHFRQVWUXF WLRQ SUREOHP 7KH +DUULV GHWHFWRU LV DOVR LQYDULDQW WR LOOXPLQDWLRQ FRQGLWLRQV 7KH DFWXDO LPSOHPHQWDWLRQ GHWDLOV ZDV WDNHQ IURP >1LVW§U@ (DFK GHWHFWHG SRLQW KDV D FRQȪGHQFH VFRUH QXPHULFDO YDOXH DVVRFLDWHG WR LW E\ WKH GHWHFWRU ZH NHHS RQO\ Npoi SRLQWV ZLWK WKH EHVW FRQȪGHQFH VFRUH $IWHU WKH IHDWXUHV ZHUH GHWHFWHG WKH\ DUH PDWFKHG ZLWK WKH IHDWXUHV IURP WKH SUHYLRXV IUDPH )LUVW RI DOO ZH FRQVLGHU WKDW D IHDWXUH VHHQ E\ RQH RI WKH FDPHUDV RI WKH V\VWHP FDQ RQO\ EH PDWFKHG ZLWK WKH IHDWXUH GHWHFWHG LQ WKH VDPH FDPHUD 6HFRQG ZH FRQVLGHU WKDW WKH PRYHPHQW EHWZHHQ WKH WZR LPDJHV LV VPDOO VR ZH VHDUFK IRU D SRWHQWLDO PDWFK LQ D Xroi E\ Yroi ]RQH FHQWHUHG DW WKH FXUUHQW SRLQW SRVLWLRQ $ =HUR PHDQ 1RUPDOL]HG &URVV&RUUHODWLRQ =1&& LQ D w E\ w QHLJKERU KRRG LV FRPSXWHG EHWZHHQ WKH SRLQW DQG DOO WKH SRWHQWLDO FDQGLGDWHV WKHQ WKH EHVW FDQGLGDWH LV NHSW )RU PHPRU\ D =1&& FDQ EH ZULWWHQ ZNCCw×w (T, T) = ΣG∈νw (I(T + G) − ¯ I(T))(I(T + G) − ¯ I(T)) ΣG∈νw (I(T + G) − ¯ I(T))2 ΣG∈νw (I(T + G) − ¯ I(T))2 ,,, ZLWK ¯ I(TL) = 1 w2 G∈νw I(TL + G) ,,, ZKHUH T DQG T DUH WKH WZR SRLQWV WR EH FRPSDUHG I(T) LV WKH OXPLQDQFH YDOXH RI WKH SRLQW T DQG νw LV WKH w × w QHLJKERUKRRG ,I WKH FURVVFRUUHODWLRQ YDOXH RI WKH EHVW FDQGLGDWH LV OHVV WKDQ WKUHVKROG Sm  WKH PDWFK LV UHMHFWHG ,I WKH PDWFK LV NHSW ZH FKHFN LI WKH SRLQW ZH KDYH VHOHFWHG KDV
  23. На выходе получаем дорожки: Определение соответствий  ,,, ' SRLQW

    FORXG FRPSXWDWLRQ Iki−1 Iki ǹ Ij−1 Ij TNL− TNL TM− TL T′ NL− T′ NL T′ M− )LJXUH ,,, )HDWXUHV WUDFNLQJ QRWDWLRQV Ij LV DQ LPDJH RI WKH VHTXHQFH ZLWK j DV LQGH[ ki DUH WKH LQGH[HV RI WKH NH\ IUDPHV T ki LV DQ REVHUYDWLRQ RI WKH SRLQW T LQ WKH IUDPH Iki  7KH UHJXODU OLQHV DUH WUXH PDWFKHV DQG WKH GDVKHG OLQHV DUH FRQVLGHUHG D IDOVH PDWFKHV DOUHDG\ EHHQ PDWFKHG ZLWK DQRWKHU SRLQW ,I LW ZDV QRW EHHQ PDWFKHG RU WKH FURVV FRUUHODWLRQ YDOXH RI WKH SUHYLRXV PDWFK LV LQIHULRU WR WKH QHZ RQH WKH QHZ PDWFK LV NHSW DQG WKH SUHYLRXV PDWFK LV UHPRYHG 7KLV WHFKQLTXH KDYH WKH DGYDQWDJH WR DYRLG D JUHDW QXPEHU RI IDOVH PDWFKHV
  24. Каждая 2Д точка в изображении: • Определяет луч в 3Д

    пространстве • Берущий начало в оптическом центре камеры • Соответствующая 3Д точка находится где- то на этом луче Соотношение 2Д - 3Д ,,, 0XOWL FDPHUD V\VWHP PRGHOLQJ  xw yw zw c c′ q q′ x y c′ y c′ x f q′ y q′ x )LJXUH ,,, 3LQKROH FDPHUD PRGHO F LV WKH FDPHUD RSWLFDO FHQWHU F′ LV LW SURMHF WLRQ WR WKH LPDJH SODQH T LV DQ DUELWUDU\ SRLQW LQ ' VSDFH T′ LV LWV SURMHFWLRQ WR WKH LPDJH SODQH f LV WKH FDPHUD IRFDO OHQJWK RQH RI WKH FDPHUDV DQG GLUHFWHG WR T 7KH IXQFWLRQ p−1 LV FDOOHG EDFNSURMHFWLRQ DQG WKH WKLV KDOIOLQH LV FDOOHG D UD\ DVVRFLDWHG WR T′ %HFDXVH WKH IXQFWLRQ p IRU D FRPSOHWH PXOWLFDPHUD V\VWHP LV FRPSOH[ LW LV EXLOG XS LQFUHPHQWDOO\ :H EHJLQ E\ GHȪQLQJ WKH SURMHFWLRQ IRU D VLPSOH SLQKROH FDPHUD SODFHG DW WKH FHQWHU RI WKH ZRUOG LQ WKH VXEVHFWLRQ ,,, WKHQ ZH JUDGXDOO\
  25. • Мы знаем 3Д координаты некоторых точек в предыдущем кадре

    • Мы знаем их 2Д координаты в текущем кадре • 3 таких точки достаточно что-бы рассчитать позицию и ориентацию камеры Обновление БД (фаза 1) ,,, 0XOWL FDPHUD V\VWHP PRGHOLQJ  ,,, 7KH FDPHUD DW DQ DUELWUDU\ SRVLWLRQ LQ VSDFH ,Q WKH SUHYLRXV VXEVHFWLRQV ZH KDYH ZULWWHQ WKH SURMHFWLRQ IXQFWLRQ IRU D FDPHUD SODFHG DW WKH FHQWHU RI WKH ZRUOG FRRUGLQDWH V\VWHP 7KLV ZRXOG EH ȪQH LI ZH KDYH WR ZRUN ZLWK D VLQJOH LPDJH ,Q SUDFWLFH ZH VKRXOG EH DEOH WR ZULWH D SURMHFWLRQ IXQFWLRQ IRU D PRYLQJ FDPHUD $V LQ WKH VXEVHFWLRQ ,,, WKH ZRUOG FRRUGLQDWH V\VWHP LV GHȪQHG E\ WKH WULSOHW RI YHFWRUV {[ w , \ w , ] w } DQG QRZ LV FHQWHUHG DW VRPH DUELWUDU\ SRLQW LQ VSDFH FDOOHG F w  :H GHȪQH WKH FDPHUD FRRUGLQDWH V\VWHP E\ WKH WULSOHW RI GLUHFWLRQ YHFWRUV {[ c , \ c , ] c } FHQWHUHG DW WKH FDPHUD RSWLFDO FHQWHU F :H GHȪQH WKH WUDQVODWLRQ EH WZHHQ F DQG F w E\ D YHFWRU Ww c DQG WKH URWDWLRQ EHWZHHQ {[ c, \ c, ] c } DQG {[ w, \ w, ] w } E\ D URWDWLRQ PDWUL[ Rw c  7KH SDLU {Rw c , Ww c } LV FDOOHG WKH FDPHUD SRVH *LYHQ DQ DUELWUDU\ YHFWRU Y w ∈ R3 H[SUHVVHG LQ WKH ZRUOG FRRUGLQDWH V\VWHP ZH FDOO Y c ∈ R3 WKH VDPH YHFWRU H[SUHVVHG LQ WKH FDPHUD FRRUGLQDWH V\VWHP ,W FDQ EH FRPSXWHG E\ Y c = RwT c (Y w − Ww c ) $QG LQYHUVHO\ Y w = Rw c Y c + Ww c  8VLQJ WKLV H[SUHVVLRQV DQG WKH FDPHUD SURMHFWLRQ HTXDWLRQ ,,,  ZH FDQ ZULWH WKH SURMHFWLRQ HTXDWLRQ IRU DQ DUELWUDU\ SODFHG FDPHUD DV IROORZV ⎡ ⎣ q′ x q′ y 1 ⎤ ⎦ ≡ KRwT c [I3 | − Ww c ] ⎡ ⎢ ⎢ ⎣ qx qy qz 1 ⎤ ⎥ ⎥ ⎦ ,,, 7KH EDFNSURMHFWLRQ LV VLPSO\ FRPSXWHG E\ DSSO\LQJ WKH HTXDWLRQ ,,,  WKHQ E\ PXOWLSO\LQJ WKH UHVXOWLQJ GLUHFWLRQ E\ Rw c  7KH FDPHUD URWDWLRQ LV HQRXJK EHFDXVH WKH EDFNSURMHFWLRQ UHWXUQV WKH GLUHFWLRQ RI WKH UD\ DVVRFLDWHG WR WKH SL[HO WKH UD\ RULJLQ LV DOZD\V WKH FDPHUD RSWLFDO FHQWHU F  ,,, 5LJLG PXOWLFDPHUD V\VWHP PRGHOLQJ
  26. Разница между теоретическим и реальным результатом Вводим понятие ошибки 

    ,,, ' SRLQW FORXG FRPSXWDWLRQ F T′ T G′ q G q αq )LJXUH ,,, $QJXODU HUURU F LV WKH FDPHUD RSWLFDO FHQWHU T LV DQ DUELWUDU\ ' SRLQW T′ LV WKH GHWHFWHG LPDJH RI T LQ WKH FDPHUD LPDJH SODQH G q LV WKH GLUHFWLRQ RI WKH VHJPHQW FT G′ q LV WKH GLUHFWLRQ RI WKH VHJPHQW FT′ αq LV WKH DQJOH EHWZHHQ FT DQG FT′ 7KH VDPH HTXDWLRQ FDQ DOVR EH ZULWWHQ XVLQJ WKH ZRUOG FRRUGLQDWH V\VWHP ,I WKH FDPHUD SRVH LV {Rw c , Ww c } WKHQ WKH HTXDWLRQ EHFRPH H q = π2(Rq′ RwT c [I3 | − Ww c ] T ) ,,,
  27. • Используем RANSAC: ◦ Выбираем 3 случайных точки ◦ Рассчитываем

    позицию камеры ◦ Рассчитываем ошибку для всех 3Д точек ◦ Их сумма в квадрате это очки этого результата • Повторяем N раз • Оставляем резултат с наименьшим количеством очков Добавим надёжность
  28. • Некоторые точки ещё не имеют 3Д координат • Но

    видимы как минимум в 3 кадрах • Мы используем 2 кадра что-бы рассчитать координаты • Третий нужен что-бы проверить результат Обновление БД (фаза 2) ,,, ,QFUHPHQWDO 6WUXFWXUHIURP0RWLRQ  F I1 F I2 T T T G G )LJXUH ,,, 0LGGOH SRLQW WULDQJXODWLRQ PHWKRG F 1 DQG F 2 DUH WKH FDPHUDV RSWLFDO FHQWHUV I1 DQG I2 DUH WKH LPDJH SODQHV RI WKH FDPHUDV T LV WKH REVHUYHG ' SRLQW G 1 LV WKH GLUHFWLRQ RI WKH VHJPHQW EHWZHHQ F 1 DQG WKH GHWHFWHG LPDJH RI T LQ I1  G 2 LV WKH GLUHFWLRQ RI WKH VHJPHQW EHWZHHQ F 2 DQG WKH GHWHFWHG LPDJH RI T LQ I2  ,,, 5D\EDVHG HUURU IXQFWLRQ 7KH FRPSXWDWLRQV RI WKH VXEVHFWLRQV ,,, DQG ,,, ZRXOG EH HQRXJK LI ZH
  29. • Мы улучшаем результат оптимизируя систему с помощью метода Левенберга-

    Марквардта: ◦ Мы улучшаем позицию 3 последних кадров ◦ Мы улучшаем 3Д позицию точек видимых в 10 последних камерах Обновление БД (фаза 3)
  30. • Мы работаем с 3 первыми кадрами • Если мы

    знаем соответствия между 3 точками в двух кадрах: ◦ Мы можем рассчитать позиции камер ◦ И 3Д координаты этих точек • Мы рассчитываем координаты первой и третьей камеры • Потом мы рассчитываем координаты второй • Мы используем RANSAC для надёжности Инициализация процесса
  31. • Зрительная база данных: ◦ Набор позиций камер (платформы) ◦

    Набор соответствующих изображений ◦ Набор 3Д точек ◦ И их координаты внутри изображений • Карта: • Система координат • Траектория машины Вывод фазы обучения
  32. Вывод фазы обучения )LJXUH 9 7KH WRS YLHZ RI WKH

    FORXG RI SRLQWV DQG WKH FDPHUD SRVHV SURGXFHG E\ 6I0 DOJRULWKP IURP UHDO ZRUOG GDWD VHW LQ QRUPDO H[SHULPHQWDO FRQȪJXUDWLRQ
  33. • Сначала потоки обрабатываются независимо • Когда мы можем найти

    соответствия между двумя камерами: ◦ Мы рассчитываем разницу в масштабе между двумя БД ◦ Мы переводим их в одну систему координат От одной к двум камерам
  34. • Рассчитанная траектория отдаляется от реальности со временем: ◦ Аккумуляция

    ошибок ◦ Дрейф масштаба • Результат: Два прохода по одному и тому- же месту не сойдутся на карте Замыкание петель
  35. • Находим кадры одного и того-же места • Находим соответствия

    между ними: ◦ Две соответствующие 2Д точки соответствуют одной 3Д точке • Мы объединяем их дорожки • И проводим глобальную оптимизацию Замыкание петель
  36. Позиционирование по видео: Фаза позиционирования

  37. • Мы хотим знать местоположение машины на карте: ◦ Используя

    два изображения на карте ◦ И визуальную БД ◦ И предыдущую позицию (если есть) Фаза позиционирования
  38. • Выявление интересных точек в текущем кадре • Ищем в

    базе набор изображений близких к текущей позиции ◦ Или используем всё • Ищем соответствия между точками в текущем кадре и в изображениях из базы • Оставляем изображение с наибольшим количеством соответствий Поиск эталонного изображения
  39. • Каждая 2Д точка в эталоне соответствует 3Д точке в

    базе • Значит мы имеем соответствия между 2Д точками в текущем изображении и 3Д точками из базы • 3 3Д точек достаточно что-бы рассчитать позицию • Добавляем RANSAC поверх этого • И улучшаем резултат с помощью Левенберга-Марквардта Расчёт текущей позиции
  40. Заключение

  41. • Точность: 2 см Прототип был проектирован в реальных условиях:

    • Во время «Challenge Bibendum» в Берлине: ◦ 5 дней ◦ Инциденты: 1 баг, 1 велосипедист, 1 интерблокировка машин • В госпитале в Клермон-Ферране: ◦ 6 месяцев Результаты
  42. EasyMile: http://easymile.com Стартап EasyMile Video: https://vimeo.com/137217228