Android, как получить положительное и отрицательное значение оси X Ibeacon? - PullRequest
1 голос
/ 02 апреля 2019

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

Это что-то похожее на навигацию по карте Google, я хочу показать указатель на область круга с горизонтальной линией, поэтому перед этим я хочу узнать, как получить положительный или отрицательный X-axis Ibeacon.

enter image description here

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Есть решения этой проблемы.но они сложны, и мы не только ответим простым фрагментом кода в ответе StackOverflow.

Основная проблема заключается в том, что сигналы маяка являются всенаправленными.Таким образом, если вы оцените, исходя из силы сигнала маяка, что вы находитесь на расстоянии 3 метра, вы не знаете, в каком направлении.Что касается 2D-оси в вашем вопросе, вы не знаете, находитесь ли вы слева или справа.

Вторая проблема заключается в том, что, как только вы преодолеете 1-3 м, шум при измерении сигнала становится достаточно высоким, что делаетошибка в оценке расстояния также высока. Это приводит к тому, что такие методы, как трилатерация, плохо работают даже на таких умеренных расстояниях.

Для двумерного внутреннего помещения общим решением является использование отпечатков RSSI.Для этого требуется набор обучающих данных, в котором вектор относительных уровней сигналов каждого маяка записывается в каждой точке 2D-сетки.(То же самое будет работать для 1D линии.) После обучения этот набор данных используется для поиска местоположения.Создайте новый вектор для относительных уровней сигналов каждого маяка.Затем найдите в тренировочном наборе совпадение ближайшего вектора.Это дает вам вашу позицию.

1 голос
/ 02 апреля 2019

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

Итак, что нужно вашему мобильному приложению: 1) Знать положение каждого маяка (например, х, у) перед рукой. Эти позиции могут быть произвольными, если они последовательно применяются ко всем маякам в системе координат

2) Сканирование рекламных данных каждого маяка, которые должны включать RSSI этого маяка. Вы можете использовать это для оценки расстояния каждого обнаруженного маяка от вашего телефона.

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

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

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