| | | |
프론트엔드의 주요 기능은 다음과 같습니다.
다른 이미지는 ./images 폴더에서 사용할 수 있습니다.
Orange Pi Zero, Orange Pi Zero 2, Orange Pi Zero 3 SBC에 대해 플래시 준비가 완료된 이미지를 사용할 수 있습니다. : Armbian_RTKBase
Raspberry Pi를 사용하는 경우 jancelin 덕분에 플래시 준비가 완료된 iso 파일을 여기에서 다운로드할 수 있습니다.
Gnss 수신기를 라즈베리 파이/오렌지 파이/...에 연결하세요.
터미널을 열고 다음을 수행합니다.
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단계 참조) 설정 페이지에서 올바른 포트를 선택해야 합니다.
웹 브라우저를 열고 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
str2str
과 동일한 방식으로 rtkrcv
및 convbin
컴파일/설치합니다.
최신 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
를 활성화하세요. 기본값은 매일 04H00에 스크립트를 실행합니다./etc/systemd/system/
에 복사한 다음 웹 서버 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 값을 변경합니다. 그런 다음 기지국 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
모든 것이 준비되었으므로 이제 베이스 스테이션 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
기본 인스턴스에서 데이터를 가져오고 데이터를 파일에 기록합니다. 웹 GUI는 rtkbase_web
서비스가 실행 중일 때 사용할 수 있습니다.
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를 사용하는 경우 Rtcm 및 Ntrip 출력에서 반올림되지 않은 두 번째 값에 대한 해결 방법으로 -TADJ=1
매개변수를 사용하는 것이 좋습니다. 설정 양식 내에 이 매개변수를 입력할 수 있습니다. 자세한 내용은 여기와 여기를 참조하세요.
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
추가합니다./boot/armbianEnv.txt 내부의 Orange Pi Zero 예:
overlays
줄에 pps-gpio
추가합니다.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
내부에서 refclock pps 행의 주석 처리를 제거하고 'refclock 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
데비안 기본 배포판 >= 11(Bullseye) Python >= 3.8
변경 로그 보기
RTKBase는 AGPL 3에 따라 라이센스가 부여됩니다(LICENSE 파일 참조).
RTKBase는 다른 소프트웨어의 일부를 사용합니다.
RTKBase는 OpenStreetMap 타일을 사용합니다. 모든 기여자에게 감사드립니다!