Pull to refresh

Comments 31

Как-то хочется больше технических деталей.

Одно время игрался с Parrot (правда их мини-дронами) и видел, что у них есть собственное SDK, нельзя ли его использовать, чтобы упростить разработку? Может быть там уже есть какие-то встроенные вариации SLAM? Желание самому за это сесть есть, но немного смущает порог вхождения.
Насколько я знаю, SDK как для AR.Drone, так и для Bebop (весьма интересный относительно новый дрон от Parrot) предоставляют только доступ к контроллеру, навигационным данным с ИНС, видеопотокам и конфигурации дрона. Самое продвинутое, на что способен SDK — распознавать маркеры определенной формы и цвета.

Какие технические детали Вас могли бы заинтересовать? Работа именно SLAM с одной камерой, настройка всех компонент системы, платформа?
Было бы интересно увидеть подробный tutorial, как все настроить и начать работать со SLAM (такой ~«how to get started»). Общая идея понятна и она клевая, но боюсь, чтобы сделать самому придется перелопатить некислое количество материала, а если всё собрано в одном месте, то, мне кажется, будет отлично.
в целом неплохая идея, но это конечно в рамки одной статьи не влезет, но, если это будет интересно можно подумать и над таким материалом.
Очень опасная технология, такой дрон вполне может ориентироваться на местности по обычным спутниковым картам и летать автономно, т.е. это идеальный боевой дрон-камикадзе. Очень перспективная разработка для спецслужб, но не как не для гражданки, широкому кругу лиц нельзя иметь доступ к подобным технологиям. Уже сейчас в него можно загрузить алгоритм распознавания автомобильных номеров, привязать взрыв пакет и отправить на охоту. На втором этапе, когда подтянутся вычислительные мощности и разрешающая способность камер — загрузить алгоритм распознавания лиц. Вспомните теракты в Париже — президент Франции сидел на стадионе, когда раздались взрывы, один подобный дрон и для него все могло быть кончено. Все политики будет обречены ходить под зонтиком всю жизнь, как Майкл Джексон. Хотелось бы подчеркнуть, что когда мы говорим об обычных радиоуправляемых дронах, то их легко отключить просто включив радиоглушилку. Такой автономный дрон сможет вывести из строя только ЭМИ (если микрухи дешевые — сильный радар) или боевое оружие. В первом случае могут погибнуть люди с кардиостимуляторами и выведутся из строя все электронные устройства. И еще раз, отдельно, стоит помянуть ИГИЛ, у этих ребят работает множество инженеров и это всего-лишь вопрос времени — сделать косметический ремонт подобному программному обеспечению. Сам уже давно занимаюсь многороторными ЛА и понимаю что тут до трагедий один шаг, надеюсь законодатели поспеют.
Тот редкий случай, когда я не поленился зайти в профиль и поставить минус там…
1) Если технологию можно использовать не только в гражданских целях — это еще не значит, что её нужно запрещать. Один нелепый закон может на долго затормозить прогресс, т.к. исследователи не смогут у себя в гараже собирать автономных дронов и делать их совершенней.
2) Никакой закон не запретит мне разрабатывать алгоритмы для дронов, используя виртуальные симуляции. А перенести результаты на реального дрона — дело техники.
3) Судя по попадающим в интернет новостям, несмотря на все законодательные запреты, вполне себе существуют подпольные оружейные мастерские. Наладить подпольное производство беспилотников тоже не сложно. Т.ч. законы как всегда ударят по гражданским пользователям, а преступникам, идущим на более тяжелое преступление, запрет на сборку квадрокоптера явно не помешает осуществить задуманое)
4) На данный момент и в некоторой недалекой перспективе дроны с временем автономного полета дай бог 10 минут и хилым процессором на борту не смогут быть полноценными беспилотниками.
Да я же просто не хотел чтобы людей убивали. Импульсивно, конечно, было предлагать кому-то ограничивать доступ к подобной и любой другой информации, не учтя, какие последствия это вызовет для моего аккаунта. ) А так, конечно надо ограничивать, как бы вам не нравилось. Но аккаунт жалко. Другое дело, что такое ограничение не возможно, и предлагать это было моей второй ошибкой. ) Что же, судьба видимо такая у многих ученых — сделать мир опаснее. Прогресс двигается вперед и его не остановить, технологии становятся доступнее и где-то на пол пути к сингулярности мы придем к ситуации, когда отдельный индивид ум сможет создать устройство апокалипсиса из средств создания, которые ему доступны дома. Правительство не сможет контролировать развитие технологий, значит, судьба у нас такая — существовать в условиях абсолютного, исчерпывающего контроля над человеком со стороны государства, наших мыслей, намерений. Просто судьба. Тотальный контроль. Хотелось спокойствия в мире, вот и написал. Будем жить в этом, удачи будущим поколениям! )
Весна вроде еще не наступила, хотя хрен ее знает с этим климатом, чертов технический прогресс!
UFO just landed and posted this here
Ага, как в старом анекдоте: «Но аппарат то имеется!»
Практика показывает, что монокулярные SLAM алгоритмы работают мягко говоря не очень, особенно на outdoor сценах, когда и освещение сложное и пространства большие. Навигация по одной камере работает адекватно разве что тогда, когда коптер летит высоко в небе и вся сцена является существенно планарной, а вот при полетах низко над землей возникают пробелмы с качеством построения 3D модели сцены… и это не говоря о том, что большое число подвижных объектов в сцене — это смерть для монокулярных методов.

