Инструменты для определения точного местоположения при использовании ibeacons

Мы работаем с розничным клиентом, который хотел бы знать, поможет ли использование нескольких iBeacons в магазине отслеживать точное местоположение покупателя, когда он находится внутри магазина (конечно, если у него установлено клиентское приложение).

Я хотел бы знать, какие программные инструменты уже доступны для этой цели?

Что ясно, так это то, что на базовом уровне местоположение устройства может быть определено на основе его относительного расстояния от нескольких (по крайней мере, 2) iBeacons. Если да, то нет ли инструментов, которые помогают в этом?

Спасибо


person praveen_r    schedule 07.01.2014    source источник
comment
На странице справочного центра четко указано, что вопросы, в которых нас просят порекомендовать или найти инструмент, библиотеку или любимый сторонний ресурс, недоступны. тема для Stack Overflow, поскольку они, как правило, привлекают самоуверенные ответы и спам; см. раздел с нумерованным списком, пункт №5.   -  person Ken White    schedule 08.01.2014
comment
LocationWithCenterOfGravity с использованием трех маяков   -  person Vishnu Prabhu    schedule 07.03.2016


Ответы (12)


Очевидно, что это вряд ли будет хорошо работать из-за несоответствия значения RSSI (сигнал Bluetooth). Тем не менее, это направление, в котором вы можете пойти (адаптировано из множества исследований stackoverflow):

Фильтр RSSI

Я использую скользящий фильтр всякий раз, когда маяки ранжируются, используя kFilteringFactor, равный 0,1:

rollingRssi = (beacon.rssi * kFilteringFactor) + (rollingRssi * (1.0 - kFilteringFactor));

И я использую это, чтобы получить скользящее значение Точности (в метрах). (Спасибо, Дэвид!)

- (double)calculateAccuracyWithRSSI:(double)rssi {
    //formula adapted from David Young's Radius Networks Android iBeacon Code
    if (rssi == 0) {
        return -1.0; // if we cannot determine accuracy, return -1.
    }


    double txPower = -70;
    double ratio = rssi*1.0/txPower;
    if (ratio < 1.0) {
        return pow(ratio,10);
    }
    else {
        double accuracy =  (0.89976) * pow(ratio,7.7095) + 0.111;
        return accuracy;
    }
}

Рассчитайте XY с помощью трилатерации (маяки 1, 2 и 3 являются подклассами маяков с предустановленными значениями X и Y для местоположения и расстояния, которые рассчитываются, как указано выше).

float xa = beacon1.locationX;
float ya = beacon1.locationY;
float xb = beacon2.locationX;
float yb = beacon2.locationY;
float xc = beacon3.locationX;
float yc = beacon3.locationY;
float ra = beacon1.filteredDistance;
float rb = beacon2.filteredDistance;
float rc = beacon3.filteredDistance;

float S = (pow(xc, 2.) - pow(xb, 2.) + pow(yc, 2.) - pow(yb, 2.) + pow(rb, 2.) - pow(rc, 2.)) / 2.0;
float T = (pow(xa, 2.) - pow(xb, 2.) + pow(ya, 2.) - pow(yb, 2.) + pow(rb, 2.) - pow(ra, 2.)) / 2.0;
float y = ((T * (xb - xc)) - (S * (xb - xa))) / (((ya - yb) * (xb - xc)) - ((yc - yb) * (xb - xa)));
float x = ((y * (ya - yb)) - T) / (xb - xa);

CGPoint point = CGPointMake(x, y);
return point;
person rmooney    schedule 08.01.2014
comment
Спасибо Дункан. Rmooney, спасибо за пример кода! Вы уже развернули это в реальном сценарии? Мне интересно, насколько это надежно и готово ли оно к прайм-тайму? Как вы знаете, все остальное, что мы создаем для приложения, основанного на местоположении, рухнет, если оно не будет надежным. Спасибо еще раз. - person praveen_r; 10.01.2014
comment
Я провел с ним несколько тестов и нашел его ненадежным, но расчетное местоположение менялось в зависимости от моего движения (движение вправо увеличивало x, движение вперед увеличивало y). Значения были слишком далеки. Я прочитал в сообщении на YouTube, что Estimote утверждала, что они сделали это точно, но они не объяснили, как этого добиться, когда я связался с ними. - person rmooney; 10.01.2014

Самый простой способ получить точное местоположение — поместить один iBeacon в каждую интересующую вас точку, затем заставить приложение, поддерживающее iBeacon, сравнить поле «точность» (которое фактически дает вам приблизительную оценку расстояния в i метров) и предположить, что пользователь находится в точке iBeacon с самым низким значением «точности». Ясно, что этот подход потребует большого количества iBeacon, чтобы определить точное местоположение на большом плане этажа.

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

