全雪貞,張 潔,文仙姣
(1.青海省基礎(chǔ)測(cè)繪院,青海 西寧 810001;2.青海省自然資源綜合調(diào)查監(jiān)測(cè)院,青海 西寧 810001)
物聯(lián)網(wǎng)時(shí)代是人類信息化發(fā)展的一次重要變革。聯(lián)網(wǎng)是通過各種信息傳感設(shè)備,按約定的協(xié)議,把任何物品與互聯(lián)網(wǎng)相鏈接,進(jìn)行信息交換和通信,從而實(shí)現(xiàn)對(duì)物品的智能化識(shí)別、定位、追蹤、監(jiān)控和管理的一種網(wǎng)絡(luò)。解決定位和追蹤問題,本質(zhì)上就是解決人與物、物與物的位置鏈接問題[1-2]。2020年6月23日北斗三號(hào)最后一顆衛(wèi)星成功發(fā)射,實(shí)現(xiàn)了北斗系統(tǒng)全球組網(wǎng)[3-4],這意味著我國全自主研發(fā)的北斗系統(tǒng)已具備全球定位服務(wù)能力,將極大促進(jìn)基于位置的場(chǎng)景智能化應(yīng)用。位置智能化是物聯(lián)網(wǎng)的重要表現(xiàn)形式,將重塑眾多行業(yè)思考地理位置的重要性。北斗系統(tǒng)應(yīng)用范圍由單一的工程測(cè)量逐漸拓展到安全監(jiān)測(cè)、氣象、地震、水利、電力、農(nóng)業(yè)、無人機(jī)、手機(jī)、汽車等領(lǐng)域。北斗模塊/終端已在悄悄向物聯(lián)網(wǎng)靠近,“高精度”、“低成本”、“小型化”已成為勢(shì)不可擋的趨勢(shì)。
本文基于Raspberry Pi 4B和Node.js技術(shù),實(shí)現(xiàn)了低成本高精度位置服務(wù)的物聯(lián)網(wǎng)裝備研發(fā),通過MQTT技術(shù)對(duì)北斗RTK定位結(jié)果進(jìn)行遠(yuǎn)程傳輸,實(shí)時(shí)上傳至物聯(lián)網(wǎng)云平臺(tái)并進(jìn)行存儲(chǔ)。該設(shè)備還可結(jié)合GIS和遙感技術(shù)定制開發(fā)業(yè)務(wù)系統(tǒng),為更多的行業(yè)應(yīng)用提供廣闊的思路。
本文采用Raspberry Pi 4B(1.2版4核4G內(nèi)存的ARM主板)作為運(yùn)行載體,北斗定位模塊選擇Mosaic Mini-EVK,其接口如表1所示。若以USB方式鏈接Raspberry Pi會(huì)自動(dòng)安裝USB驅(qū)動(dòng)程序,虛擬出一個(gè)網(wǎng)絡(luò)(固定 IP 地址192.168.3.1)和兩個(gè)串口(/dev/ttyACM0和/dev/ttyACM1),3個(gè)接口均為獨(dú)立接口;同時(shí)USB鏈接可以供電,無需外接電源。
表1 北斗定位模塊Mosaic Mini-EVK接口列表
北斗RTK物聯(lián)網(wǎng)設(shè)備如圖1所示,通過北斗/GNSS天線接收衛(wèi)星信號(hào),通過MMCX線纜連接北斗定位模塊;通過一根USB線連接北斗定位模塊和Raspberry Pi,既能給北斗定位終端供電,又能進(jìn)行雙向串口通信。Raspberry Pi作為運(yùn)載平臺(tái),可運(yùn)行RTKLIB-str2str和Node.js,將遠(yuǎn)程采集的高精度北斗RTK定位結(jié)果上傳至物聯(lián)網(wǎng)云平臺(tái),供后續(xù)GIS開發(fā)應(yīng)用[4-5]。
圖1 北斗RTK物聯(lián)網(wǎng)設(shè)備模型
在Raspberry Pi中安裝和編譯RTKLIB-str2str[6-7],生成str2str二進(jìn)制可執(zhí)行的程序。終端輸入的命令為;
$ git clone https://github.com/tomojitakasu/RTKLIB.git
$ cd /RTKLIB/app/str2str/gcc
$ make
利用RTKLIB-str2str建立流動(dòng)站與基準(zhǔn)站之間的鏈接,確保Raspberry Pi通過WiFi/GPRS等方式正常接入互聯(lián)網(wǎng)。差分?jǐn)?shù)據(jù)流指向如圖2所示,str2str輸入流為Ntrip Client,輸出流為串口(/dev/ttyACM0),將Ntrip協(xié)議中的RTCM差分改正數(shù)通過串口傳輸給北斗/GNSS模塊進(jìn)行RTK定位;同時(shí)所有鏈路均為雙向通信,str2str將串口輸出的GGA語句通過Ntrip Client傳入Ntrip Caster,在北斗/GNSS模塊終端附近計(jì)算得到一個(gè)虛擬參考站(VRS),再將這個(gè)VRS的差分改正數(shù)RTCM數(shù)據(jù)傳回,從而實(shí)現(xiàn)高精度實(shí)時(shí)位置RTK定位[8]。
圖2 北斗RTK差分?jǐn)?shù)據(jù)流
str2str命令的執(zhí)行語句為;
$ str2str -in ntrip://15kyvhc:qafys5@60.205.8.49:8002/RTCM32_GNSS_RTK -out serial://ttyACM0:115200:8:n:1 -n 100 -b 1
北斗定位模塊Mosaic Mini-EVK的RTK解算結(jié)果將通過串口/dev/ttyACM1按照1 Hz頻率播發(fā)NMEAGGA。Node.js[9-10]串口數(shù)據(jù)讀寫包Node-serialport通過串口方式上報(bào)(默認(rèn)0.2Hz頻率)阿里云物聯(lián)網(wǎng)服務(wù)平臺(tái)[10-11],實(shí)現(xiàn)遠(yuǎn)程穿透,RTK定位坐標(biāo)自動(dòng)回傳。北斗RTK定位結(jié)果上云的數(shù)據(jù)流向如圖3所示。
圖3 Node.js串口上傳北斗RTK定位結(jié)果
NMEA-GGA 語句包括語句ID標(biāo)識(shí)頭、世界時(shí)間、緯度、緯度方向、經(jīng)度、經(jīng)度方向、定位狀態(tài)指示、使用衛(wèi)星數(shù)量、HDOP—水平精度因子、橢球高、高度單位、大地水準(zhǔn)面高度異常差值、高度單位、差分?jǐn)?shù)據(jù)期限、差分參考基站標(biāo)號(hào)、校驗(yàn)和結(jié)束標(biāo)記(用回車符<CR>和換行符<LF>)17個(gè)字段,分別用14 個(gè)逗號(hào)進(jìn)行分隔,即 $GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR> <LF>,格式示例為;
$GPGGA,084400.000,3028.8931184,N,11424.7794113,E,5,06,3.7,44.7958,M,-13.5787,M,1.0,0381*5D
其中,$ GPGGA為ID標(biāo)示頭;<1>為UTC時(shí)間,格式為hhmmss.sss;<2>、<4>分別為緯度、經(jīng)度,格式為ddmm.mmmm;<3>、<5>分別為緯度方向N或S、經(jīng)度方向E或W;<6>為解算狀態(tài)指示,0初始化、1單點(diǎn)定位、 2碼差分、 3無效PPS、 4固定解、 5浮點(diǎn)解、 6正在估算、7人工輸入固定值、8模擬模式、9WAAS差分;<7>為使用衛(wèi)星數(shù)量,00~12;<8>為HDOP—水平精度因子,0.5~99.9,一般認(rèn)為HDOP越小,質(zhì)量越好;<9>、<10>分別為海拔高度、大地水準(zhǔn)面高度異常差值,-9999.9~9999.9 m,M指單位m;<11>為差分?jǐn)?shù)據(jù)期限,最后設(shè)立RTCM傳送的秒數(shù)量,若不是差分定位則為空;<12>為差分參考基站標(biāo)號(hào),0000~1023;*為語句結(jié)束標(biāo)志符;xx為從$開始到*之間的所有ASCII碼的異或校驗(yàn);<CR>、<LF>分別為回車符、換行符,均為結(jié)束標(biāo)記。
阿里云物聯(lián)網(wǎng)平臺(tái)操作包括注冊(cè)北斗RTK設(shè)備、選擇Node.js開發(fā)包、下載“aliyun-iot-device-sdk”、配置文件并上傳數(shù)據(jù)4個(gè)步驟。確保Raspberry Pi接入互聯(lián)網(wǎng)并安裝最新版Node.js后,再安裝Node-serialport并運(yùn)行“aliyun-iot-device-sdk”。數(shù)據(jù)上云需要完成4個(gè)步驟;
1)安裝最新版Node.js.,執(zhí)行語句為;
$ npm config set registry http://registry.npm.taobao.org
2)安裝Node-serialport包,執(zhí)行語句為;
$ sudo npm install serialport --unsafe-perm --build-form-source
3)修改阿里云物聯(lián)網(wǎng)平臺(tái)SDK的Index.js,實(shí)現(xiàn)串口讀取數(shù)據(jù),執(zhí)行語句為;
const SerialPort = require('serialport') ‘ 導(dǎo)入包
const port = new SerialPort('/dev/ttyACM0', {
baudRate:115200, ‘波特率
dataBits:8, ‘?dāng)?shù)據(jù)位
parity:'none', ‘奇偶檢校
stopBits:1, ‘停止位
flowControl:false, ‘流控開關(guān)
autoOpen: false ‘是否自動(dòng)連接
});
var gga;
port.open(function (error) {
if ( error ) {
console.log('failed to open: '+error);
} else {
console.log('open');
port.on('data', function(data) {
gga = data.toString();
});
}
});
setInterval(() => {
const params = {
GGA: gga
};
4)運(yùn)行程序,實(shí)現(xiàn)數(shù)據(jù)上云,執(zhí)行語句為;
$ sudo bash start.sh
終端高精度位置數(shù)據(jù)上云后,即可采用GeoServer服務(wù)構(gòu)建WebGIS系統(tǒng),如圖4所示。利用低成本北斗RTK物聯(lián)網(wǎng)設(shè)備成果,充分發(fā)揮其定位精度高等技術(shù)優(yōu)勢(shì),以現(xiàn)有北斗基站為支撐,同時(shí)利用物聯(lián)網(wǎng)通信技術(shù)、大數(shù)據(jù)分析技術(shù)和GIS服務(wù)技術(shù),在安全管理方面開展基于安全稽查現(xiàn)場(chǎng)作業(yè)的智能安全帽、智能接地線等智能工器具工程應(yīng)用。通過對(duì)智能工器具定位芯片的改造,現(xiàn)場(chǎng)數(shù)據(jù)實(shí)時(shí)感知和綜合應(yīng)用,實(shí)現(xiàn)對(duì)作業(yè)現(xiàn)場(chǎng)風(fēng)險(xiǎn)的感知和預(yù)警,以及對(duì)人員和施工過程安全的定位與管控。
圖4 基于低成本北斗RTK物聯(lián)網(wǎng)設(shè)備搭建的電力北斗時(shí)空基準(zhǔn)平臺(tái)
隨著我國北斗相關(guān)設(shè)備研制水平的大幅提高和應(yīng)用范圍的不斷拓展,在物聯(lián)網(wǎng)浪潮的沖擊下,作為萬物互聯(lián)時(shí)代提供位置信息最有效的手段,北斗系統(tǒng)與物聯(lián)網(wǎng)相結(jié)合將帶來越來越多的應(yīng)用。物聯(lián)網(wǎng)平臺(tái)接收并存儲(chǔ)北斗RTK終端設(shè)備的定位結(jié)果,并通過NMEA-GGA解析獲得終端設(shè)備的定位坐標(biāo)、定位模式、定位精度等信息,再結(jié)合GIS和遙感技術(shù)強(qiáng)大的可視化和地理空間分析能力,配合運(yùn)用大數(shù)據(jù)、人工智能等高新技術(shù),實(shí)現(xiàn)北斗智能化應(yīng)用?;诖?,本文采用Raspberry Pi和Node.js成功研發(fā)了低成本北斗RTK物聯(lián)網(wǎng)設(shè)備,可在諸多場(chǎng)景進(jìn)行應(yīng)用,如人員、設(shè)備位置上報(bào),農(nóng)機(jī)自主導(dǎo)航,自然或人工構(gòu)建監(jiān)測(cè),基于厘米級(jí)定位精度配合高精度地圖實(shí)現(xiàn)車道級(jí)導(dǎo)航等。