一 背景
作為本地生活的一個重要組成部分,外賣已經(jīng)進(jìn)入千千萬萬的家庭。相信很多小伙伴已經(jīng)注意到,餓了么的每一個訂單,我們都會及時向用戶通知這一單現(xiàn)在所處的狀態(tài),比如“商戶接單”,“騎手到店”,“騎手送達(dá)”等。這個實時狀態(tài)的更新,不僅能讓用戶及時了解自己外賣到了哪里,對于整個平臺的騎手調(diào)度和時間預(yù)估都有著重要意義。
而在所有的節(jié)點中,騎手到店前后的兩個節(jié)點“騎手到店”和“騎手取餐”對于整個平臺的價值就更為重要,主要體現(xiàn)在以下三個方面:
時間預(yù)估
騎手到店的時間是騎手從接單位置到商戶位置的終止時間,而騎手離店的時間則是騎手從商戶位置到用戶位置的起始時間。掌握這些準(zhǔn)確的時間,能給時間預(yù)估模型提供準(zhǔn)確的標(biāo)簽用于模型訓(xùn)練。我們在APP里看到的“預(yù)估配送時間”就是這樣計算出來的。同時,知道騎手在商戶位置等了多長時間,我們就可以知道商戶準(zhǔn)備這一單需要多長時間,也就是商戶的“出餐時間”。而掌握了準(zhǔn)確的出餐時間,我們在給某一單找合適騎手的時候就能更加地游刃有余了。
騎手調(diào)度
當(dāng)用戶在外賣平臺下單后,平臺就會開始為這一單尋找合適的騎手來配送,這個過程就叫騎手調(diào)度。騎手調(diào)度是一個復(fù)雜的過程,需要考慮同時考慮商戶,騎手和用戶的位置,還要考慮騎手身上已有的單和商戶正在準(zhǔn)備的單。一個總的原則是,讓更近的,更順路的騎手去取單。如果我們知道了騎手到店的準(zhǔn)確時間,我們就可以知道騎手在當(dāng)前時刻的具體位置,并且能夠預(yù)估出騎手在未來一段時間的大概位置。這就給我們的騎手調(diào)度提供了準(zhǔn)確可靠的數(shù)據(jù)源。
超時單判責(zé)
雖然調(diào)度系統(tǒng)會盡力保證每一單都盡快送達(dá),但還是會有一些情況導(dǎo)致少部分運單會超時,給用戶帶來不好的體驗。為了提升調(diào)度系統(tǒng)的性能,減少超時單。我們首先需要知道超時的原因,從而在未來的調(diào)度中作出改進(jìn)。超時的兩個主要原因是“商戶已出餐但騎手未到店”和“騎手已到店但商戶未出餐”。在沒有明確數(shù)據(jù)的情況下,這兩個對立的原因往往會出現(xiàn)“公說公有理,婆說婆有理”的情況。如果我們能夠準(zhǔn)確獲得騎手到店的時間,這一困境就會迎刃而解。
二 挑戰(zhàn)
既然獲取準(zhǔn)確的騎手到店時間是如此重要的問題,為什么現(xiàn)有的方法還是無法很好的解決這個問題呢?這是因為考慮到本地生活的場景,要獲得準(zhǔn)確的騎手到店時間,面臨著以下幾方面的挑戰(zhàn):
GPS在室內(nèi)的漂移
現(xiàn)在手機定位最常用的方法就是GPS定位。但無論是GPS,還是我們最近剛組網(wǎng)成功的北斗系統(tǒng),其本質(zhì)上都需要手機里的芯片來接收地球上方的衛(wèi)星信號。但商戶的位置往往是在室內(nèi),當(dāng)我們在室內(nèi)環(huán)境時,GPS信號會受到建筑物的遮擋,導(dǎo)致GPS信號微弱甚至完全失去信號。這個時候GPS的精確度就會從幾米擴大到幾百米甚至幾公里,導(dǎo)致GPS信號出現(xiàn)漂移。因為這一漂移現(xiàn)象的存在,我們需要劃定一個范圍來判斷騎手是否到達(dá)了商戶。當(dāng)我們用一個較小的范圍時,可能會出現(xiàn)“騎手已到店但我們認(rèn)為沒到”,如果我們用一個較大的范圍,那么騎手到店時間的準(zhǔn)確性則會大打折扣。
商戶在不同樓層的垂直分布
在GPS漂移之外,商戶在不同樓層的垂直分布也會給騎手到店的準(zhǔn)確判定帶來困難。當(dāng)商戶分布在不同樓層時,即使我們通過GPS判斷出騎手已經(jīng)在水平方向上到達(dá)商戶附近,但由于沒有垂直方向的信息,我們?nèi)匀粺o法準(zhǔn)確判斷出騎手到店的具體時間。如今越來越多的商戶都分布在商場的不同樓層,這部分訂單的騎手到店時間就很難觀測。雖然GPS會返回一個海拔信息,但在實際的應(yīng)用中我們發(fā)現(xiàn)這個值往往是不夠準(zhǔn)確的。
商戶環(huán)境的動態(tài)性和騎手手機的多樣性
一些室內(nèi)定位的方法通過收集特定環(huán)境的聲音指紋,光指紋或者磁場強度指紋來建立指紋庫,然后通過指紋對比來判斷手機所處的位置。理論上如果我們能夠采集商戶環(huán)境的指紋,并和騎手手機收到的信號進(jìn)行比對,就可以判斷騎手是否已經(jīng)到達(dá)商戶。但由于商戶環(huán)境的動態(tài)性,比如裝修改造和人來人往帶來的實時擾動,我們很難建立一個穩(wěn)定的指紋庫來進(jìn)行比對。同時,由于聲光磁的指紋收集受到手機硬件的影響,騎手手機的多樣性也對指紋庫的建立帶來很大挑戰(zhàn)。
基于Wi-Fi的方法的局限性
隨著越來越多的室內(nèi)環(huán)境有Wi-Fi信號的覆蓋,基于Wi-Fi信號的室內(nèi)定位也得到了充分研究。但基于Wi-Fi方法也有兩個局限性:一是持續(xù)的Wi-Fi掃描會帶來極大的能耗負(fù)擔(dān),這對于工作極度依賴手機的騎手很不友好;二是出于隱私保護(hù)等原因,iOS系統(tǒng)只支持獲取當(dāng)前連接的Wi-Fi信息,而不支持獲取Wi-Fi掃描的列表,但騎手在取餐過程中很少連接商戶的Wi-Fi。這兩個原因?qū)е铝嘶赪i-Fi的定位方法無法適用于騎手到店的場景。
三 解決方案
當(dāng)我們把騎手到店觀測問題抽象出來,可以發(fā)現(xiàn)這是移動感知(Mobile Sensing)領(lǐng)域經(jīng)典的“室內(nèi)定位(Indoor Localization)”或者“存在監(jiān)測(Presence Detection)”的問題。移動感知是指利用移動設(shè)備上的網(wǎng)絡(luò)信號或聲光電磁等傳感器信號對用戶的位置,行為,場景等進(jìn)行感知的技術(shù)。手機上的計步功能,以及智能手表提供的心率監(jiān)測和睡眠監(jiān)測等功能,都是移動感知技術(shù)在生活中的具體應(yīng)用。近些年來,隨著移動設(shè)備的升級,研究者們也在探索移動感知的新應(yīng)用,比如用Wi-Fi信號感知鍵盤敲擊和老人摔倒,用手機話筒來檢測醉駕,用新的傳感器來感知用戶的情緒和壓力狀態(tài)等。
這些研究也給我們的到店觀測問題提供了很多思路,比如基于Wi-Fi的室內(nèi)定位,基于特定光信號和聲信號的定位方法等。但是通過上面的討論我們可以看出,這些方法都難以很好地解決騎手到店觀測問題。針對這一情況,我們設(shè)計并部署了aBeacon系統(tǒng),一個基于藍(lán)牙信號的移動感知系統(tǒng),來解決騎手到店觀測的問題。其實基于藍(lán)牙的移動感知并不是一個全新的技術(shù),蘋果公司在2013年提出基于藍(lán)牙的iBeacon協(xié)議用于移動感知[1],2016年藍(lán)牙5.0中的新特征(更低功耗,更大范圍)真正讓藍(lán)牙感知技術(shù)得以落地。藍(lán)牙移動感知的原理就是通過在特定位置部署一些持續(xù)發(fā)送藍(lán)牙信號的Beacon設(shè)備,同時手機進(jìn)行持續(xù)的掃描來感知周圍的藍(lán)牙Beacon信號,從而來判斷手機是否到達(dá)了特定位置。
基于這樣的感知技術(shù),我們建立了aBeacon系統(tǒng),如圖1所示,系統(tǒng)由三部分組成:部署在商戶的藍(lán)牙Beacon硬件、騎手APP內(nèi)的藍(lán)牙監(jiān)聽模塊和平臺服務(wù)器上的后端模塊。在騎手配送過程中,APP上的藍(lán)牙監(jiān)聽模塊會持續(xù)監(jiān)聽周圍的藍(lán)牙Beacon信號,當(dāng)騎手到達(dá)商戶附近(比如10米范圍內(nèi))時,手機會監(jiān)聽到該商戶內(nèi)的藍(lán)牙Beacon信號,并把該數(shù)據(jù)和當(dāng)前時間戳上傳到服務(wù)器,服務(wù)器通過和預(yù)置的Beacon地圖進(jìn)行比對,就可以得到該騎手到達(dá)該商戶的準(zhǔn)確時間。在Beacon硬件方面,我們采用了自主定制的硬件,在降低成本的同時保證了藍(lán)牙廣播的質(zhì)量,同時引入了加密技術(shù)來保護(hù)商戶的位置隱私。在手機監(jiān)聽模塊方面,我們通過設(shè)計一個動態(tài)監(jiān)聽模塊,在保證到店判斷能力的前提下降低了能耗。
對比前面提到的幾個挑戰(zhàn),我們可以發(fā)現(xiàn),因為藍(lán)牙信號自身的特性,Beacon信號在室內(nèi)環(huán)境的傳播僅限于幾米到幾十米的范圍(相信大家使用藍(lán)牙耳機和鼠標(biāo)都有類似的感受),因此基于藍(lán)牙的到店判斷不會出現(xiàn)GPS那樣幾百米的誤差,可以極大提高騎手到店觀測的準(zhǔn)確性。同時,因為藍(lán)牙信號的穿墻能力較差,因此只有當(dāng)騎手到達(dá)商戶所在的樓層時才會接收到藍(lán)牙信號,這樣就避免了商戶樓層帶來的影響。此外,我們通過標(biāo)準(zhǔn)化的部署流程,使得Beacon硬件部署在商戶的騎手取餐處的上方,避免了商戶內(nèi)動態(tài)環(huán)境的改變對信號的影響。藍(lán)牙協(xié)議的標(biāo)準(zhǔn)化和手機硬件的成熟化也降低了騎手手機硬件對到店觀測的影響。此外,因為藍(lán)牙監(jiān)聽屬于非連接通信,騎手使用藍(lán)牙耳機的功能也不會受到影響。最后,和Wi-Fi相比,藍(lán)牙監(jiān)聽的功耗也很低,我們的實驗證明,Beacon監(jiān)聽每天只會給騎手手機帶來3%的額外功耗負(fù)擔(dān)。
總體來說,aBeacon系統(tǒng)的主要貢獻(xiàn)在于將藍(lán)牙感知的技術(shù)真正應(yīng)用到騎手到店觀測的問題中,并解決了一系列實際應(yīng)用中的挑戰(zhàn),比如能耗,可靠性,隱私保護(hù)等,并且從理論層面上對系統(tǒng)的成本和效用進(jìn)行分析,從而指導(dǎo)今后大規(guī)模感知系統(tǒng)的落地。