Если вы хотите попробовать это сами, то вы должны понимать, что беретесь за научный проект, и может потребоваться много времени и усилий, чтобы осуществить его с неизвестными результатами.

person davidgyoung    schedule 07.01.2014
comment
Спасибо за ответ! Это немного облом, потому что подобный сценарий — один из многих, которые должен был включить iBeacon, но теперь (основываясь на вашем ответе и отсутствии решения) кажется, что это вряд ли готово к прайм-тайму! Знаете ли вы, что Apple собирается сделать это проще в будущем? - person praveen_r; 08.01.2014
comment
iBeacons очень полезны для многих случаев использования, даже если они не для того, который вы имеете в виду. Всегда возможно, что у Apple есть что-то еще в запасе, но мне кажется маловероятным, что это решит ваш вариант использования с iBeacons, учитывая известное ограничение технологии. - person davidgyoung; 08.01.2014
comment
@badri_cr Я бы не согласился с вашим комментарием о том, что «это один из многих, которые должен был включить iBeacon» - насколько мне известно, Apple никогда не упоминала о трилатерации, но это то, за что, в частности, ухватились сайты технических новостей. к. В документации Apple даже прямо говорится, что нельзя полагаться на значение accuracy, потому что оно... неточно. К счастью, я думаю, что большинство вариантов использования можно удовлетворить, просто зная приблизительную близость к конкретным маякам. - person James Frost; 17.01.2014
comment
@badri_cr Я также согласен с Джеймсом, и Дэвид дал более чем идеальный ответ и объяснение того, что можно сделать, а что нельзя. Тот факт, что технология не предназначена для точного определения местоположения в помещении, не означает, что она не готова к использованию в прайм-тайм. Если вы действительно ищете местоположение в помещении, вы можете получить лучшие результаты, используя любую из доступных технологий, включая Wi-Fi. - person John Doe; 13.02.2014

Точное местоположение вряд ли достижимо, но что-то в пределах некоторых значений допуска, безусловно, возможно. Я еще не проводил обширных испытаний этого, но на небольшой площади 3x4 м с тремя маяками вы можете получить хорошее позиционирование в идеальных ситуациях, проблема в том, что у нас обычно не бывает идеальных ситуаций!

Трудная часть — получить точное расстояние от приемника до iBeacon, RSSI (уровень принятого сигнала) — единственная информация, которая у нас есть, чтобы преобразовать ее в расстояние, мы используем измерение, основанное на известных уровнях сигнала на разных расстояниях от передатчика. например Цю Т., Чжоу Ю., Ся Ф., Цзинь Н. и Фэн Л., 2012 г.. Этот бит работает хорошо (и уже реализовано со средней точностью в iOS SDK), но, к сожалению, условия окружающей среды, такие как влажность и попадание других объектов (например, людей) между приемником и передатчиком непредсказуемо ухудшают сигнал .

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

Трилатерация в основном одинакова, что бы вы ни делали, я использовал версию Gema Megantara. Для дальнейшего улучшения позиционирования потребуется метод, учитывающий условия окружающей среды, например, Хё-Сон и Вонпиль, 2009 г..

person Chris Thomson    schedule 31.03.2014

Решением является метод под названием трилатерация. Об этом есть приличная статья в вики.

Если вы предполагаете, что все маяки и приемник находятся в одной плоскости, вы можете игнорировать размер Z, и он упрощается до кругов.

Математика все еще какая-то грязная. Вам придется выполнить некоторую матричную математику для позиций маяков, чтобы сместить один маяк в исходное положение и поместить второй маяк на ось x, а затем применить обратную матрицу к результату, чтобы преобразовать его обратно в «реальное». "координаты.

Большая проблема заключается в том, что значение «точности» (также известного как расстояние) далеко не точное. Даже на широком открытом пространстве без помех сигналы расстояния сильно различаются. Добавьте любые помехи (например, от того, что вы держите телефон ровно), и становится хуже. Добавьте стены, мебель, металлические поверхности, других людей и т. д., и все становится действительно шатким.

У меня есть это в моем списке вещей, чтобы написать код трилатерации, измерить сетку во дворе (когда потеплеет), взять рулетку и провести некоторые тесты.

person Duncan C    schedule 08.01.2014

