Pull to refresh

Красные стрелы доп-реальности

Reading time 4 min
Views 7.7K


Мои читатели уже знают, что ручной пеленгатор и дополненная реальность созданы друг для друга. Простой фон из видео позволяет существенно упростить работу оператора. Тем не менее, находятся люди, которые испытывают трудности при поиске источников радио-излучения амплитудным пеленгатором с простым видео-фоном. Упрощение процесса требует более тесного комплексирования пеленгатора с "тяжелой" доп-реальностью. Несмотря на появление таких технологий, как ARKit и ARCore, наиболее доступной остается Google Tango.


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


Технология Google Tango много раз описана на Хабре, лучшие описания здесь и здесь. В нашем случае из ряда составляющих технологии используется только возможность отслеживания перемещений и ориентации (Motion Tracking). Возможность выделения плоских и других поверхностей нам, собственно, не нужна. Ведь источник, в данном случае устройство WiFi, может находиться за стеной и при этом вполне себе пеленговаться. Хотя понятно, что, если перед камерой Tango ничего нет, то и отследить перемещения и ориентацию она (Танга — она) не сможет. Может быть в будущем можно будет автоматически строить 3D-карту окружающего пространства и сохранять ее вместе с видео, как результат работы, но пока это фантастика.


Можно кратко обосновать использование для ориентации пеленгатора именно технологии визуально-инерциальной одометрии (Visual-Inertial Odometry) их лучшей точностью, по сравнению с только инерциальными системами. Данные координат и ориентации, поставляемые
устройством с Tango являются локальными, они привязаны к точке начала работы. Но, в пределах сессии, они, в отличие от инерциальных данных, обладают намного большей точностью.


Подопытным был назначен пеленгатор WiFi точек доступа, описанный ранее. Он предназначен для поиска нелегальных точек доступа (rogue AP) и устройств интернета вещей на базе WiFi. Хотя Bluetooth и давит новыми технологиями, типа Mesh, благодаря Мировой Кузнице Всего Сущего, экономически очень оправдано использование вещей на базе WiFi. Это подтверждается статьями на Хабре: здесь и здесь.


Пеленгатор на обычном Андроиде работает так:



Если кому интересно, смотрите исходники на github.com/xnzr и разные видео. К сожалению, я не профессионал в видео, и ролики не очень качественные, за что я заранее прошу меня простить. Но показать работу этого пеленгатора можно только на видео.


Начнем с железа. Первый Танго-планшет был от Google, он так и назывался — Google Tango Tablet. Сначала была эпическая история добывания сего чуда в Россию. Официально это было нельзя. Я был вынужден завести фейковый аккаунт на Gmail из Финляндии, заказывать в Гугль-магазине из Финляндии на почтовый ящик в Финляндии. И я посчитал за счастье, что добыл девайс такой малой кровью. А вы говорите — санкции. Тогда еще никаких санкций не было, а занавес уже был. С той стороны.


Но на этом дело не кончилось. Оказалось, что USB-порт этого чуда не тянет даже малютку-пеленгатора. Пришлось изобретать внешний съемный пауер-банк для питания пеленгатора и спец-кабель для него. Выглядело это ужасно (пеленгатора на фото нет, видны только четыре его посадочные липучки 3M Dual-Lock):



Ну, к черту эмоции. Дальше все пошло хорошо. Работа над софтом затянулась, как часто бывает. И вскоре (О, слава тебе, великий Гугль и лучший друг его Lenovo) появился Lenovo Phab 2 Pro! Единственный доступный в России и, видимо, последний планшет с Google Tango. Гаджет крепко сбитый, мощный и большой, что важно для пеленгатора. При этом он дешевле гаджетов с поддержкой ARCore, в среднем, на 10 т.р. Пеленгатор сидит на нем красиво:



Поэтому Google Tango Tablet был помещен в саркофаг музей ручных ДР-пеленгаторов до лучших времен. И да пребудет с ним банк силы (power bank).


Теперь про софт. Он, как всегда, доступен в исходниках, по адресу github.com/xnzr/xnzr-tango. Суть довольно проста: если порог по разнице уровней двух антенн, означающий, что источник находится близко к нормали к плоскости пеленгатора, превышен, то в пространство втыкается красная стрела. Эти стрелы не стираются, а копятся в пространстве, что позволяет не отслеживать привязку пеленгационного параметра к местности мозгом, а ориентироваться по стрелам, висящим в пространстве.


Отображением стрел занимаются классы SagittaStorage и OpenGlCylinder.


Когда пеленгатор сообщает, что он направлен на источник WiFi, мы запрашиваем текущую "позу" нашего Tango устройства (точнее, не саму позу, а только матрицу перехода):


                    TangoSupport.TangoMatrixTransformData depthTarea =
                            TangoSupport.getMatrixTransformAtTime(pointCloud.timestamp,
                                    TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE,
                                    TangoPoseData.COORDINATE_FRAME_CAMERA_DEPTH,
                                    TangoSupport.TANGO_SUPPORT_ENGINE_OPENGL,
                                    TangoSupport.TANGO_SUPPORT_ENGINE_TANGO,
                                    0);
                    if (depthTarea.statusCode == TangoPoseData.POSE_VALID) {
                        mRenderer.addPeleng(depthTarea.matrix);
                    }

И складываем в CopyOnWriteArrayList (это многопоточная версия ArrayList).


Каждый кадр мы по очереди применяем к цилиндру сохранённые матрицы и рисуем цилиндр во всех сохранённых "позах":


    public void draw(GL10 gl) {
        for (float[] mm : mModelMatrixList) {
            mSagittaObject.setModelMatrix(mm);
            mSagittaObject.draw(gl);
        }
    }

Как я уже писал выше, единственный способ показать работу такого пеленгатора — видео. В качестве WiFi точки доступа был мой смартфон с включенной функцией общего доступа к интернет. Пеленгатор принимает пакеты Beacon Frame и отдает данные планшету, который отображает их в красные стрелы дополненной реальности (КСДР). Ссылки на ролики испытаний приведены ниже. Ролики сняты в Летнем саду в будний день в обед, поэтому народу было не много, что избавило меня от ненужных приключений и дало изумительный фон с элементами античной обнаженки. Можно смотреть даже детям.


Первый,
второй,
третий
и еще,
и еще,
и еще.


Тем, кто не любит смотреть видео, рекомендую посмотреть фото (в полном разрешении, большой объем файлов): 1, 2, 3, 4, 5, 6, 7, 8 и 9.


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


Хочу заметить, что мне помогал в части софта Михаил Лукин, он же Ktator, (за что ему огромное спасибо!), который, надеюсь, продолжит публикации на Хабре по дополненной реальности для радио-пеленгаторов. Я попробую сосредоточиться на железе.

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+9
Comments 12
Comments Comments 12

Articles