- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отображением стрел занимаются классы 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 и отдает данные планшету, который отображает их в красные стрелы дополненной реальности (КСДР). Ссылки на ролики испытаний приведены ниже. Ролики сняты в Летнем саду в будний день в обед, поэтому народу было не много, что избавило меня от ненужных приключений и дало изумительный фон с элементами античной обнаженки. Можно смотреть даже детям.

Первый [11],
второй [12],
третий [13]
и еще [14],
и еще [15],
и еще [16].

Тем, кто не любит смотреть видео, рекомендую посмотреть фото (в полном разрешении, большой объем файлов): 1 [17], 2 [18], 3 [19], 4 [20], 5 [21], 6 [22], 7 [23], 8 [24] и 9 [25].

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

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

Автор: Игорь Царик (Igor Tsarik)

Источник [29]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/265335

Ссылки в тексте:

[1] здесь: https://habrahabr.ru/company/byyd/blog/303480/

[2] здесь: https://habrahabr.ru/company/google/blog/309876/

[3] ранее: https://habrahabr.ru/post/323638/

[4] Mesh: https://habrahabr.ru/company/vasexperts/blog/333998/

[5] здесь: https://habrahabr.ru/post/255625/

[6] здесь: https://habrahabr.ru/company/masterkit/blog/256931/

[7] github.com/xnzr: https://github.com/xnzr

[8] разные видео: https://www.youtube.com/channel/UCO6vbgRx703M1wbkMN73zBQ

[9] github.com/xnzr/xnzr-tango: https://github.com/xnzr/xnzr-tango

[10] мозгом: http://www.braintools.ru

[11] Первый: https://www.youtube.com/watch?v=1cGraYWEAYw

[12] второй: https://www.youtube.com/watch?v=fG4SdDxfe5s

[13] третий: https://www.youtube.com/watch?v=ZLvfgW1T5pk

[14] и еще: https://www.youtube.com/watch?v=Ffk5X3jXvv4

[15] и еще: https://www.youtube.com/watch?v=8hmWTg8V8hg

[16] и еще: https://www.youtube.com/watch?v=kDlUtPiTJvU

[17] 1: https://habrastorage.org/webt/59/db/20/59db201d4d841074422292.png

[18] 2: https://habrastorage.org/webt/59/db/20/59db201c949fc262222488.png

[19] 3: https://habrastorage.org/webt/59/db/20/59db2021dee0e559677769.png

[20] 4: https://habrastorage.org/webt/59/db/20/59db20220b41f177231563.png

[21] 5: https://habrastorage.org/webt/59/db/20/59db2027ceebd920877088.png

[22] 6: https://habrastorage.org/webt/59/db/20/59db202810702273095749.png

[23] 7: https://habrastorage.org/webt/59/db/20/59db202e611d2175348701.png

[24] 8: https://habrastorage.org/webt/59/db/20/59db202ea6b7d595828758.png

[25] 9: https://habrastorage.org/webt/59/db/20/59db20321e211384266851.png

[26] здесь: https://habrahabr.ru/post/332746/

[27] здесь: https://habrahabr.ru/post/337608/

[28] Ktator: https://habrahabr.ru/users/ktator/

[29] Источник: https://habrahabr.ru/post/339586/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best