Проблема со всем этим заключается в том, что сигнал RSSI, который вы получаете, чрезвычайно изменчив. Если вы просто возьмете необработанный RSSI, вы получите очень ненадежные ответы. Вам нужно как-то обработать полученные данные, прежде чем запускать их через какие-либо триангуляции, а это означает либо 1) усреднение, либо 2) фильтрацию (или и то, и другое). Если вы этого не сделаете, вы можете получить «НЕМЕДЛЕННЫЙ» ответ близости, даже если вы находитесь в окраинных областях.

person TNBtech    schedule 14.01.2014

Bluetooth Low Energy (4.0) сам по себе не является надежной технологией определения местоположения и картографирования в помещении, он, скорее всего, станет частью технологии определения местоположения внутри помещений, во многом так же, как сигналы Wi-Fi используются для повышения точности сигналов GPS в городах. . В настоящее время iBeacon действительно можно использовать только для довольно туманных узлов в помещении, таких как «обувной отдел» (при условии, что это большой магазин).

Я ожидаю, что через службу iBeacon (или что-то с альтернативным названием) Apple работает над внутренней локацией с высоким разрешением для разработчиков приложений. Вам не нужно ничего искать дальше, чем их покупка WifiSLAM в середине 2013 года в качестве доказательства. Пока что iBeacon и любая другая технология исключительно BLE не даст вам точного местоположения в помещении. (Возможно, если вы покроете магазин маяками и объедините вероятностную модель с физической моделью, вы сможете это сделать, но не с какой-либо практически реализуемой стратегией маяков.)

Также следует отметить обсуждение версии нового поколения Nokia BLE HAIP (High-Accuracy Indoor Positioning) http://conversations.nokia.com/2012/08/23/new-alliance-helps-you.-найти-иголку-в-стоге-сена/

По сути, точное позиционирование в помещении еще не существует в дикой природе, но оно вот-вот...

person James Flynn    schedule 10.02.2014
comment
По существу точного позиционирования в помещении пока не существует в дикой природе, но оно вот-вот... - Если вы не работаете в армии, если хорошо зарекомендовавшие себя и зрелые технологии наружного позиционирования (GPS) далеки от точности и стабильности, как более простой, основанный на чрезвычайно низкой энергии? - person John Doe; 13.02.2014
comment
Я настроен скептически, учитывая, что анонс Nokia был сделан примерно 18 месяцев назад. Для Джона Доу, я не думаю, что решение будет простым, я думаю, что оно будет довольно сложным. - person Zach Dennis; 21.05.2014

Мы использовали маяки карданного подвеса для локализации в помещении на площади 6 х 11 м. Колебание RSSI было серьезной проблемой, которую мы решили с помощью фильтрации частиц. Код проекта можно найти по адресу https://github.com/ipapapa/IoT-MicroLocation/< /а>. Репозиторий github содержит приложение iOS, а также сервер Apache Tomcat на основе Java. Несмотря на то, что мы получили точность до 0,97 метра, использовать маяки для целей микролокации по-прежнему очень сложно. globecom2015.pdf" rel="nofollow">http://people.engr.ncsu.edu/ipapapa/Files/globecom2015.pdf, который был принят к публикации на конференции IEEE Globecom.

person Fahim Zafari    schedule 22.10.2015

Определить позицию пользователя на основе окружающих iBeacons, которые должны оставаться в фиксированных положениях, можно с помощью триангуляции уровня сигнала. Взгляните на этот тезис о позиционировании Bluetooth в помещении ;-)

person Philip    schedule 11.01.2014

Конечно, если вы можете измерить точное положение (широта/долгота) любого отдельного iBeacon - это может быть включено в сообщение маяков. Но предполагая стационарное местоположение - очевидно, это нужно сделать только один раз. Своего рода независимое упражнение по «калибровке», которое само по себе может быть автоматизировано.

person bart holmberg    schedule 15.05.2014

Обсуждая позиционирование, вам нужно сначала более конкретно определить свои потребности.

Специалисты по компьютерам/GPS предположат, что вам нужна точность до миллиметра, если не выше, поэтому они либо предоставят вам больше информации, чем вам нужно, либо скажут, что это невозможно [оба жизнеспособных ответа].

Однако в РЕАЛЬНОМ МИРЕ большинство людей ищут точность не более 3 футов [или 1 метр] — и, скорее всего, готовы принять точность в пределах 10 футов [т.е. визуальное расстояние].

iOS уже предоставляет вам этот уровень точности — их API дает вам расстояние как «близкое, среднее, далекое» — поэтому в пределах 10 футов все, что вам нужно проверить, это то, что расстояние «близкое» или «среднее».

