2014-11-21 32 views
0

我正在嘗試通過其藍牙強度(RSSI值)來查找用戶。如何使用三角定位法指定用戶使用3個節點的位置?

我有3個Raspberry PI,每個都收集用戶的信號強度。比方說,返回的節點:

node1 = 65 
node2 = 70 
node3 = 75 

我怎麼會覺得通過三角測量和銷用戶指向他們的地圖,並輸出RSSI值嗎?

我研究了TrilaterationCeva's Theorem,但不知道如何實現它們。

我不確定如何定位環境中的節點,我給主節點定位一個x = 0 y = 0的位置,我該給其他兩個節點做些什麼?

回答

2

你的方法是基於一些脆弱的假設。

三邊測量是基於三個(或四個,如果在三維空間中工作)距離測量到已知位置來確定空間位置。三角測量是基於三個角度(信號來自哪個方向)測量到已知位置來確定空間位置。三個Raspberry PI節點固定在空間中,並且您有一些測量系統,您可以知道每個位置的(x,y(z))位置。

你所擁有的是某些功率單位(dBm,比如說)的信號強度的三個值,並且你希望它代表到特定接收機的距離。問題是,除非你在一個空蕩蕩的大房間裏這樣做,否則它不是一個特別好的代理。射頻信號從某些方面反彈出來,形成一些干擾節點,陰影和各種有趣的東西。根據環境的混亂程度,這可能會導致三角測量結果的準確性變差,或者完全沒有價值。

假設你在一個空倉庫工作,首先你要挑選一些座標系,並提出一些測量,並指定地點的節點。使一個節點爲零可以簡化您的一個測量,您只需要對其他測量進行相關測量。確保你的X和Y軸是垂直的。

然後,您需要生成一些將RSSI與距離相關聯的數據。也就是說,走距離節點已知距離並記下RSSI號碼是什麼。如果幸運的話,這個度量對於每個節點都是一樣的。它可能不是 - 並非所有的收音機都是平等創造的。而且,並非所有天線在每個方向上均勻地輻射功率。使用這些數據和一些handwaving來近似已知節點位置的距離;從那裏開始,其餘的實現應該是直接的幾何體(如毫無疑問已經佈置的維基)。

+0

是的,並且還分配在不同的方向上,距離的強度是不同的......更不用說是否有另一個天線存在(甚至是接收器的一個),這可能會使事情變得相當麻煩 – Spektre 2014-11-22 09:21:01

+0

Hi @Mikeb。這篇文章超過1.5歲,現在技術有任何改進,以便在上述情況下獲得準確的結果? – 2016-08-12 12:36:25

1

由於Mikeb回答狀態的方法來從信號強度定位裝置是不是一個好辦法(除非你有非常多的節點,並且希望只是找到像電話細胞最接近的節點位於無GPS)

另一種方法是測試爲你的距離或電子要大/速度不夠快,這個任務信號

  • 的旅行時間,滿足您所需的精度

    1. 你有已同步的時間
    2. 發送時間戳數據包到裝置
    3. 發送所有上定位在單個時間(time_of_receive)從每個節點設備(或連續時間信號)
    4. (從每個已知節點之一)得到的3倍3 + 1次至裝置,其中所述位置是想要的
    5. 轉換時間差爲距離
      • 更大時移較長距離...
      • dtime = time_received_from_node-time_of_receive
      • 如果y ou知道發送時間,那麼很容易(dist = c * dtime)+/-環境對信號速度的影響
      • 如果不是(就像在GPS上一樣),那麼它比較複雜,您必須從單個節點搜索起始時間時移
      • 它是從3個節點可能的,但暴力破解攻擊的複雜性是可怕所以更多的節點是更好
      • 如果您的數據傳輸信道是不同步的(或延遲),則精度還可以是差短距離
    6. 當你得到3個距離然後就解決3個球的交集
      • 中心節點和半徑是所計算的距離
      • 你應該一些安全值,如果沒有交點被發現由於錯誤地測量時間添加到半徑
+0

請注意,1微微秒約300米,典型的藍牙範圍約10米。這意味着您需要納秒級的時間分辨率 - 然後您必須擔心漂移和處理時間差異,這往往會導致您無法進行飛行時間測量。儘管理論上有可能! – Mikeb 2014-11-25 17:55:47

+0

@Mikeb是的,我知道,但這是我知道的唯一可靠的方式。它可以通過FIFO緩衝接收完成,但您需要高分辨率時序和正確的硬件設置。可能回聲定位更適合這項任務,但這與這個問題不一致。我的老式20MHz i8051回聲器的分辨率高達7mm – Spektre 2014-11-25 21:05:18