При этом написать работающую одометрию на основе стереокамеры в разы проще.
Вы правы, в разы — это мягко говоря.
Стереопара на основе двух китайских поделок выдает после получасовой отстройки приемлемую карту глубины. А вот для монокулярного мэппинга камера нужна много лучше (дороже), да и результат будет скорее всего хуже (особенно потому, что не даст определить масштаб сцены). Думаю, монокулярную картографию надо применять только в случаях жестких технических ограничений на использование одной камеры (наш случай), или небольших требований к качеству получаемых карт, или в помещениях.
У стерекамер есть еще такое свойство, что от вибраций они раскалибровываются быстро :-) Т.ч. пара вебок на синей изоленте — это плохой выбор, в конечном счете все равно приходится брать пару хороших индустриальных камер и жестко их монтировать на какой-то крепкой платформе.
Ну и разница между работающим алгоритмом и продуктовым решением велика… там и кроме проблем раскалибровки есть масса подводных каменй.

Кстати, ранние марсоходы использовали монокулярный слам, но там сцены как раз планарные и без двигающихся объектов, и движения марсохода достаточно медленные… пожалуй это сейчас единственный кейс, где такие методы реально могут быть применимы)
Дополнительное физическое устройство нецелесообразно практически всегда, особенно в дронах. Математика гораздо дешевле, особенно на стадии серийного производства (при наличии на рынке относительно недорогих процессоров, которые могут с этим справиться, такие уже и сейчас есть).
А если кормить монокулярный SLAM данными с ИНС, где будут уже абсолютные цифры перемещения, ему сильно лучше станет? Типа как у человека вестибулярный аппарат и зрение работают в паре при ходьбе.
Очень неплохая идея, мы к ней пришли не сразу :) Но тут есть проблема с двойным интегрированием: не получится рассчитывать перемещение за короткий период только по ИНС, а на длинном периоде накапливается большая ошибка интегрирования. При ходьбе есть моменты, когда скорость ноги гарантированно равна нулю, и алгоритмы этим пользуются, чтобы скомпенсировать ошибку интегрирования ускорения.
Но по-идее можно использовать первый интеграл (скорость) для восстановления масштаба из картинки. Ускорение интергировать, положение ключевых точек (это я наверняка неправильно назвал, но суть, надеюсь, понятна) из SLAM дифференцировать, результаты приравнять. Тогда по исходной SLAM можно и положение в пространстве находить для коррекции положения в ИНС.
Проблема в том, что будет накапливаться ошибка интегрирования — значение скорости будет «уплывать» на достаточно длительном отрезке времени. Теоретически можно попробовать считать масштаб из отношения ускорений, но у меня получилось очень большое расхождение даже с использованием сглаживания и идентификации кривых на большом временном окне.
вот посмотрите, интересная работа http://www.mdpi.com/1424-8220/15/9/22003/htm
...Two approaches are presented: Position-Based Visual Servoing (PBVS) using an Extended Kalman Filter (EKF) and estimator-free Image-Based Visual Servoing (IBVS). Both use monocular visual, inertia, and sonar data, allowing the approaches to be applied for indoor or GPS-impaired environments.

ну и вообще на этом ресурсе много вкусного :)
http://www.mdpi.com/search?q=MONOCULAR
Спасибо, очень интересно! Мы сейчас занимаемся очень похожей работой и подход используем практически такой, как описано в этой статье :)
У вас в итоге получилось завести монокулярный slam? Можете для примера выложить картинки ваших результатов? 3д модель местности, траекторию?
Получилось более-менее даже облетать препятствия. К сожалению, сейчас нахожусь далеко от тех данных, как доберусь — выложу картинки.
вы использовали код из их гитхаба, я про lsd-slam? Пришлось ли что-то допиливать в нем?
Мы немного изменяли код, чтобы извлечь ковариацию позиционирования и подставлять внешнее значение позы при потере трекинга, но в целом алгоритм не трогали, он работает из коробки как надо. Возможно, Вам придётся что-то изменять, если Вы будете использовать разрешение, сильно отличное от 640х480 — некоторые параметры захардкожены.
Пришлось сделать новую запись :)

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


Зелёные линии — это траектории камеры, рассчитанные алгоритмом?
Не совсем: алгоритм не выдает путь движения камеры как таковой, только граф ключевых кадров. В узлах графа находятся собственно ключевые кадры, а ребрами соединены те кадры, которые трекер смог связать друг с другом при помощи механизма замыкания циклов (loop closure). Цвет линии показывает, насколько велика вероятность такой связи (зеленые — большая вероятность, красные — низкая).
Т.е., с некоторыми огрехами, ещё и бесплатно местоположение в пространстве получаем, если граф непрерывный. Например, чтобы в конкурсе от Крока вернуться через дверь :) Очень круто!
Собственно, SLAM и есть Simultaneous Localization And Mapping — локализация и картография одновременно. То есть, такие алгоритмы всегда выдают и карту (в каком-то виде), и местоположение. Текущее положение камеры на первой гифке отмечено красной пирамидкой.
Очень хороший результат, на мой взгляд, спасибо
Sign up to leave a comment.