如下內容爲咱們內部人員供稿,著做權歸做者全部。商業轉載請聯繫咱們得到受權,非商業轉載請註明出處。
對於目前最主流的室內Wi-Fi指紋定位技術而言,採集Wi-Fi指紋的覆蓋度和新鮮度是決定定位精度最重要的因素。受到成本和導航需求等因素的限制,騰訊地圖定位平臺目前提供的室內定位服務只對商場的走廊部分採集了指紋信息。對於面積更大的商場店鋪,目前很難人工採集Wi-Fi指紋。本文介紹了咱們如何利用過去積累的定位日誌數據,實現了室內店鋪Wi-Fi指紋的自動填充,並用於室內定位服務,從而提高了咱們室內定位服務的覆蓋度和服務質量。android
在室內環境中,因爲建築對信號的遮擋,GPS信號很是微弱甚至探測不到,沒法用於定位服務。而隨着Wi-Fi技術的普及和普遍部署,基於Wi-Fi指紋的定位技術目前已經成爲室內最普適、最基礎的定位解決方案。然而,對於Wi-Fi指紋定位技術而言,採集指紋的覆蓋度和新鮮度是決定定位精度的最重要的因素。ide
圖1. 北京歐美匯購物中心某層人工採集Wi-Fi指紋覆蓋示意圖
目前,騰訊地圖定位平臺對國內的主要商場都提供了基於Wi-Fi指紋的室內定位服務。然而,受到指紋採集成本和導航需求等因素的限制,目前指紋採集主要集中在商場走廊區域。圖1展現了在北京歐美匯購物中心某一層中咱們採集的Wi-Fi指紋的覆蓋狀況。從圖中咱們能夠看到,對於商場內主要的走廊區域,咱們都進行了指紋的採集。然而,對於範圍更大的店鋪部分,目前採集Wi-Fi指紋的流程很難覆蓋到。這種指紋覆蓋不全的狀況會致使咱們沒法在整個商場內保證定位質量的一致性。當有用戶在店鋪內發起定位請求時,因爲店鋪內缺失Wi-Fi指紋信息,理想的狀況是剛好在店鋪門口採集的Wi-Fi指紋與用戶請求定位時掃描到的Wi-Fi信息比較相似,將用戶定位在店鋪門口。然而,更糟糕的一種狀況則是如圖2展現的那樣,咱們將用戶定位在了一個離店鋪較遠的位置,嚴重下降了用戶的定位體驗。性能
圖2. 用戶在店鋪中發出定位請求,實際定位結果偏移了44米
對於這種狀況,最爲直接的解決方案是在店鋪內也採集指紋信息,作到整個商場內指紋採集全覆蓋。然而,因爲店鋪的面積遠遠大於商場內走廊區域的面積,採集店鋪指紋會致使成本成倍增長。同時,因爲店鋪裝修、搬遷以及店內Wi-Fi設備更換更爲頻繁,要想保證店鋪指紋的準確性,店鋪指紋的更新也須要更加的頻繁。這些因素致使了在目前的技術條件下,沒法人工地對店鋪指紋進行採集。所以,咱們要尋求別的方式來對商場內的店鋪指紋進行填充,並將其用於咱們的定位服務。優化
目前,騰訊地圖定位平臺的室內定位服務覆蓋了全國的三千多個主要商場,天天有上億次定位請求發生在這些商場中,而且有上千萬次定位請求是在手機鏈接了Wi-Fi熱點的狀況下發出。若是一個用戶發出定位請求時鏈接的Wi-Fi熱點是店鋪內的熱點,那麼該用戶發出定位請求時所在的真實位置頗有可能就在該店鋪中。此時,該用戶請求定位時上傳的Wi-Fi掃描信息就有機會被用於創建店鋪指紋。 然而,想要利用用戶鏈接熱點時請求定位的日誌記錄來創建店鋪指紋,有一些挑戰須要解決:ui
針對第一個問題,咱們根據每一個Wi-Fi熱點的名稱、店鋪的名稱、從歷史定位日誌中挖掘出的每一個Wi-Fi的位置以及其它的一些信息,嘗試把每一個Wi-Fi熱點都和一個店鋪關聯起來,創建了Wi-Fi和店鋪之間的映射關係庫,爲咱們後續用定位日誌數據來填充店鋪指紋提供了良好的數據基礎。spa
針對第二個問題,咱們根據定位請求中掃描到的店鋪內Wi-Fi熱點的信號強度信息對定位日誌進行清洗,保留下來那些信號強度較強的請求數據,從而儘量保證每一個用於店鋪指紋填充的請求日誌都是在對應的店鋪內產生的。最後咱們採用最近一個月的日誌數據對店鋪指紋進行填充,而且按期更新。經過這種方式,咱們既保證了店鋪指紋的自動化填充,同時也確保了店鋪指紋的新鮮度——即便店鋪發生變化或者遷移,咱們的指紋數據也可以及時適應。日誌
在填充了店鋪指紋以後,咱們還須要將店鋪指紋用於咱們的定位服務,填補人工採集的Wi-Fi指紋沒有覆蓋到的區域。然而,店鋪Wi-Fi指紋和人工採集的走廊區域的Wi-Fi指紋存在很大的差別,致使兩者沒法直接融合。blog
首先,不一樣來源的指紋的新鮮度不一樣。店鋪Wi-Fi指紋來自定位日誌,可以天天自動更新,時刻保持最新鮮的狀態。可是,人工採集指紋的週期通常都在一年左右。所以,走廊區域的指紋信息會隨着時間逐漸老化,與實際請求時掃描到的Wi-Fi列表的匹配度會逐漸降低。這兩種指紋信息同時用於位置計算時,會因爲新鮮度差別致使指紋匹配度存在bias。排序
其次,不一樣獲取方式獲得的指紋可靠性不一樣。人工採集的Wi-Fi指紋具備十分明確的真實位置的標註,可信度較高;而自動填充的店鋪Wi-Fi指紋,即便加入了數據清洗策略,也只能保證大部分指紋數據數據來源於店鋪中,總體數據中存在必定比例的噪聲數據。部署
圖3. 基於網格Wi-Fi指紋的定位過程:選擇最類似的幾個網格計算最終位置
除此以外,人工採集的Wi-Fi指紋所表明的區域大小和店鋪指紋所表明的區域大小也有很大的不一樣。人工採集Wi-Fi指紋時會將定位區域以網格的形式進行劃分,每一個網格具備相同的大小,而後採集每一個網格的Wi-Fi指紋。在實際定位過程當中,如圖3所示,咱們會選擇一個或幾個Wi-Fi指紋和採集到的Wi-Fi列表最類似的網格來肯定目標位置。然而,店鋪Wi-Fi指紋表述的是整個店鋪的特徵。一個店鋪比一個網格通常要大不少,而且不一樣店鋪的大小和形狀也不相同。
受上述因素的影響,咱們沒法將人工採集的網格指紋和自動填充的店鋪指紋直接對等地融合在一塊兒提供位置服務。同時,考慮到店鋪指紋的可靠性較低以及覆蓋範圍過大,店鋪指紋若是最終參與到位置計算中有可能會形成較大偏移。所以,咱們最終採起了基於排序的約束式定位。圖4展現了咱們目前版本約束式定位的總體流程。
圖4. 基於店鋪填充Wi-Fi指紋的約束式定位示意圖
首先,咱們創建了一個排序模型來判斷目標發出請求的位置是在店鋪內仍是在有人工採集指紋覆蓋的走廊內。咱們根據人工採集的網格指紋和自動填充的店鋪指紋中出現的Wi-Fi、每一個Wi-Fi對應的信號強度等信息,對每一個網格和店鋪都提取出了一個41維的特徵向量。基於特徵向量,咱們訓練了一個XGBoost樹模型做爲咱們的排序模型,來對店鋪和網格進行排序,判斷用戶發出定位請求的實際區域。
圖5. 將最終定位結果約束在店鋪附近
而後,基於不一樣排序結果,咱們採用了不一樣的定位策略。若是咱們判斷出目前發出請求的位置更多是在人工採集過指紋的網格中,那麼咱們採用已有的定位流程,根據網格內的指紋特徵,選擇最類似的1個或幾個網格來計算目標的位置。若是咱們判斷出目標發出定位請求的位置更多是在某個店鋪中,那麼咱們會找到店鋪周圍的那些網格,如圖5所示,用這些網格來最終肯定目標的位置,從而將定位結果約束在目標最可能存在店鋪門口,以避免產生過大的定位偏移。
最終,在上述策略下,對於因店鋪指紋缺失致使定位結果偏離實際位置過遠的狀況,咱們可以將50%的請求從新約束在正確範圍內進行定位,大大減小了大偏移定位結果的數量。而對於原有系統可以正肯定位的狀況,咱們最多也只會對其中2%的定位請求形成錯誤約束,不會對現有的定位性能和其它相關服務形成負面影響。
隨着定位服務質量的提高,愈來愈多的用戶開始使用咱們的室內定位服務,同時也對定位精度提出了更高的要求。然而,受系統搭建成本的限制,咱們人工採集室內指紋沒法真正覆蓋室內的全部區域。店鋪指紋的缺失已經成爲限制室內定位服務質量進一步提高的關鍵。在本文中,咱們利用了團隊過去積累下來的定位數據的優點,在不增長成本的狀況下,自動化地填充了一部分店鋪指紋,並用於定位服務,提升了可定位區域的範圍,大大提高了用戶定位體驗。將來,咱們會不斷優化用於指紋填充的數據質量,同時結合更多的數據來源,提升數據準確度的同時也爲更多的店鋪進行指紋填充,從而提供一個更加全面和精準的定位體驗,也爲更上層的應用服務提供一個可靠的基礎位置信息服務。
目前室內圖產品爲咱們騰訊位置服務特點付費產品,如感興趣可點擊瞭解,歡迎你們體驗~
iOS地圖SDK室內圖、Android地圖SDK室內圖