Android GNSS Measurements API

之前介紹過 Google 在 Android 7 (Nougat) 中推出 GNSS measurements API ,由於這個功能受限於硬體韌體設計,暫時只有某些晶片才能支援,包含了 Exynos、Qualcomm、Broadcom BCM4774、Intel WCS2x00 等。預計今年之後會出現越來越多支持 GNSS Measurements API 的手機。

開發者網站提供一個參考列表,包含市面上幾個旗艦手機的對於 Pseudo-range and pseudo-range rate、Navigation messages、Accumulated delta range or carrier、Hardware (HW) clock 等支援現況,也提供了範例程式給開發者參考。

歐洲的全球衛星定位系統 Galileo ,也辦了兩次黑客松,參與者 Lukasz Kosma Bonenberg 博士分享一些應用發想,像是 Differential GNSS/RTK、窮人的衛星訊號干擾偵測、窮人的地震感應器、或是用 GNSS Shadowing 改善都市叢林的定位。他也將相關的程式碼發布到 github 上。

依照最近的實驗研究,智慧手機的天線與接受器設計明顯比不上專業的量測儀器,即使有良好的衛星訊號,量測結果仍有一個數量級的差距。但是與過往只有五公尺到十公尺的精確度,已經可以作到公尺等級的精確度。如果硬體設計上可以解決 duty cycling 的侷限,便有機會透過手機做出精度到公分級的低成本 RTK 測量儀器,適合一些不介意耗電速度的使用場景。

L5, Safety of Life 訊號

另外一個值得一提的是,由於近幾年 GPS、Galiao、QZSS 等支援 L5/E5 10Mhz 訊號的衛星總數到達了三十顆,相較於 L1 1Mhz 的定位訊號,10Mhz 在都市叢林中造成的多重路徑傳播影響較小。GPS L5 訊號是一個刻意保留的頻道,更不容易受到干擾。結合 L1,L2 雙頻定位可以作到更高的定位精度。

IIlustration: Broadcom

 

L5 從 Block IIF satellites 之後的新型衛星開始送訊號,第一台是 2009 上線的USA-203。之前支援 L5 的衛星數量不夠多,其覆蓋率未到大眾可用的商業規模。早些時候只有一些專業的量測工具提供 L5 訊號支援,但是 Broadcom 率先針對智慧型手機推出支援 L5 訊號 BCM47755 晶片,受惠於足夠的衛星訊號,可以大幅改善智慧手機的定位精度。預期其他的競爭對手的產品應該可以逐步趕上,希望在 2018 年看到更多支援此功能的的手機硬體產品。

Google’s I/O 2016 的演講[1]提到會支援 Raw GNSS measurements,開放開發者取得 pseudoranges, dopplers and carrier phase 等資料。

過去,這些資料是在 GPS basdband processing 就已經計算處理好,對於一般軟體開發者而言通常直接使用 LocationManager 取得最終的定位資料,而非衛星訊號數值等資料。

對於需要做 GPS 效能調校的硬體、韌體工程師,通常透過 Android HAL API 測試 GPS 訊號。在 Android 中最低階的協議是透過 NMEA sentence 協議取得衛星訊號數值,但是這其實還不夠低階到包含如 pseudoranges 等資料[5][6]。這些 raw data 資料只來自使用該晶片商獨家的 binary protocol,而沒有標準的 API 可用。

Google I/O 的講者 Steve Malkos 的演講 (37分30秒)[7] 其實只提到會拿到原始 GNSS 測量資料。但是他還沒有分享具體的設計會長什麼樣子,另外最大的改變是 GPS, Wi-Fi, Cell 等 Connectivity API 會被從較高階 API 移到底層的 Sensor Hub (low power domain),這樣可以更省電且有效的計算位址資料。

查了一下 android-n-preview-3 的 codebase,目前 libhardware 的 HAL Interface[2][3] 還沒有改變,上層的 Location API[4] 也還沒有跟著新的設計異動。

繼續期待。

[1]: http://gpsworld.com/google-opens-up-gnss-pseudoranges/ “Google opens up GNSS pseudoranges : GPS World”
[2]: https://android.googlesource.com/platform/hardware/libhardware/+/android-n-preview-3/include/hardware/gps.h “include/hardware/gps.h – platform/hardware/libhardware – Git at Google”
[3]: https://android.googlesource.com/platform/hardware/libhardware/+/android-n-preview-3/include/hardware/sensors.h “include/hardware/sensors.h – platform/hardware/libhardware – Git at Google”
[4]: https://developer.android.com/reference/android/location/GpsSatellite.html
[5]: https://en.wikipedia.org/wiki/Pseudorange
[6]: https://en.wikipedia.org/wiki/Doppler_effect “Doppler effect – Wikipedia, the free encyclopedia”
[7]: https://www.youtube.com/watch?time_continue=2251&v=OEvycEMoLUg “Making Android sensors and location work for you – Google I/O 2016 – YouTube”

