BS簡史
LBS是互聯網的基礎設施,幾乎每個互聯網巨頭都投入大量的資源來開發它,我們的生活才得以這么便利。或者說,正是它如此常用,就像水電空氣,我們對它們幾乎毫無感知,卻又處處使用著它。很多時候,我們新裝一個APP,就可能被索要此權限,如果不給它,許多事就無法進行下去。說來說去,LBS是什么呢?乍一想,就是地圖。但這只是可視化的一部分,它的另一半是定位服務。因此LBS的英文全稱是為Location Based Services,基于定位的服務。
LBS的出現緣起于美國一個綁架事件,1993年11月美國一個叫做詹尼弗·庫恩的女孩遭綁架之后被殺害,在這個過程當中,庫恩用手機撥打了911電話,但是911呼救中心無法通過手機信號確定她的位置。由于這個事件,導致美國的FCC(美國通信委員會)在1996年推出了一個行政性命令E911,要求強制性構建一個公眾安全網絡,即無論在任何時間和地點,都能通過無線信號追蹤到用戶的位置,位置精確到50-300米。
此外,2001年的911事件也讓美國的公眾認識到位置服務的重要性,因此,在為了實現E911目標的同時,基于位置服務的業務也逐漸開展起來。從某種意義上來說,是E911促使移動運營商投入大量的資金和力量來研究位置服務,從而催生了LBS市場。
PC時代,一般人很少會受益于此服務的。大家對它的感受就是百度地圖,谷歌地圖,高德地圖,騰訊地圖,需要時就直接打開網址查一下,了解一下這個城市有多少個縣城,有什么景點,外部網站也很少引用它的API。因此在PC時代,LBS等同于地圖服務。
移動端時代,由于手機內置了更多硬件能獲取更多地理信息,因此更加準確實時,而不像PC時代那樣通過IP地址進行反解。手機系統對這些硬件進行匯總,直接給出可用的地理名稱(省市縣與街道名稱),經緯度,我們才能在上面更具體化的服務,于是誕生了摩拜單車,街旁網,大眾點評,美團外賣,切客這些APP及微信運動,共享實時位置,搖一搖這些內置在微信上的好用功能。
換言之,PC時代,LBS只限于顯示某一個區域的顯示,上面加點廣告,告訴你上面有什么超市酒店。而在移動端時代,每個人都共享(或直接說暴露了)自己的位置信息及其他可販賣的信息(照片,愛好,自己酒店能提供的服務),被APP有效地利用起來,變成共享單車,交友逛街,外賣快遞這些強交互服務。
底層技術一覽
說到地理信息,人家常常聯想到GPS。GPS只是LBS的獲取位置信息的一種手段,剛才我們通過H5 API獲取經緯度,可能就是多種手段之一??偟膩碚f,主要以下幾種:GPS,基站,WIFI與IP。
GPS定位
GPS早些年是專門指代美國的衛星定位系統,從20世紀70年代開始研制,歷時20年,耗資200億美元,于1994年全面建成。幾乎所有的手機都擁有GPS接收器,就可以『免費』使用它的低精度的民間定位服務。為了防止打仗時受制于人,歐盟,俄羅斯與我國也發射衛星組裝自己的GPS服務,分別叫伽利略(Galileo),格洛納斯(GLONASS)與北斗(BDS)。最近,美國商業奇才馬斯克,也通過他的火箭成功發射兩波低軌衛星,組建星鏈系統(Starlink),以后可能成為最大的衛星網絡提供商,也能輕松為全球提供定義服用。
一般來說,國內的手機都能同時接收這四個系統的服務。
說一下,GPS的技術原理。已知A、B、C三個點的坐標,以及該三點至D點的距離(分別是d0,d1,d2),求D點的坐標。我們可以通過以下三元二次方程組求解出唯一解(式1)。
GPS的原理就是基于上面公式。GPS在太空擁有24顆衛星,衛星分布在六個中距離近圓形軌道面上(每軌道面四顆),軌道傾角為55度。衛星的分布使得在全球的任何地方,任何時間都可觀測到四顆以上的衛星。
我們手機上的接收器不斷接收每個衛星Si接收消息Mi,消息Mi不僅包含著衛星Si的空間坐標,還包括衛星發送消息的時間Ti。接收機在接收Mi后就可根據本地接收機的時間與衛星發送消息時間之差來計算距離di:di=c*T;其中c是光速,T是時間差。然而,由于各種原因,包括大氣、建筑物,時鐘誤差等等因素,光速c以及時間差T是具有誤差的,di的結果很不準確,因此在計算時候需要加個誤差項進行修正,并且假設各個衛星的誤差項一樣(式2)。
除了空間位置三個參數,現在又多出了誤差項,共有4個參數需要求解,至少需要4個衛星才能解算(式3)。
GPS的缺點也顯然易見,它容易受干擾,比如存在與GPS相同的頻率的無線電信號(1500mhz 左右),或者在室內,地下室,由于墻壁使用了鐵、陶瓷、碳纖維這樣的大量吸波材料。
基站定位
基站定位的原理和雷達差不多。雷達定位的過程如下,通過發射雷達波,碰到物體返回,然后根據時間與波的速度推算物體的位置。同理,基站就是相當一個雷達,不斷往外輻射。我們的手機總是在多個基站的信號覆蓋之下。手機會對不同基站的下行導頻信號進行“測量”,得到各個基站的信號TOA(到達時刻)或TDOA(到達時間差)。根據這個測量結果,結合基站的坐標(信號里自帶),就能夠計算出手機的坐標值。
然后根據上面的三點定位公式就能計算出來。
但它與GPS一樣,都有一個明顯的缺點,無法穿透建筑物,不能實現室內定位。隨著室內定位的業務場景越來越多,如地下車庫導航、商場尋找店鋪和商品,甚至兒童走失,都對室內定位有迫切需求。因此又誕生了WiFi,藍牙,UWB等技術。
WiFi藍牙定位
不知大家有沒有人用過美團的摩拜單車與滴滴的青桔單車,它們總是讓你打開藍牙。WiFi與藍牙的定拉技術相似,無非是信號編碼與頻率的不同。我們以WiFi進行說明。
當我們手機打開WiFi后,我們的手機就變成一個WikFi熱點(AP),向外接收其他AP(可以是其他手機,也可能是無線路由器)的信號,也發射自己的信號。在城市,WiFi熱點是越來越多,每個點總是能接5~20個的AP信號。
AP都有一個全球唯一的MAC地址,并且一般來說無線AP在一段時間內是不會移動。手機在開啟Wi-Fi的情況下,無論是否加密,是否已連接,甚至信號強度不足以顯示在無線信號列表中,都可以獲取到AP廣播出來的MAC地址。
手機將這些收集到的信號發送給定位引擎,通過樸素貝葉斯算法計算自己的位置。由于此公式超出常人的理解水平,我就不展開講解,感興趣的人可以網上檢索《基于樸素貝葉斯的定位算法》一文自行學習:https://blog.csdn.net/weixin_33928137/article/details/90708754
總的來說,藍牙從精度與可靠性比WIFI高多了。
IP定位
IP定位技術通過目標主機的IP地址定位其實際物理地址,被廣泛應用于定向廣告、在線安全監測、網絡攻擊溯源等位置相關服務。
總的來說,這是一種不怎么可靠的定位技術。因為IP地址資源很寶貴,大部分用戶都是通過動態IP地址上網的。所謂動態就是指,當你每一次上網時,電信會隨機給你分配一個IP地址,靜態就是每次上網都用一個地址。一般來說,普通寬帶是動態ip,也有直接光纖接入的靜態ip。
假定我們的IP就是靜態的,如何找到你的位置呢?我們知道,IP地址本質上是一個32位的無符號整型(unsigned int),范圍從0 ~ 2^32 ,總計約43億個IP地址。一般以192.168.0.1這樣的形式表示出來。
IP地址的劃分,有RIR機構來進行統籌管理。負責亞洲地區IP地址分配的,就是APNIC,總部位于澳大利亞墨爾本。各大RIR機構都提供了關于IP地址劃分的登記信息,即whois記錄??梢栽诟鞔驲IR機構提供的whois查詢頁面上查看,或者使用whois命令查詢:
IP的whois信息包含了申請使用該IP的運營商信息,并且在網段描述信息中,會包含國籍和省份信息。但是,我們還需要精確到每個街道,這就需要通過各種手段來完善這個IPto地理的數據庫了。例如,我們報裝寬帶時,提交用戶的地理位置;通過爬蟲,挖掘網站上的電話,地址,傳真等信息定位地理位置;基于網絡往返時間得到近似結果,該方法通過測量待定位的IP到各個已知參考點的往返時延,把往反時延算成地理距離從而定位主機。
因此IP定位技術后面需要一個龐大的數據庫,想準確還需要結合其他技術來推斷你的位置。比如,百度就有高精度IP定位API,因為我們時常使用它的服務,如百度搜索,百度地圖,百度網盤,它就在背后偷偷收集我們的數據,建立每個的用戶畫像。我想,比百度的線下服務更豐富的阿里,其對我們的了解,比我們自己對自己還準確。
百度的API取地理信息
function getXYbyIP {
var url="https://api.map.baidu.com/location/ip?ak=HQi0eHpVOLlRuIFlsTZNGlYvqLO56un3&coor=bd09ll";//百度
$.ajax({
url:url,
type: 'POST',
dataType: 'JSONP',
async: false,
cache: true, //是否緩存 可以為false
success: function (data) {
alert(JSON.stringify(data));
},
error: function (data) {
// alert(JSON.stringify(data));
}
});
}
或者直接將地址貼到瀏覽器上:
微信小程序與LBS
綜上所述,構建LBS的基石需要龐大的資金投入,你需要發射衛星,布置大量的光纖,建基站(基站的密度是5G > 4G > 3G > 2G),建立IP數據庫并與地理信息與商業信息關聯起來,這需要不同梯度的公司來承擔這些工作與費用。
國內的互聯網公司一般做最后一步工作,為用戶提供第三方數據。百度,騰訊,高德這些最早做地圖的公司,可以提供地圖顯示,IP信息,街道與商店地址等全方位的數據。而小眾領域,比如樓層的內部地圖,艾滋病人數據,則有上千家公司來提供。
在早期PC時代,是很少公司有可能結合LBS為用戶提供本地服務,在移動端時代,隨著內卷化越來越嚴重,LBS再度被人提起。比如說,搖一搖找附近的人,共享單車,訂餐,能結合LBS進行服務,能讓你的APP脫穎而出。
目前,對用戶做得最友好的是騰訊,它從服務API,基礎地圖服務,插件,行業方案等多個層次服務不同場景需求的開發者。從渠道方面講,微信小程序則又是當中最受歡迎的分銷渠道,騰訊位置服務全面擁抱小程序生態,助力小程序插上地圖的“翅膀”!
相反,微信小程序的大多數開發者的技能則非常弱,他們很可能找不到這些對口的小公司,也很可能無法對原始的第三方數據進行加工(因為涉及到專業的術語)。因此微信小程序根據接口的復雜程序分為三個梯度:功能單一的API ,制定性很強的標簽式組件,與完成度非常高功能豐富的微信插件。
API羅列如下:
獲取地址信息的API(包括監聽變動,中止監聽)
wx.stopLocationUpdate
wx.startLocationUpdateBackground
wx.startLocationUpdate
wx.openLocation
wx.onLocationChange
wx.offLocationChange
wx.getLocation
wx.chooseLocation
創建地圖實例的API及地圖實例的相關操作
wx.createMapContext
MapContext.getCenterLocation
MapContext.getRegion
MapContext.getRotate
MapContext.getScale
MapContext.getSkew
MapContext.includePoints
MapContext.moveToLocation
MapContext.translateMarker
獲取用戶前進方向的API,包括羅盤與陀螺儀
wx.stopCompass
wx.startCompass
wx.onCompassChange
wx.offCompassChange
wx.stopGyroscope
wx.startGyroscope
wx.onGyroscopeChange
wx.offGyroscopeChange
標簽式組件,一個
<map>
微信小程序插件,有如下三個:
路線規劃:根據起點、終點,智能規劃最佳出行路線,并支持多種出行方式。
地鐵圖:支持全國所有城市地鐵線路靜態展示、信息查詢、線路檢索及規劃等功能。
地圖選點:快速、準確地選擇并確認自己的當前位置,并將相關位置信息回傳給開發者。
詳見這里:
https://lbs.qq.com/miniprogram_plugin/index.html
開發實踐
事實上,從另一個角度來看,這些API又是根據人的情況進行劃分的,分別為素人開發者,高手開發者與土豪開發者。
素人開發者基本上使用wx.openLocation,wx.getLocation與wx.chooseLocation這三個API就可以調用地圖組件,實現獲取自身位置,獲取某個地點的經緯度與在地圖上顯示出來的需求。
我們打開微信開發者工具,建立一個小程序吧。
然后我們在index.wxml中添加一個按鈕。
<view>
<button bindtap="getPosition">打開地圖選擇地址</button>
</view>
上面要綁定一個事件getPosition,它需要加在index.js中。getPosition很簡單,就是獲取用戶當前位置。
getPosition: function {
wx.getLocation({
type: 'gcj02',
success: function (res) {
var latitude=res.latitude //緯度
var longitude=res.longitude //經度
var speed=res.speed //速度 ,-1表示不動,可能正躺在床上寫文章
var accuracy=res.accuracy//位置的精確度
var altitude=res.altitude //高度,單位 m
var verticalAccuracy=res.verticalAccuracy//垂直精度
console.log(res)
}
})
},
然后點開按鈕時,發現需要在app.json加點東西。
{
"pages": [
"pages/index/index",
"pages/logs/logs"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle": "black"
},
"permission": {
"scope.userLocation": {
"desc": "放心!!!你的位置信息只會用于當前小程序"
}
},
"sitemapLocation": "sitemap.json"
}
然后我們點擊按鈕會發現地址打出來了。
這時我們就需要用wx.openLocation(OBJECT)打開地圖來查看具體的位置,這有點像webview,一下子將頁面蓋住。
wx.openLocation({
latitude: res.latitude,
longitude: res.longitude,
scale: 18, //最大也只能這樣
complete: function {
console.log('complete:', arguments);
}
});
如果我們要選擇一個地點,則需要用到wx.chooseLocation(OBJECT)*。我們在視圖上添加另一個按鈕與占位符。
<view>
<button bindtap="choosePosition">選擇位置</button>
<view>你選擇的地點為:{{address}}</view>
</view>
index.js里面需要在data中添加address屬性,然后再加上一個choosePosition方法
choosePosition: function {
var that=this
wx.chooseLocation({
success: function (res) {
// success
console.log(res, "location")
that.setData({
address: res.address
})
}
})
},
效果如下:
回顧一下,使用這三個 API 調出的地圖的精度都是很有限的。我們在使用共享單車時,什么小藍單車、美團單車,能精確到十幾米,而現在這地圖可能是300多米。難道是與我們設置wx.getLocation的type參數為gcj02有關嗎?gcj02是一種地圖坐標系標準,目前國內主要由以下三種坐標系主導著:
地球坐標 (WGS84)
國際標準,從 GPS 設備中取出的數據的坐標系。
國際地圖提供商使用的坐標系。
火星坐標 (GCJ-02)也叫國測局坐標系
中國標準,從國行移動設備中定位獲取的坐標數據使用這個坐標系。
國家規定:國內出版的各種地圖系統(包括電子形式),必須至少采用GCJ-02對地理位置進行首次加密。
百度坐標 (BD-09)
百度標準,百度 SDK,百度地圖,Geocoding 使用。
撇開百度坐標,我們看一下WGS84與GCJ-02的區別。雖然微信小程序的getLocation也支持WGS84, 但你打開地圖,使用openLocation只能用GCJ-02,相當于隱性強制你用GCJ-02。因為這是國家的一個文件規定的,名為《導航電子地圖安全處理技術基本要求》,標準號為GB 20263—2006,該標準的第4節第4.1款規定:
4.1 導航電子地圖在公開出版、銷售、傳播、展示和使用前,必須進行空間位置技術處理。
這個所謂的“空間位置技術處理”,就是把地圖從GPS坐標使用的 WGS-84 坐標系,轉換為“火星坐標系”(GCJ-02)。轉換后的偏差一般為 300~500 米。也就是說,你手機GPS獲取的坐標,直接疊加到這個“火星坐標系”的地圖上,會有 300~500 米的偏差。早期高德地圖在野外不準,就是這緣故,在野外沒有其他可供修正的數據來校正它。
這就坑了。為什么要這么做,國家告訴你,這是為了保守國家秘密和維護國家安全。查知乎上的文章說,現在美國的導彈能準確到3.5米,因此需要300多米的偏差,保證現有的地圖信息不能被美國直接利用。可是人家美國也不霄于用你的地圖信息啊,人家有鎖眼間諜衛星,根據NRO的解密報告,1971年發射的KH-9衛星可分辨地面上至少0.6米的物體;1976年發射KH-11衛星可分辨15厘米的物體,并且傳回來的是顏色照片。
因此單純的GCJ-02地圖數據,是無法滿足我們高精度的送餐與導航數據的,于是微信小程序的后臺還有高精度數據收費項目,或者干脆使用其他定義技術, 如藍牙。
現在我們假裝是高手,自己畫地圖吧,想多精確就有精確,上面還可以放各式各樣的標記,如POI(興趣點,一個POI可以是一棟房子、一個商鋪、一個郵筒、一個公交站等),控制點,指南針,路徑等等。
我們修改xml, 加入地圖標簽,然后地圖下面加一個view,說明圖上的標記是什么地方。
<map class="map-container" markers="{{markers}}" longitude="{{longitude}}" latitude="{{latitude}}"></map>
<view class="marker-info">
<view>*{{markers[0].title}}</view>
<view>{{markers[0].address}}</view>
</view>
markers的用法可以詳看這里:
https://developers.weixin.qq.com/miniprogram/dev/component/map.html
onReady: function {
this.setData({
latitude: 39.984060,
longitude: 116.307520,
markers: [{
id: 100,
latitude: 39.984060,
longitude: 116.307520,
title: '中國技術交易大廈',
address: '北京市海淀區北四環西路66號',
iconPath: '/images/home_press.png'
}]
});
},
最后我們將地圖加一個高度,400px,顯示如下:
通常一幅地圖,我們會安插許多marker,都是超市,飯店,酒店與加油站什么的,主要看你的APP要提供什么服務。比如導航,就會什么都有,如果是玩樂,就是公園與景點。這些數據需要從第三方公司提供。
再來看如果規則路徑,就是引導用戶如何走。這需要用到polyline屬性,這是一條折線,它由許多點組成,你可以設置它的顏色,樣式與寬度。
<map class="navi_map" longitude="102.67484140406796" latitude="25.03682953251695" scale="100" include-points='{{points}}' polyline="{{polyline}}">
</map>
onReady: function {
var lat=25.03682953251695, lng=102.67484140406796;
var points=[{
latitude: 25.03682953251695,
longitude: 102.67484140406796
},
{
latitude: 25.036132223872958,
longitude: 102.67386832053477
},
{
latitude: 25.035328234772695,
longitude: 102.67441722093537
},
{
latitude: 25.03587706184719,
longitude: 102.67548958617391
},
{
latitude: 25.03682953251695,
longitude: 102.67484140406796
},
]
var polyline=[{
points: points,
color: "#ff0000",
width: 2,
dottedLine: true
}];
this.setData({
longitude: lng,
latitude: lat,
polyline: polyline,
points: points
})
},
難點是如何獲得這些點,我們需要借助PS要地圖上取樣。
如果我們不關注路徑,而是關注于一個區域,可以用polygons。比如共享單車的停車區域,就可以用到這屬性。我們只需要改一下polyline的定義。
var polygon=[{//原來是polyline
points: points,
strokeColor: "#ff0000",
strokeWidth: 2,
fillColor: '#a9ea00'
}];
this.setData({
longitude: lng,
latitude: lat,
polygon: polygon,
points: points
})
wxml也只要改動一下:
<map class="navi_map" longitude="102.67484140406796" latitude="25.03682953251695" scale="100" include-points='{{points}}' polygons="{{polygon}}"></map>
除了這些會隨著地圖拖動跟著移動的標記外,還有一類叫controls的標記,不過現在要用cover-view。它會在地圖中劃出一個fixed的區域,上面放指南針,放大放小按扭,向上返回按鈕。
下面我們嘗試弄一個搜索框在地圖上。cover-view需要放在map里面,cover-view里面也只能放有限幾種標簽,當然你放不支持的標簽也可以的,但會發出警告,不知什么時候就會完全不支持。
cover-view本身也有許多坑:
1、cover-view不支持背景漸變色,其內部的標簽也不能使用漸變色。解決辦法:背景色換成單一顏色。
2、cover-view不支持設置單一位置的border邊框,比如想加個border-top上邊框線來分割標簽。解決辦法:用cover-view將其高設置為1px,模擬出一個border邊框線。
3、cover-view不能覆蓋textarea。解決辦法:textarea在失去焦點的時候將其替換為view標簽,點擊的時候再換回textarea。
<map class="navi_map" longitude="102.67484140406796" latitude="25.03682953251695" scale="100" include-points='{{points}}' polygons="{{polygon}}">
<!-- 搜索框實現 -->
<cover-view class='cover-input' bindtap='tapInput'>
<cover-view class='text'>{{inputInfo}}</cover-view>
<input class='input' value='{{inputModel}}' focus='{{inputFocus}}' bindblur='blurInput'></input>
</cover-view>
<!-- 搜索框實現 -->
</map>
data: {
motto: 'Hello World',
userInfo: {},
hasUserInfo: false,
address: '',
longitude: 0, // 經度
latitude: 0, //緯度
markers: ,
polypon: ,
inputFocus: false,
inputModel: '',
inputInfo: 'search',
canIUse: wx.canIUse('button.open-type.getUserInfo')
},
tapInput {
this.setData({
//在真機上將焦點給input
inputFocus: true,
//初始占位清空
inputInfo: ''
});
},
/**
* input 失去焦點后將 input 的輸入內容給到cover-view
*/
blurInput(e) {
this.setData({
inputInfo: e.detail.value || 'search'
});
},
然后再加點樣式:
.cover-input{
width: 80%;
height: 32px;
line-height: 32px;
border-radius: 5px;
background-color: rgba(255, 255, 255, 0.9);
position: relative;
left: 50%;
transform: translateX(-50%);
padding-left: 15rpx;
padding-right: 15rpx;
}
.text{
height: 32px;
line-height: 32px;
}
.input{
height: 32px;
line-height: 32px;
/* margin-top為text的高度,保持視覺上一致 */
margin-top: -32px;
}
如果我們想在里面加一個指南針呢。我們在cover-view里面塞進一個cover-image,圖片長成下面這樣,當然還要把準確的角度放上去。
<cover-image class='compassbg' src='img/compass.png' style='transform:rotate({{rotate}}deg);'></cover-image>
onLoad方法里面加上這幾行代碼就好了。
var that=this
wx.onCompassChange(function (res) {
that.setData({
// 計算應偏移度數
rotate: 360 - res.direction.toFixed(0)
})
});
如果想用更精確的藍牙定位,我們就需要自己根據藍牙信號自己計算了,用到上面提到的三點定位公式。感興趣的人可以看下面的鏈接:
https://blog.csdn.net/coder_daiwang/article/details/78436996
如果你是土豪玩家,就可以試一下微信小程序的插件,這些插件基本上是另開一個新頁面,里面裝滿你想要的功能。但是使用這些插件需要一個復雜的接入流量,需要加域名白名單什么的,這里就不演示了。
https://lbs.qq.com/miniprogram_plugin/index.html
最后給大家安利一個地圖開放平臺-騰訊位置服務,據說微信APP、小程序里面所有的原生地圖服務,都是由騰訊位置服務提供基礎技術支持,所以基于他們的技術開發出來的地圖服務,與微信小程序的結合是最天然的,用戶體驗也最為流暢。
可以說,在小程序下面如果需要開發地圖功能,騰訊位置服務是最佳選擇?,F在,他們把所有與小程序開發相關的內容都整合進了一個小程序解決方案,里面有各類為小程序開發者準備的API、組件、插件、開發工具、解決方案...可以滿足開發者不同場景下的需求,強烈推薦大家上去體驗一下。
https://lbs.qq.com/product/miniapp/home/
總結
LBS的相關知識是非常小眾,但是非常實用的,本文只是走馬看花地介紹一下其發展厲害與部分知識點,深入下去,所有知識都能無限被放大。地圖顯示與地點定位是真實對應我們這個復雜的世界。世界有多復雜,地圖與定位就有復雜。得益于三大廠商的數據沉淀與高度抽象,我們開發變得更簡單了,公眾生活也變得更美好了。
. 用pix玩車非常簡單,復雜度遠遠低于無人機;
2. 不管是ardupilot,還是px4固件都是原生支持無人車,不需要做任何代碼改動的二次開發,需要做的就是參數修改和傳感器校準;
3. ardupilot需要刷成ardurover固件,這個固件同時也支持船。
a. 輸出1通道接舵機是車輛轉向
b. 輸出3通道接電調,控制油門動力
4. px4固件沒有特定的固件,只需要改改機架到對應的車輛即可(SYS_AUTOSTART=50000)
a. 輸出2通道接轉向舵機
b. 輸出4通道接無刷電調
5. 陀螺儀,羅盤校準,這些和無人沒有差別。
6. 解鎖電機,默認手動模式,可以設置多個模式 比如返航,自動等;
給飛控用串口接上帶攝像頭的樹莓派,這樣一個智能車就跑起來了,還帶圖傳和數傳, 如果再給樹莓派接一個帶sim卡的usb無線網卡 ,這樣一個帶4G的智能小車了。
參考文檔:
https://docs.px4.io/main/en/frames_rover/traxxas_stampede.html
https://ardupilot.org/rover/docs/gettit.html
輯導語:物聯網,是依托互聯網技術、現代傳感技術等,將空間中的設備、系統、傳感器數據打通, 實現人與物、物與物的連接。文章主要介紹了用IDEAS產品五要素方法論協助系統化構思物聯網產品服務的一些方法, 希望通過此文能夠加深你對智能物聯網的認識。
筆者在SIoT智能家居和智能可穿戴產品行業具有多年產品經理/GTM崗位經驗,帶過智能攝像機、智能體脂稱、智能手環、智能手表品類的多條產品線。兩篇EI論文發表(ISCID)計算機智能和設計國際研討會。
本文講IDEAS產品要素方法論,在智能硬件行業較為適用,國外已廣泛運用。文章主要面向希望從傳統消費產品/互聯網產品轉型到智能硬件行業產品的朋友。
智慧物聯產品:Internet of Things(IoT)/Smart Connected Device
在此基礎上衍生的有SIoT(Smart Internet of Things )、AIoT(人工智能物聯網)=AI(人工智能)+IoT(物聯網)、IoE(the Internet of Everything )等概念。
圖:智慧物聯產品組成
全球范圍表現比較突出的IoT公司有:Microsoft、Amazon、Google、IBM、Cisco、Verizon、AT&T、GE、Fitbit、華米、Honeywell、BlackRock
如:突出的IoT公司
中國各大廠都在積極布局智慧物聯:小米公司的AIOT 戰略,2020Q4財報顯示平臺連接設備2.89億臺;百度2020Q4財報首次將自己稱為“AI生態型公司”;此外,華為5G+Aiot智聯未來愿景,字節公司旗下大力教育入局智能教育硬件產品,騰訊和阿里也早已入局。
圖:小米2020Q4財報節選
展望未來,以深度學習的AI 將持續驅動AI 加IoT(即AIoT)融合的系統應用需求,例如:「AI x 智慧交通」、「AI x 智慧零售」、「AI x 智慧制造」 、「AI x 智慧健康」?等應用,發揮軟硬融合的乘法綜效。以CES為例,社群和媒體熱門話題,圍繞在智慧物聯相關產品。
圖:2020 CES展覽熱門關鍵詞
正如德魯克在《管理的實踐》一書中舉例:客戶不是為了購買1厘米的鉆孔機,而是需要一個1厘米的鉆孔。同樣地,沒人去關心產品連不聯網,重點在產品為客戶創造什么價值,如何做的更好。
要警惕無用的IoUT產品,物聯并不意味著有用,避免為了物聯而物聯。
智慧物聯面臨的目標挑戰:
1.解決真正的問題
2.提供更好的解決方案:傳統硬件公司只是將產品銷售給用戶,要保持持續聯系的難度或成本較大。這在智慧物聯時代下將改善,某一產品作為連接其他產品的生態家族成員之一,向用戶提供【生態體驗】。
圖:小米的智能生活家和小愛音箱支持的合作品牌
3.增加的成本能對應到價值之上:往往伴隨著商業模式的變革,以后我再單獨寫一篇智慧物聯產品商業模式,此處不細展開了。
比如我帶過的產品聯想(Lenovo)1080P云臺高清智能網絡攝像頭RC3故宮文創款,除硬件產品銷售利潤外,運營穩定情況下,還有10%以上的云存儲收入占比。
圖:聯想RC3故宮文創款
4.智慧化帶來的產業鏈上下游洗牌:智能相關模塊成為核心部件。與智能相關的傳感器模塊、芯片和觸摸屏等模塊洗牌傳統硬件供應鏈。
以智能手表為例,
圖:智能手表產業鏈上下游
上節提到要警惕無用的IoUT產品,智慧物聯產品最怕的是功能堆疊,產品同質化;行業需要Good IDEAS
圖:智能手環手表產品功能堆疊
IDEAS 如下方面:
Interface 多元整合體驗 指的是:設備和關系人之間 以及設備與設備之間的 互動模式。含:
圖:各種輸入介質
舉例1:以我在帶的Amazfit Scale 產品為例,體脂稱端的3.4英寸大顯示屏可使用戶一目了然訪問多達八個最重要的身體健康指標,手機APP上則生成含16項數據的健康分析報告:體重、BMI、體脂率、肌肉量、水分率、蛋白質率、基礎代謝、內臟脂肪等級、骨量、骨骼肌、皮下脂肪、身體年齡、理想體重、肌肉變化量、體型、身體得分,來評估整體健康程度的分數。
圖:Amazfit Scale
舉例2:以我在帶的Zepp E產品為例,基于手表內置的NFC功能,實現P7高配車型解鎖、閉鎖等功能,探索智能汽車和智能可穿戴設備的多場景互聯,設備與設備之間互動,為用戶提供自然、便利的交互體驗。
圖:Zepp E支持小鵬P7 高配 車鑰匙功能
Device 智慧聯網設備 指的是:主要硬件產品,也可能會包含手機或其他聯網設備。含:
舉例1:GE Kitchen Hub微波爐內置攝像頭,用于遠程監控加熱灶的食物或視頻聊天,另有齊全的菜譜應用。
圖:GE Kitchen Hub微波爐,攝影師 普萊斯CNET
舉例2:以我帶過的產品為例,智能攝像機X1 涵蓋軟件+硬件+云+APP 一體產品服務整合。
圖:聯想智能攝像機X1
Environment (Sensor+Data)環境數據感知與分析 指的是:設備要配置的傳感器,和期望傳感器實現的功能目的。含:
圖:傳感器分類
舉例1:智能可穿戴設備常用的傳感器如下,以我在帶的華米Amazfit X和Zepp Z產品為例,產品涵蓋:PPG 生物數據傳感器、電極式心電傳感器、陀螺儀、地磁傳感器、加速計、氣壓傳感器、環境光傳感器、電容傳感器等,來實現功能目標。
圖:Amazfit X 典型功能應用
傳感器相當于 【眼睛】,處理器相當于【大腦】
舉例2:數據可視化,Zepp App,一個全天候健康管理平臺將各項人體健康數據可視化。
華米Amazfit 智能手表接入了全新升級的 Zepp App。Zepp 是一個全天候的健康管理平臺,除了設置手表之外,還可記錄各種運動、身體狀態等數據,并支持隨時查看專業指標解讀。通過分析多項數據源,對您的身體數據進行全方面的管理,隨時隨地了解當前身體狀況。
圖:Zepp APP
Actor 重要關系人 指的是:使用產品的主要關系人。含:
舉例1:以可穿戴裝置為例,可從關系人地圖中推演,可能有多重關系;不同關系人有不同的利益考量點。
圖:可穿戴裝置關系人
舉例2:幫寶適推出的Lumi智能嬰兒監控系統,結合攝像頭和連接嬰兒尿布的傳感器,展示寶寶睡眠量和睡眠質量,結合APP推薦的嬰兒各個發育階段指導,幫助父母進行嬰兒護理。產品關系人:醫生或育兒機構建議、父母購買、嬰兒穿戴使用。
圖:幫寶適Lumi
舉例3:以華米公司員工打卡設備小米手環為例,決策者是老板,購買者是公司采銷組員工,使用者是華米員工,考勤、步數等數據公司和員工均可查看。
圖:小米手環5 公司門禁
Scenario 使用場景 指的是:上一步驟中使用情境設計中的情境,讓使用者有持續使用動機的情境(創造價值、解決問題、提高效率等)。含:
舉例1:以我做過的一個課題為例,在廚房烹飪場景下,探尋用戶的訴求。
舉例2:以我做過的一個課題為例,在出行場景下,探尋小米平衡車的訴求。
圖:浙大商業設計創新實驗室,電動出行工具研究
綜上,隨著傳感器通信等成本下降,更多物聯設備的進入變得更具有成本效益,必要的技術如傳感器技術、5G、機器學習等處于合理發展中,智慧物聯新時代變革和行業巨頭洗牌在進行。智慧物聯產品要避免為了科技而科技,警惕無用的物聯,為客戶創造有價值的產品。不要(More Functions),要Good IDEAS,運用IDEAS 協助系統化構思物聯網產品及其服務。
[1] 小米集團2020年Q3財報,2020
[2] 百度財報里的伏筆:下一個十年,邁入混合智能時代,澎湃,2020.2.18
[3] 2020 CES美國消費性電子展 CONSUMER ELECTRONICS SHOW Las Vegas,美國,2020
[4] 小米的智能生活家,http://www.mi.com/a/h/13951.html?masid=2726.0097
[5] 小米小愛音箱Pro,https://www.mi.com/buy/detail?product_id=10745
[6] 資策會創研所,徐毓良William Shyu,2015.3
[7] CES 2020最受歡迎的20種產品,幫寶適Lumi,2020
[8] Amazfit X,https://www.amazfit.com/cn/amazfit-x.html
[9] Amazfit 智能運動手表 2,https://www.amazfit.com/cn/watch-2.html
[10] Lenovo攝像頭RC3故宮文創款,https://item.lenovo.com.cn/product/1007171.html?_ga=2.112749572.1241379926.1614326342-612761466.1607594932
[11] Amazfit Scale,https://www.amazfit.com/en/smart-scale.html
[12] 浙大商業設計創新實驗室,電動出行工具研究項目,包德福 童上 李丹 郝曉禹,2018
本文由 @尼莫點 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議
*請認真填寫需求信息,我們會在24小時內與您取得聯系。