在系統(tǒng)的設(shè)計中,我們考慮了下面的一些指標(biāo):
成本
成本是我們上線一個商業(yè)化的系統(tǒng)所必須考慮的因素之一。aBeacon系統(tǒng)的成本包括兩部分:aBeacon設(shè)備的硬件成本,和大規(guī)模部署的成本。在硬件成本方面,我們通過對硬件的定制來降低成本。在部署成本方面,我們通過簡化硬件部署的流程,從而在業(yè)務(wù)經(jīng)理的幫助下降低部署成本。
壽命
出于易用性的考慮,我們的aBeacon硬件采用了電池供電的方式。這樣電池的容量就成為了限制系統(tǒng)壽命的主要因素。但在兩年的運行之后,我們發(fā)現(xiàn)除了電池的壽命,環(huán)境變化也是影響系統(tǒng)壽命的重要因素。
可靠性
可靠性是指在所有的騎手到店行為中,有多大比例可以被aBeacon系統(tǒng)觀測到。在實際中,可靠性受到包括部署質(zhì)量,商戶環(huán)境,騎手手機等諸多因素的影響。
效用
騎手到店觀測給整個系統(tǒng)提供了更準(zhǔn)確的數(shù)據(jù),它帶來的效用是基礎(chǔ)但難以直接衡量的,因此我們采用超時率這一衡量整個調(diào)度系統(tǒng)的指標(biāo)來評估aBeacon的效用。
在系統(tǒng)的設(shè)計過程中,我們首先量化了上面的四個指標(biāo),然后建立這四個指標(biāo)和我們要優(yōu)化的終極目標(biāo)--aBeacon帶來的累積收益--之間的量化關(guān)系。因此,我們可以在這個量化關(guān)系的指導(dǎo)下對各個因素進(jìn)行權(quán)衡。
在這樣的設(shè)計思路的指導(dǎo)下,aBeacon系統(tǒng)的部署和運行主要包含了兩個主要環(huán)節(jié):
設(shè)計與測試
基于成本和設(shè)計自由度的考慮,我們選擇自主定制aBeacon設(shè)備,同時自主定制還能讓我們嵌入隱私保護(hù)等其他功能。在大規(guī)模的部署前,我們挑選了幾個商場進(jìn)行小規(guī)模的測試。在測試中,我們將自主定制的aBeacon設(shè)備和另一種商用的Beacon設(shè)備同時部署在商戶里。通過對比測試,我們發(fā)現(xiàn)采用自主定制的aBeacon設(shè)備可以在壓縮成本的同時達(dá)到和商用Beacon設(shè)備同樣的可靠性。
部署與運行
在小規(guī)模測試后,從2018年1月開始,如圖2所示,我們在上海的12000余家商戶里部署了aBeacon設(shè)備。我們用一份包含“部署在哪里”、“怎么固定”、“如何綁定”等問題的部署手冊來指導(dǎo)業(yè)務(wù)經(jīng)理進(jìn)行部署。在運行過程中,我們通過后臺收集的數(shù)據(jù),可以對所有設(shè)備進(jìn)行實時監(jiān)控,所有設(shè)備被分類為“健康”、“部署錯誤”、“下線”等狀態(tài)。我們針對不同的設(shè)備還可以采取不同的維護(hù)措施,比如針對“部署錯誤”的設(shè)備進(jìn)行重新部署。
另一個很重要的問題是系統(tǒng)安全和隱私保護(hù),這也是我們在aBeacon設(shè)備的定制過程中作出的重要改進(jìn)之一。因為傳統(tǒng)的iBeacon協(xié)議是固定ID的明文廣播,可能導(dǎo)致系統(tǒng)的安全性漏洞。比如:
未授權(quán)的用戶可能通過戰(zhàn)爭駕駛(wardriving)[2] 的方法來反推出Beacon設(shè)備的位置,并用于其他目的。
惡意攻擊者可能通過在異地復(fù)制已有Beacon設(shè)備的藍(lán)牙廣播,向系統(tǒng)中注入錯誤的位置數(shù)據(jù)。
針對這一問題,我們在自主定制的設(shè)備中對藍(lán)牙廣播進(jìn)行加密,通過一種TOTP[3]的加密算法,讓所有aBeacon設(shè)備廣播的ID內(nèi)容定時進(jìn)行變更,而ID和設(shè)備位置的映射關(guān)系存在只有授權(quán)用戶可以訪問服務(wù)器。這樣極大地提高了系統(tǒng)的安全性。
