| | | |
フロントエンドの主な機能は次のとおりです。
他の画像は ./images フォルダーにあります。
Orange Pi Zero、Orange Pi Zero 2、Orange Pi Zero 3 SBC では、すぐにフラッシュできるイメージが利用可能です: Armbian_RTKBase
Raspberry Pi を使用している場合は、jancelin のおかげで、すぐにフラッシュできる ISO ファイルをここからダウンロードできます。
GNSS 受信機を raspberry pi/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 をインストールするか、次のようにします。
RTKlibを取得する
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
を有効にします。デフォルト値では、スクリプトは毎日午前 4 時 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
chronyユニットファイルを編集します。 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 の値を変更します。その後、ベース ステーションの IP アドレスとポート番号 128 を使用して、U-center のネットワーク接続を使用できます。
これで、 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
すべての準備が整ったので、Web ブラウザを開いてベースステーションの 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 に変換し、ローカル Ntrip キャスターとして機能します。str2str_rtcm_svr.service
メイン インスタンスからデータを取得し、データを rtcm に変換してクライアントにストリーミングします。str2str_rtcm_serial.service
メイン インスタンスからデータを取得し、データを rtcm に変換し、シリアル ポート (無線リンクまたはその他の周辺機器) にストリーミングします。str2str_file.service
メイン インスタンスからデータを取得し、そのデータをファイルに記録します。 Web GUI は、 rtkbase_web
サービスの実行中に使用できます。
U-Blox 受信機のないオフライン基地局、日付と時刻の取得方法: gpsd が GNSS 受信機からの生データを理解できない場合は、raw2nmea サービスを有効にすることができます。生データをsettings.conf
で設定された TCP ポート (nmea_port) に変換し、gpsd はそれを使用して chrony にフィードします。 systemctl enable --now rtkbase_raw2nmea
航空写真: デフォルトの地図の背景は OpenStreetMap ですが、Maptiler キーをお持ちの場合は、世界中の航空写真レイヤーに切り替えることができます。このレイヤーを有効にするには、Maptiler で無料アカウントを作成し、キーを作成して、 [general]
セクション内のsettings.conf
に追加します: maptiler_key=your_key
受信機オプション: str2str は、受信機に依存するオプションをいくつか受け入れます。 U-Blox を使用する場合は、Rtcm および Ntrip 出力の丸められていない 2 番目の値に対する回避策として、 -TADJ=1
パラメーターを使用することをお勧めします。このパラメータは設定フォーム内に入力できます。詳細については、こちらとこちらをご覧ください。
RTKBase を dev ブランチからインストールする場合は、次のコマンドを使用して実行できます。
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 受信機は非常に正確なストラタム 0 クロックであるため、GNSS ベース ステーションはローカル ネットワークや NTP プールのストラタム 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」を変更します。PPS を使用するように gpsd と chrony を設定する
gpsd: /etc/defaut/gpsd
のDEVICE
行をコメント化し、 #DEVICES="tcp:\127.0.0.1:5015 devpps0
コメントを解除します。rtkbase_raw2nmea サービスを使用する場合は、ポートを編集します。
chrony: /etc/chrony/chrony.conf
内で ref Clock pps 行のコメントを解除し、「ref Clock SHM 0」に noselect を追加します。次のようなものがあるはずです:
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 に基づいてライセンスされています (LICENSE ファイルを参照)。
RTKBase は他のソフトウェアの一部を使用します。
RTKBase は OpenStreetMap タイルを使用します。貢献者の皆様、ありがとうございました!