Математика в относительно мирных целях

Тема насчёт триангуляции источника звука, над которой я размышлял по поводу подземного стука в подвале, приняла интересное продолжение.

В университете будем делать проект, который будет делать триангуляцию приборов, работающих с вайфаем. Работает это потому что практически в любой операционной системе вайфай-адаптер периодически задаёт вопрос в воздух -- "покажите ваши SSID!"

В этом пакете, если его отловить, довольно много данных -- так, там находится железный адрес адаптера, сила сигнала.

Так что можно уникально отследить все устройства -- а это в современном мире, в первую очередь телефоны.

Настроив триангуляцию, можно наблюдать за перемещениями устройств в реальном времени. В-общем, проект интересный должен быть.

Чешу репу на предмет следующих вопросов:

1. Мощность сигнала получается не в условных попугаях, а в децибелах. Это, насколько помню, логарифмическая шкала? Как сподручнее всего переводить децибелы в попугаи интенсивности, с которыми можно работать?
2. Математика триангуляции. Как я понимаю, ЭМ радиация подчиняется тем же законам, что и звук -- т.е. интенсивность падает пропорционально квадрату расстояния? А как сподручнее всего находить, где, например, между сенсорами находится источник? Как я понимаю, там получится система уравнений? То-есть, если интенсивность, записанная на сенсоре 1, составляет 25, а на сенсоре 2 -- 100, то получится, что дистанции соотносятся как квадратный корень из четырёх, решаем это уравнение, получаем точку, через которую можно провести прямую, перпендикулярную линии, проведённой через сенсоры? И так четыре раза? Найти, где все линии пересекаются? Или я перемудриваю?
3. ОК, найти местоположение сигнала ВНУТРИ квадрата, описанного четыремя сенсорами, я приблизительно представляю, как (если правильно понимаю пункт 2). А реально ли найти местоположение источника сигнала, расположенного ЗА пределами квадрата? Вот как мне кажется, уже нет. Во всяком случае, сходу не придумывается.
1) Проще работать в dB. Если все-таки хочется работать с Ваттами, то есть формула dB= 10 * log(P1/P2). Есть еще dBm в этом случае P2 = 1 mW.
2) Самый гемморой начнется, когда надо будет учитывать переотражения. Может так случится, что прямой сигнал окажется слабее отраженного, это значит что придется довольно точно мерять тайминги, а это уже нетривиально, потому что надо оперировать на уровне наносекунд или меньше.
3) Можно, разницы никакой нет. Если внутри квадрата, то сила сигнала будет примерно одинакова со всех четырех датчиков. Если вне, то сила сигнала с 2 или 3 датчиков будет значительно слабее.
Посмотрим, что скажут люди у которых с математикой лучше чем у меня.
> Проще работать в dB

Вот не знаю -- оно же нелинейное? Тогда в линейное уравнение не пихнёшь.
Не могу сказать относительно конкретной задачи, не хватает данных, но для примера есть у тебя линия, состоящая из первого звена с потерей 5 dB, усилителя 10 dB и второго звена с потерей 15 dB. Выходной сигнал будет -5+10-15, то есть -10dB. Еслы ты все будешь мерять и считать в Ваттах или в Вольтах, то так просто это посчитать не получится. Опять же всей информации у меня нет, и что тебе удобнее я не знаю.
>>1. Мощность сигнала получается не в условных попугаях, а в децибелах.
-
приемник ловит вполне конкретные ватты. И из усилителя там тоже не дб выходят.
---
>> падает пропорционально квадрату расстояния?
-
да, но есть нюанс - отражения
---
>>А реально ли найти местоположение источника сигнала, расположенного ЗА пределами квадрата?
-
мм..... база маловата. т.е. задача "определить точку по известной задержке сигнала от трех точек" решается бытовым навигатором, но там база имеет неслабую ширину.
В реальности же задача пеленгации (а разговор именно о ней) решается опять же максимально широкой базой, ну и в данном случае нужна пассивная ФАР.
т.е. получаем от двух точек пару векторов, считаем землю плоской и решаем простой треугольник.
> приемник ловит вполне конкретные ватты. И из усилителя там тоже не дб выходят.

Это понятно -- просто интерфейс таких запросов к вайфаю выдаёт мощность в дБ
http://radiorf.ru/monitoring

в смысле не надо строить систему на бытовых контроллерах.
Хотя .. можно и на них, наверняка там где-то в даташите есть указание как снять ватты