Если ваши потребности выходят за рамки этого, вы можете довольно легко предоставить пользовательскую функциональность. У вас есть 32 бита информации [старший и второстепенный коды]. Этого более чем достаточно для хранения широты и долготы каждого маяка В самом маяке с использованием кодирования Мортона, http://www.spatial.maine.edu/~mark.a.plummer/Morton-GEOG664-Plummer.pdf< /а>

Пока высота [высота] не является фактором и ни один маяк не будет развернут в пределах 1 метра от другого маяка, вы можете закодировать каждую пару широта/долгота в одно 32-битное целое число и сохранить его в основном и второстепенном коде.

Используя только основной код, вы можете определить местоположение маяка [и, следовательно, телефона] с точностью до 100 метров [консервативно]. Это означает, что многие маяки в радиусе 100 метров будут иметь ОДИНАКОВЫЙ основной код.

Используя второстепенный код, вы можете определить местоположение маяка с точностью до 1 метра и местоположение телефона с точностью до 10 футов.

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

**Примечание: как упоминалось в более поздних сообщениях, внешние факторы будут влиять на мощность сигнала, но, опять же, это, вероятно, не имеет отношения к вашим потребностям. iPhone sdk предоставляет 3 «расстояния»: «близко, близко, далеко».

Далеко проблемный. Предположим, маяк с дальностью действия 150 футов. Проверьте с помощью iphone, чтобы определить, каковы идеальные два близких расстояния ... предположим, что в пределах 5 футов «близко», а в 15 футах «близко».

Если телефон A находится рядом с маяком B [которое имеет известное местоположение], то вы знаете, что человек находится в пределах 15 футов от точки X. Если есть много помех, он может быть на расстоянии 3 фута или 15 футов, но в любом случае это «в пределах 15 футов». Это все, что вам нужно.

Точно так же, если вам нужно знать, находятся ли они в пределах 5 футов, вы используете «близкое» измерение.

Я твердо верю, что 80% всех потребностей в позиционировании обеспечивается текущей схемой. Если это не так, вы выполняете свою первоначальную реализацию с ограничением в качестве доказательства концепции, а затем связываетесь с одним из многих экспертов ibeacon, чтобы предоставить последнюю часть точность.

person garyamort    schedule 30.09.2014
comment
NB: старший и младший коды имеют по 16 бит каждый, всего 32 бита. Этого недостаточно для кодирования полной долготы и широты с разрешением 1 метр, для чего потребуется около 50 бит. С 16 битами для каждого вы едва доберетесь до отметки в 1 км. Однако, если вы ограничите свои маяки небольшой частью земного шара, вы, конечно, сможете получить лучшее разрешение. - person jcaron; 04.12.2015

Я не проводил обширных исследований, которые, как я полагаю, вошли в вышеупомянутую магистерскую диссертацию Фила, но...

Есть еще одна команда, которая утверждает, что выяснила это с помощью различных алгоритмов искусственного интеллекта. См. этот пост на LinkedIn: https://www.linkedin.com/groups/6510475/6510475-5866674142035607552

Как человек, разрабатывающий маяки ( http://www.getgelo.com ), я могу поделиться из первых рук, что почти любой объект резко изменит согласованность и точность RSSI, что сделает невозможным вычисление точного положения. (Фил, я надеюсь, ты докажешь, что я ошибаюсь, я еще не читал твою диссертацию).

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

Вы можете приблизить местоположение, что делают iBeacons, и в этом они довольно плохи, но это бесцельно.

Вы можете развернуть достаточно маяков, чтобы, по сути, где бы вы ни находились в магазине, вы стояли очень близко к маяку, и вы могли быть уверены, что находитесь в проходе 5 около 20 футов (в отличие от того, чтобы быть на другой стороне). прохода, прохода 6 и 20 футов вниз). Стоимость может стать проблемой здесь.

Есть команды, которые объединяют BLE с Wi-Fi и другими технологиями для создания более точного решения для позиционирования внутри помещений.

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

person Zach Dennis    schedule 21.05.2014

Вышеупомянутая проблема может быть решена с помощью технологии, которая сочетает в себе трилатерацию Wi-Fi и данные датчика телефона. Мы получаем точность в 1 метр в правильно оборудованных помещениях, когда компании интегрируют наш SDK со своим приложением. Точность этих методов резко возросла за последний год.

person NavizonDevon    schedule 10.06.2014
comment
Причина понижения голоса: звуки придуманы для меня? Ни ссылок, ни кода, ни объяснения того, как это вообще может работать (точность в 1 метр намного точнее, чем даже у GPS, а GPS вообще не работает в помещении). - person NickG; 16.07.2015