一切都是因為 h4 的會末分享,形式類似 Lightning talk,大約五分鐘的一周進展總結,聚會夥伴合資購買了一臺新的 Vivitek QUMI Q5。由於聚會的場地限制,為了接上投影機一直移動實在不太方便,所以大家開始設想無線投影的方法。

其實 QUMI Q5 內建無線投影功能,使用了奇揚網科MirrorOp 技術,很遺憾隨著投影機贈送的軟體只支援 Windows,而我們的朋友大部份使用 Linux 或 Mac. Windows 是少數。 至於行動版,iOS sender 需要 jailbreak, Android MirrorOp Sender 則需要 root,可用性極低。而且 Q5 的無線網路只支援 AP Mode,投影的人必須接上 Q5 的網路才能投影,有些需要網路才能展示的分享就無法連上網路了。

IMG_1309 IMG_1312

希望能夠有一個簡單的解決方案,可以把一些現成的 Android dongle 或 Chromecast dongle 轉成無線投影裝置。這樣就不需使用 PC 專門來做投影功能。

IMG_4017IMG_4026

研究了幾個現有的無線投影技術 –

  1. Apple AirPlay
  2. Miracast / WiDi
  3. Chromecast

分別討論每一種協定的實作方式,跟可行性。結論,目前 Chromecast 大概是跨平臺最方便的無線投影機制,但目前還沒有 WebRTC 的投影協定文件。

這是四月 OSDC 2010Thinker 一起報告的題目。出發點是為 Tablet PC 所開發設計的 Application development model,嘗試以 SVG 作為介面、繪圖系統規格。

發展方向是以 Gecko/XPCOM/DBus 來提供系統介接,Thinker 則說明在 SVG/XBL/JavaScript 上的嘗試與經驗。

(此文原應編輯並發布於 2008/09/25)

Rider SpokeBlast Theory 在 2007 發表的另外一項作品,概念非常簡單,玩家可以騎著單車拿著 Nokia N800 去尋找其他玩家在神秘地點所埋下的秘密話語,同時 Blast Theory 也會塞一個問題給你,讓你也要找一個安全的地方丟下你的答案。於是玩家們就可以在城市裡一邊搜尋別人的秘密,一邊並藏好自己的秘密。

除了使用 N800 來顯示玩家的位置與播放資訊外,在定位方面則使用了 Mixed Reality Lab, University of Nottingham 所研究的無線網路定位技術。這個計畫的其中一個合作夥伴是 IPerG,IPerG 網站上也有許多關於 Pervasive Computing 的豐富研究。

這是大約於 2005 左右知道的計畫,與當時的工作有點相關,一直沒有張貼出來。

ConQwestSemacode (semacode.org), SS+K, Ubiquity LabsQwest Communications International Inc. 等公司在全美各地舉辦所謂 Big Urban Game/Ubiquitous Game 的行銷活動,結合數位媒體與行動網路來推銷行動網路的有趣性。

ConQwest 是一種藏寶跟攻略遊戲,結合了 Big game + Treasure hunt + Photo Cam + Semacode + Giant Animal Tote 等元素,玩家必須搬著英國製造的兩米高充氣動物玩偶,找出 10×10 街區中的 350 個 Semacode 二維條碼,條碼中內含寶藏(點數),移動玩偶以佔領各地區,然後搜尋出條碼內容,並透過 MMS/SMS 取得線索與分數。活動共有獎金 USD 5000, 五個隊伍,一百二十五位當地高中生為玩家,利用了一百五十台 Nokia 6225。

area/code計畫網頁上有比較詳盡的說明,圖片可參考 Slavin Fpo相片集。像 area/code 這樣介於互動藝術創作跟市場行銷的公司,可以一直作這種大型的結合數位工具的行銷遊戲,應該很過癮吧。

圖片來源: area/code.

時間地點:

  • 2004/10/09 明尼蘇達州(Minnesota), 明尼亞波里(Minneapolis)
  • 2004/10/16 科羅拉多州(Colorado), 丹佛(Denver)
  • 2004/10/23 華盛頓州(Washington), 西雅圖(Seattle)
  • 2004/10/30 猶他州(Utah), 鹽湖城(Salt Lake City)
  • 2004/11/07 亞歷桑納州(Arizona), 鳳凰城(Phoenix)