iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 5
0
IoT

homekit+pixhawk系列 第 5

RTKLIB 架設RTK基站with raspberry pi

前陣子在玩一些有趣的GPS開發版,發現到一顆雙頻多星系的GNSS晶片,ublox的F9P,這塊開發版本來要拿來做無人機上的GPS晶片使用,但當時的ardupilot韌體還沒有辦法支援這一塊GNSS晶片,因此就先查一下一些關於定位的技術,發現到有一個有趣的技術,稱之為RTK,簡單來說就是用一片放置於固定位置GNSS晶片來校正另一片具移動能力的GNSS晶片來達到毫米等級的定位誤差,當然在未來的文章中也會提到如何用這樣的晶片來校正無人載具的定位位置。

透過raspberry pi 安裝RTKLIB

首先將RTKLIB的source code抓下來

git clone https://github.com/tomojitakasu/RTKLIB

接著將branch切換到2.4.3版本上

cd RTKLIB
git checkout rtklib_2.4.3

接著移動到app/str2str/gcc目錄下

cd app/str2str/gcc

然後編譯str2str

make

接著就得到str2str這個東西了

使用F9P當成RTK基站

將F9P用USB連接到raspberry pi上
並執行下列指令

str2str -in stream[#...] -out stream[#...] [-out stream[#...]...] [options]

其中-in stream[#...]以及-out stream[#...]為輸入以及輸出的介面,可以是下列這幾種

輸入輸出界面

serial: serial://port[:brate[:bsize[:parity[:stopb[:fctr]]]]]
tcp server: tcpsvr://:port
tcp client: tcpcli://addr[:port]
ntrip client : ntrip://[user[:passwd]@]addr[:port][/mntpnt]
ntrip server : ntrips://[:passwd@]addr[:port][/mntpnt[:str]] (only out)
file         : [file://]path[::T][::+start][::xseppd][::S=swap]

因為F9P是透過USB直接連線到raspberry pi上,所以選擇serial輸入即可,若需要以tcp server的方式輸出,就使用-out tcpsvr://:port 其中port則為需要開放這個服務的port,移動站只要具備網路能力,就可以透過tcp/ip取得rtcm的校正資訊。

輸入及輸出形式

rtcm2        : RTCM 2 (only in)
rtcm3        : RTCM 3 (in and out)
nov : NovAtel OEMV/4/6,OEMStar (only in) oem3 : NovAtel OEM3 (only in)
ubx : ublox LEA-4T/5T/6T (only in)
ss2 : NovAtel Superstar II (only in)
hemis : Hemisphere Eclipse/Crescent (only in) stq : SkyTraq S1315F (only in)
javad: Javad (only in)
nvs: NVS BINR (only in)
binex: BINEX (only in)

F9P預設會輸出NMEA、UBX以及RTCM3,因此在這裡選擇輸入輸出皆可以使用的RTCM3即可
到此,已可以完成從F9P上取得RTCM3資訊並且以TCP/IP的方式傳送出去了


上一篇
利用mosquitto傳送MQTT資訊吧!
下一篇
用python來送做一個ptt機器人吧!
系列文
homekit+pixhawk30

尚未有邦友留言

立即登入留言