Edited at 2016-10-26 03:26 pm (UTC)
У меня ж наколенный студенческий проект, а не серьёзное дело с соответствуюзим юджетом
значит надо сделать наколенную ФАР. Сдается мне, это будет проще.
фазированная антенная решетка/phased array radar system
но по моему я неправильно термин употребляю, поскольку у вас все пассивное и только на прием.
Тогда это элементарно переводится в Ватты. Из формулы dBm = 10*log(P/1mW) получаем P = 10^(dBm/10) mW.
(подумав) раз мы говорим о пеленгации, то нам надо получить два вектора с двух точек. Если у нас есть только задержка сигнала (ну или падение мощности), то надо всего лишь 2 группы по 3 точки и не напрягать мозг. Вот только .. скорости у радиоволны высоковаты и все равно нужен фактически дамп эфира с трех точек с штампами очень точного времени, ну и уровнем сигнала с каждой.
Оно так (по уровню сигнала) может работать только если мобильник с вайфаем сферический (вернее оборудован антенной со сферической диаграммой направленности) и находится в вакууме (в смысле на пути распространения сигнала нет ничего этот сигнал поглощающего, а в окрестностях нет ничего сигнал отражающего.
Придется или городить измерение задержек, что очень не просто, или ставить направленную приемную антенну и брать азимуты на этот самый вайфай. По азимутам из 2х известных точек задача легко решается, как графически (построениями на карте) так и математически.
Осознаю :(

Прототип будет комнатный -- работать внутри большого зала.

Моя самая большая головная боль -- потенциальные отражения.
>>Моя самая большая головная боль -- потенциальные отражения.
-
придется писать трафик и потом выкидывать отражения - у которых задержка между точками будет ощутимо выше.
С учетом, того, что рядом с мобилой обычно несколько десятков килограмм биологических тканей находится... Конструкция мне видится не работоспособной.
С учетом переотражений (и поляризации, которая и так может отличаться у разных роутеров - не будешь же всем ставить антенны параллельно, так ещё и при отражении от "рельефа комнаты" поляризация может портиться; а антенна портативного устройства вообще ориентирована абы как) точность будет скорее всего очень низкой. А это, в частности, означает что для четырёх сенсоров задача вообще может не иметь математического решения. А раз так - можно хоть перебором "по площади", в поисках наименьшего отклонения от расчёта.

> А реально ли найти местоположение источника сигнала, расположенного ЗА пределами квадрата?

Математически - вроде как да. Практически - вряд ли, ибо см. выше.
Умозрительно рассуждая - если заранее требовать чтобы поляризация исходного сигнала была у всех одинакова (не знаю насколько это практически реализуемое упрощение), то любой сигнал со сбитой поляризацей есть следствие переотражения, а значит его можно отфильтровать. А значит можно вернуться в плоскость исходной упрощенной задачи.
> (не знаю насколько это практически реализуемое упрощение)

Нереализуемое. Телефоны у всех лежат в произвольных положениях, значит, ориентация антенны случайна и поляризация тоже.
Всё равно -- если бы телефоны были одного производителя, то ещё туда-сюда. А у произвольных изготовителей ориентация антенны неизвестна -- может, она там вдоль лежит, а может, поперёк.
Сегодня попробуем проверить эту теорию -- передвигать один сенсор, смотреть, как сигнал меняется.

Пара прикидок есть -- например, считать только самый мощный сигнал -- вероятность того, что отражённый сигнал будет мощнее оригинального, КМК, довольно невысока.
> например, считать только самый мощный сигнал

Стоп. Чтобы отфильтровать отраженный сигнал от прямого по мощности, нужен грубо говоря "прямой доступ к антенне" (и при расстояниях порядка метров такая фильтрация потребует нетривиальной математики, в силу перекрытия сигналов по времени).
У тебя же, как мне показалось, есть грубо говоря что-то, что выдаёт вайфайный чип - и ты не только не можешь повлиять на то, как он это считает, но в общем случае даже не имеешь достоверной информации, децибеллы ли это, или просто какие-то "попугаи". То есть, чип тебе выдал "у сети с SSID таким-то уровень -83дБ" - и всё, это единственная цифра, которая у тебя есть.

Потому что если бы у тебя был "доступ к антенне", и достаточное временнОе разрешение чтобы с этим работать, можно было бы замахнуться на прямой учёт задержек - их, тьфу-тьфу, колбасить так же как мощность не должно. Но это вряд ли.

...можно для начала взять аппарат, потаскать его по десятку "контрольных точек" комнаты, и построить графики относительной мощности (по несколько отсчётов в каждой точке, для разных "поз" телефона). Сразу будет видно, сильно ли колбасит мощность, или зависимость хорошая.
Ну вот примерно этим и будем заниматься.

Теперь по поводу того, что ловится.

Если, например, ловятся несколько таких beacon frames (не знаю как по-русски), у каждого есть параметр -- мощность сигнала. Использовать -- только наибольший из полученных. Остальные считать мусорными.

Чип выдаёт измерения в dBm.
Сомневаюсь что это отражённые сигналы, может быть "повторы" (на случай помехи). Смотреть надо - если мощность сильно отличается, брать самый мощный, а если наоборот близкая - может, наоборот лучше будет усреднить...
> Сомневаюсь что это отражённые сигналы

Совершенно правильно сомневаешься :)

Это, конечно, повторы кадров -- они регулярно высылаются. Тут просто на случай, если поймается отражение, а основной сигнал почему-то нет.