Ваш подход основан на некоторых надуманных предположениях.
Трилатерация определяет положение в пространстве на основе трех (или четырех, если работает в трех измерениях) измерений расстояния до известных местоположений. Триангуляция определяет положение в пространстве на основе трех угловых (в каком направлении идет сигнал) измерений до известных местоположений. Три узла Raspberry PI зафиксированы в пространстве, и у вас есть некоторая система измерения, в которой известны ваши (x, y (z)) позиции для каждого.
У вас есть три значения мощности сигнала в некоторых единицах мощности (скажем, дБм), и вы хотите, чтобы они были показателем расстояния до конкретного приемника. Проблема в том, что если вы не делаете это в большой пустой комнате, это не очень хороший прокси. РЧ-сигналы отражаются от некоторых предметов, создают небольшие помехи, тени и прочие забавные вещи. В зависимости от того, насколько загромождена ваша среда, это может сделать точность вашего результата трилатерации плохой или совершенно бесполезной.
Предполагая, что вы работаете на пустом складе, сначала вам нужно выбрать некоторую систему координат, выполнить некоторые измерения и назначить местоположения своим узлам. Обнуление одного узла упрощает одно из ваших измерений, вам просто нужно сделать относительные измерения по отношению к другим. Убедитесь, что ваши оси X и Y перпендикулярны.
Затем вы захотите сгенерировать некоторые данные, которые коррелируют RSSI с расстоянием. То есть отойдите на известное расстояние от узла и запишите значение RSSI. Если вам повезет, это измерение будет одинаковым для каждого из ваших узлов. Может и не быть - не все радио созданы одинаково. Кроме того, не все антенны излучают мощность равномерно в каждом направлении. Используйте эти данные и немного взмахов руками, чтобы приблизить расстояния от известных местоположений узлов; оттуда остальная часть реализации должна быть прямой геометрией (как, несомненно, изложено вики).
person
Mikeb
schedule
21.11.2014