| | | |
前端的主要特點是:
其他影像位於 ./images 資料夾中。
適用於 Orange Pi Zero、Orange Pi Zero 2、Orange Pi Zero 3 SBC 的準備閃存映像:Armbian_RTKBase
如果您使用 Raspberry Pi,感謝 jancelin,您可以在此處下載準備刷新的 iso 檔案。
將您的 gnss 接收器連接到樹莓派/orange pi/....
打開終端機並:
cd ~
wget https://raw.githubusercontent.com/Stefal/rtkbase/master/tools/install.sh -O install.sh
chmod +x install.sh
sudo ./install.sh --all release
去喝杯咖啡吧,要一段時間。該腳本將安裝所需的軟體,如果您使用 USB 連接的 U-Blox ZED-F9P 接收器,它將被偵測到並設定為作為基地台工作。如果您不使用 F9P,則必須手動設定接收器(請參閱手動安裝中的步驟 7),並從設定頁面選擇正確的連接埠。
開啟 Web 瀏覽器以存取http://ip_of_your_sbc
(腳本將嘗試向您顯示此 IP 位址)。預設密碼是admin
。設定頁面可讓您輸入您自己的基本座標、ntrip 憑證等設定...
如果您還不知道基本精確座標,那麼是時候閱讀以下教學之一:
可以在不使用--all
選項的情況下使用install.sh
腳本,將安裝過程分為幾個不同的步驟:
################################
RTKBASE INSTALLATION HELP
################################
Bash scripts to install a simple gnss base station with a web frontend.
* Before install, connect your gnss receiver to raspberry pi/orange pi/.... with usb or uart.
* Running install script with sudo
Easy installation: sudo ./install.sh --all release
Options:
-a | --all <rtkbase source>
Install all you need to run RTKBase : dependencies, RTKlib, last release of Rtkbase, services,
crontab jobs, detect your GNSS receiver and configure it.
<rtkbase source> could be:
release (get the latest available release)
repo (you need to add the --rtkbase-repo argument with a branch name)
url (you need to add the --rtkbase-custom-source argument with an url)
bundled (available if the rtkbase archive is bundled with the install script)
-u | --user
Use this username as User= inside service unit and for path to rtkbase:
--user=john will install rtkbase in /home/john/rtkbase
-d | --dependencies
Install all dependencies like git build-essential python3-pip ...
-r | --rtklib
Get RTKlib 2.4.3b34g from github and compile it.
https://github.com/rtklibexplorer/RTKLIB/tree/b34g
-b | --rtkbase-release
Get last release of RTKBase:
https://github.com/Stefal/rtkbase/releases
-i | --rtkbase-repo <branch>
Clone RTKBASE from github with the <branch> parameter used to select the branch.
-j | --rtkbase-bundled
Extract the rtkbase files bundled with this script, if available.
-f | --rtkbase-custom <source>
Get RTKBASE from an url.
-t | --unit-files
Deploy services.
-g | --gpsd-chrony
Install gpsd and chrony to set date and time
from the gnss receiver.
-e | --detect-gnss
Detect your GNSS receiver. It works only with receiver like ZED-F9P.
-n | --no-write-port
Doesn'''t write the detected port inside settings.conf.
Only relevant with --detect-gnss argument.
-c | --configure-gnss
Configure your GNSS receiver.
-s | --start-services
Start services (rtkbase_web, str2str_tcp, gpsd, chrony)
-h | --help
Display this help message.
因此,如果您確實想要它,讓我們進行手動安裝並進行一些說明:
使用sudo ./install.sh --dependencies
安裝依賴項,或手動安裝:
sudo apt update
sudo apt install -y git build-essential pps-tools python3-pip python3-dev python3-setuptools python3-wheel libsystemd-dev bc dos2unix socat zip unzip pkg-config psmisc
使用sudo ./install.sh --rtklib
安裝 RTKLIB ,或:
取得RTK庫
cd ~
wget -qO - https://github.com/rtklibexplorer/RTKLIB/archive/refs/tags/b34j.tar.gz | tar -xvz
編譯並安裝str2str:
或者,您可以編輯 RTKLIB/app/str2str/gcc 中 makefile 中的 CTARGET 行
cd RTKLIB/app/str2str/gcc
nano makefile
對於 Orange Pi Zero SBC,我使用:
CTARGET = -mcpu=cortex-a7 -mfpu=neon-vfpv4 -funsafe-math-optimizations
然後就可以編譯並安裝str2str了:
make
sudo make install
編譯/安裝rtkrcv
和convbin
方式與str2str
相同。
取得最新的 rtkbase 版本sudo ./install.sh --rtkbase-release
,或:
wget https://github.com/stefal/rtkbase/releases/latest/download/rtkbase.tar.gz -O rtkbase.tar.gz
tar -xvf rtkbase.tar.gz
如果您願意,可以克隆此存儲庫以獲取最新程式碼。
安裝 rtkbase 需求:
python3 -m pip install --upgrade pip setuptools wheel --extra-index-url https://www.piwheels.org/simple
python3 -m pip install -r rtkbase/web_app/requirements.txt --extra-index-url https://www.piwheels.org/simple
使用sudo ./install.sh --unit-files
安裝 systemd 服務,或使用以下命令手動安裝:
rtkbase/unit/
)以將{user}
替換為您的使用者名稱。archive_and_clean.sh
會為你做這件事。預設設定會壓縮前一天的資料並刪除所有超過 90 天的存檔。若要自動執行這 2 個任務,請啟用rtkbase_archive.timer
。預設值是每天凌晨 04:00 運行腳本。/etc/systemd/system/
然後啟用 Web 伺服器、str2str_tcp 和 rtkbase_archive.timer: sudo systemctl daemon-reload
sudo systemctl enable rtkbase_web
sudo systemctl enable str2str_tcp
sudo systemctl enable rtkbase_archive.timer
使用sudo ./install.sh --gpsd-chrony
安裝並設定 chrony 和 gpsd ,或:
使用sudo apt install chrony
安裝 chrony,然後在 chrony conf 檔案 (/etc/chrony/chrony.conf) 中加入此參數:
refclock SHM 0 refid GPS precision 1e-1 offset 0.2 delay 0.2
編輯時間單位文件。您應該設定After=gpsd.service
安裝 gpsd 版本 >= 3.2,否則它將無法與 F9P 配合使用。其conf檔案應包含:
# Devices gpsd should connect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="tcp://localhost:5015"
# Other options you want to pass to gpsd
GPSD_OPTIONS="-n -b"
編輯 gpsd 單位檔案。您應該在“[Unit]”部分中有類似這樣的內容:
[Unit]
Description=GPS (Global Positioning System) Daemon
Requires=gpsd.socket
BindsTo=str2str_tcp.service
After=str2str_tcp.service
sudo systemctl daemon-reload
sudo systemctl enable chrony
sudo systemctl enable gpsd
使用 USB 或 uart 將您的 gnss 接收器連接到 raspberry pi/orange pi/...,並檢查它使用哪個 com 連接埠(ttyS1、ttyAMA0、其他...)。如果它是 U-Blox F9P 接收器(usb 或 uart)或 Septentrio Mosaic-X5 (usb),您可以使用sudo ./install.sh --detect-gnss
。寫下結果,稍後您可能需要它。
如果您尚未配置 gnss 接收器,則必須將其設定為輸出原始資料:
如果是 U-Blox ZED-F9P(usb 或 uart)或 Septentrio Mosaic-X5(usb),您可以使用
sudo ./install.sh --detect-gnss --configure-gnss
如果您需要使用另一台電腦(例如 U-center)的設定工具,您可以使用socat
:
sudo socat tcp-listen:128,reuseaddr /dev/ttyS1,b115200,raw,echo=0
如果需要,請更改 ttyS1 和 115200 值。然後您就可以在U-center中使用基地台IP位址和連接埠n°128的網路連線。
現在您可以使用sudo ./install.sh --start-services
啟動服務,或:
sudo systemctl start rtkbase_web
sudo systemctl start str2str_tcp
sudo systemctl start gpsd
sudo systemctl start chrony
sudo systemctl start rtkbase_archive.timer
一切都應該準備就緒,現在您可以打開網頁瀏覽器存取您的基地台 IP 位址。
RTKBase 使用多個以run_cast.sh
啟動的 RTKLIB str2str
實例作為 systemd 服務。 run_cast.sh
從settings.conf
取得其設置
str2str_tcp.service
是主實例。它連接到 gnss 接收器並在 TCP 上為所有其他服務廣播原始資料。str2str_ntrip_A.service
從主實例獲取數據,將數據轉換為 rtcm 並將它們串流到 Ntrip 腳輪。str2str_ntrip_B.service
從主實例獲取數據,將數據轉換為 rtcm 並將其串流傳輸到另一個 Ntrip 播送器。str2str_local_ntrip_caster.service
從主實例獲取數據,將數據轉換為rtcm,並充當本地Ntripcaster。str2str_rtcm_svr.service
從主實例獲取數據,將數據轉換為 rtcm 並將其串流傳輸到客戶端str2str_rtcm_serial.service
從主實例獲取數據,將數據轉換為 rtcm 並將它們流式傳輸到串行端口(無線電鏈路或其他外設)str2str_file.service
從主實例取得數據,並將數據記錄到檔案中。 當rtkbase_web
服務運行時,Web GUI 可用。
沒有 U-Blox 接收器的離線基地台,如何取得日期和時間:如果 gpsd 無法理解來自 gnss 接收器的原始數據,您可以啟用 raw2nmea 服務。它將原始資料轉換為在settings.conf
(nmea_port) 中設定的tcp 端口,並且gpsd 將使用它來提供chrony。 systemctl enable --now rtkbase_raw2nmea
空拍影像:預設地圖背景是 OpenStreetMap,但如果您有 Maptiler 鍵,則可以切換到全球空拍圖層。要啟用此圖層,請在 Maptiler 上建立一個免費帳戶,建立一個金鑰並將其新增至[general]
部分內的settings.conf
: maptiler_key=your_key
接收器選項:str2str 接受一些與接收器相關的選項。如果您使用 U-Blox,建議使用-TADJ=1
參數作為 Rtcm 和 Ntrip 輸出中非捨入秒值的解決方法。您可以在設定表單中輸入此參數。更多資訊請點擊這裡和這裡。
如果你想從 dev 分支安裝 RTKBase,你可以使用以下指令來完成:
cd ~
wget https://raw.githubusercontent.com/Stefal/rtkbase/dev/tools/install.sh -O install.sh
chmod +x install.sh
sudo ./install.sh --all repo --rtkbase-repo dev
具有時間脈衝輸出的 gnss 接收器是非常精確的 stratum 0 時鐘,因此,您的 gnss 基地台可以充當本地網路和/或 ntp 池的 stratum 1 ntp 對等點。有幾個步驟可以做到這一點:
將時間脈衝輸出 + GND 連接到 SBC 上的一些 GPIO 輸入。
在作業系統中將此輸入配置為 PPS。
樹莓派範例:
dtoverlay=pps-gpio,gpiopin=18
。 「18」是用於時間脈衝的輸入。pps-gpio
(如果尚不存在)。Orange Pi Zero 範例,位於 /boot/armbianEnv.txt 內:
pps-gpio
加入overlays
線。param_pps_pin=PA19
<- 將 'PA19' 變更為您的輸入。設定 gpsd 和 chrony 以使用 PPS
gpsd:註解/etc/defaut/gpsd
中的DEVICE
行並取消註解#DEVICES="tcp:\127.0.0.1:5015 devpps0
。如果使用 rtkbase_raw2nmea 服務,請編輯連接埠。
chrony:在/etc/chrony/chrony.conf
中取消註解 refclock pps 行並將 noselect 新增至「refclock SHM 0」。你應該有這樣的東西:
refclock SHM 0 refid GPS precision 1e-1 offset 0 delay 0.2 noselect
refclock PPS /dev/pps0 refid PPS lock GPS
chronyc sources -v
的結果你應該讀到類似這樣的內容,注意「PPS」之前的「*」: basegnss@orangepizero:~$ chronyc sources -v
210 Number of sources = 6
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| | | zzzz = estimated error.
|| | |
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#? GPS 0 4 377 17 +64ms[ +64ms] +/- 200ms
#* PPS 0 4 377 14 +363ns[ +506ns] +/- 1790ns
^- ntp0.dillydally.fr 2 6 177 16 -12ms[ -12ms] +/- 50ms
^? 2a01:e35:2fba:7c00::21 0 6 0 - +0ns[ +0ns] +/- 0ns
^- 62-210-213-21.rev.poneyt> 2 6 177 17 -6488us[-6487us] +/- 67ms
^- kalimantan.ordimatic.net 3 6 177 16 -27ms[ -27ms] +/- 64ms
Debian 基礎發行版 >= 11 (Bullseye) Python >= 3.8
查看變更日誌
RTKBase 根據 AGPL 3 獲得許可(請參閱許可證文件)。
RTKBase使用了其他軟體的一些部分:
RTKBase 使用 OpenStreetMap 切片。感謝所有貢獻者!