├── str2str ├── config │ └── str2str_minimum_config.txt ├── doc_sources │ ├── command.png │ ├── 2.4.3_branch.png │ ├── master_branch.png │ ├── nmea_stream.png │ ├── system_scheme.png │ ├── tomojitakasu.jpeg │ ├── receiver_config.png │ ├── receiver_status.png │ ├── rtklib_versions.png │ ├── str2str_scheme.jpg │ └── corrections_input.png └── README.md ├── Receiver and Raspberry Setup ├── doc_sources │ ├── flowchart.png │ ├── mosaic-X5.png │ ├── mosaicgo.png │ ├── RasPi_Imager.png │ ├── geodnet_logo.png │ ├── mosaix-X5.webp │ ├── skylark_logo.png │ ├── Topcon_Topnet.png │ ├── materials_info.png │ ├── pointone_logo.png │ ├── RasPi_Imager_Yt.png │ ├── Septentrio_logo.png │ ├── pointperfect_logo.png │ ├── mosaic-go_interface.png │ ├── Raspberry_Pi_OS_Logo.png │ ├── general_system_scheme.jpg │ ├── 1_RasPi_Installation_DS.png │ ├── 2_RasPi_Installation_DS.png │ ├── 3_RasPi_Installation_DS.png │ ├── 4_RasPi_Installation_DS.png │ ├── 5_RasPi_Installation_DS.png │ ├── Complete_how_to_diagram.jpg │ └── 2.1_RasPi_Installation_DS.png └── README.md ├── SharingInternetFromRaspberryPiToReceiver ├── doc_sources │ ├── ip_changed.png │ ├── usb_mode.png │ ├── ip_changing.png │ ├── last_command.png │ └── sharing_internet.jpg └── README.md └── README.md /str2str/config/str2str_minimum_config.txt: -------------------------------------------------------------------------------- 1 | setNMEAOutput, Stream1, OTG1 2 | setNMEAOutput, Stream1, , GGA 3 | setNMEAOutput, Stream1, , , msec100 -------------------------------------------------------------------------------- /str2str/doc_sources/command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/command.png -------------------------------------------------------------------------------- /str2str/doc_sources/2.4.3_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/2.4.3_branch.png -------------------------------------------------------------------------------- /str2str/doc_sources/master_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/master_branch.png -------------------------------------------------------------------------------- /str2str/doc_sources/nmea_stream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/nmea_stream.png -------------------------------------------------------------------------------- /str2str/doc_sources/system_scheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/system_scheme.png -------------------------------------------------------------------------------- /str2str/doc_sources/tomojitakasu.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/tomojitakasu.jpeg -------------------------------------------------------------------------------- /str2str/doc_sources/receiver_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/receiver_config.png -------------------------------------------------------------------------------- /str2str/doc_sources/receiver_status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/receiver_status.png -------------------------------------------------------------------------------- /str2str/doc_sources/rtklib_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/rtklib_versions.png -------------------------------------------------------------------------------- /str2str/doc_sources/str2str_scheme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/str2str_scheme.jpg -------------------------------------------------------------------------------- /str2str/doc_sources/corrections_input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/corrections_input.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/flowchart.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/mosaic-X5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/mosaic-X5.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/mosaicgo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/mosaicgo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/RasPi_Imager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/RasPi_Imager.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/geodnet_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/geodnet_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/mosaix-X5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/mosaix-X5.webp -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/skylark_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/skylark_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/Topcon_Topnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/Topcon_Topnet.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/materials_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/materials_info.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/pointone_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/pointone_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/RasPi_Imager_Yt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/RasPi_Imager_Yt.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/Septentrio_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/Septentrio_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/pointperfect_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/pointperfect_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/mosaic-go_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/mosaic-go_interface.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/Raspberry_Pi_OS_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/Raspberry_Pi_OS_Logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/general_system_scheme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/general_system_scheme.jpg -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/ip_changed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/ip_changed.png -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/usb_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/usb_mode.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/1_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/1_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/2_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/2_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/3_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/3_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/4_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/4_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/5_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/5_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/Complete_how_to_diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/Complete_how_to_diagram.jpg -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/ip_changing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/ip_changing.png -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/last_command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/last_command.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/2.1_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/2.1_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/sharing_internet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/sharing_internet.jpg -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/README.md: -------------------------------------------------------------------------------- 1 |
68 |
69 |
70 | ## CHECK FIRMWARE VERSION
71 |
72 | First, ensure your receiver has been upgraded with the latest firmware. Assuming that the Raspberry Pi and Mosaic-Go module setup including the installation of the Raspberry Pi OS is done, navigate to the receiver´s Web Interface by typing the following IP address 192.168.3.1 in your Raspberry Pi Os browser.
73 |
74 | Navigate to **Amin > About** and there you can check the Firmware version installed inside the receiver.
75 |
76 | If you don't have the lastest version of the firmware, you can find the latest firmware for **your receiver** on the Septentrio website. Then, select you module and go to resources tab, there you will find the Firmware Package.
77 |
78 | If a Firmware Update is needed, go to **Admin > Upgrade** section and chose the files you previously downloaded.
79 |
80 | ## ENABLE USB COMMUNICATION
81 |
82 | In the Web User Interface, go to the communication menu and click on USB. In the default configuration the internet over USB is off. Turn it on to enable USB communication and press OK to save the changes.
83 |
84 |
85 |
86 |
87 | ## CONFIGURE THE NETWORK BRIDGE FROM WIFI TO USB
88 |
89 | To achieve this, we will use dnsmasq to configure the Raspberry Pi as a DHCP server and set up custom DNS settings. This will enable a device connected to the Raspberry Pi via Ethernet to obtain an IP address from the Raspberry Pi and also allow the Raspberry Pi to forward DNS queries.
90 |
91 | 1. **Install dnsmasq**
92 |
93 | Dnsmasq is a lightweight and easy to configure DNS forwarder and DHCP server. Its main purpose is to provide DNS and DHCP services to small networks. With Dnsmasq, it's possible to serve local machine names that are not in the global DNS. Additionally, the DHCP server is integrated with the DNS server, which allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or in a central configuration file.
94 |
95 | Execute the following commands in a terminal:
96 |
97 | sudo apt-get update
98 | sudo apt-get install dnsmasq
99 |
100 | Fot this guide, the 2.85 version of dnsmasq has been used. To know more about dnsmasq, go to dnsmasq package description on debian web page.
101 |
102 | 2. **Enable bind-interfaces in /etc/dnsmasq.conf file**
103 |
104 | On systems that support it, dnsmasq can bind the wildcard address, even when it is listening on only some interfaces, allowing it to discard requests it shouldn't reply to. While this has the advantage of working even when interfaces come and go and change address, sometimes it is necessary to bind dnsmasq only to the interfaces it is listening on. This option is particularly useful when running another nameserver or another instance of dnsmasq on the same machine. It also enables multiple instances of dnsmasq providing DHCP services to run on the same machine.
105 |
106 | To force dnsmasq to bind only to the interfaces it is listening on, set the bind-interfaces option, as follows.
107 |
108 | sudo sed -i /etc/dnsmasq.conf -e 's/^#\(bind-interfaces\)/\1/'
109 |
110 | See here the information Source for this step.
111 |
112 | 3. **Specify the interface not to be listened to in /etc/dnsmasq.conf file**
113 |
114 | This comman is to not listen on the specified interface. Note that the order of --listen-address --interface and --except-interface options does not matter and that --except-interface options always override the others.
115 |
116 | sudo sed -i /etc/dnsmasq.conf -e 's/^#\(except-interface=\)/\1usb0/'
117 |
118 | See here the information Source for this step.
119 |
120 | 4. **Restart the system dnsmasq after making changes in /etc/dnsmasq.conf**
121 |
122 | It is required so that the changes in dnsmasq.conf file can be saved.
123 |
124 | sudo systemctl restart dnsmasq
125 |
126 | 5. **Enabling IPv4 IP Forwarding in Linux**
127 |
128 | By default, modern Linux systems disable IP forwarding to conserve bandwidth, as it is not needed for regular use. However, in some cases, such as when setting up a gateway or router, it may be necessary to enable IP forwarding. This guide will walk you through the process of enabling IPv4 IP forwarding on your Linux system.
129 |
130 | **What is IP forwarding?**
131 |
132 |
133 | IP forwarding is the ability of a system to accept incoming network packets and forward them to another network. This feature is necessary when a system needs to act as a gateway or router.
134 |
135 | sudo sysctl net.ipv4.ip_forward=1
136 |
137 | 6. **Assign an IP Address to a Specific Interface**
138 |
139 | The following command is used to assign an IP Addresses to a specific interface (usb0) on the fly. It is a command addr (**Addres**) followed with one of its subcommands, (**Add**).
140 |
141 | sudo ip addr add 172.20.20.1/24 dev usb0
142 |
143 | sudo iptables -t nat -A POSTROUTING --src 172.20.20.0/24 -o wlan0 -j MASQUERADE
144 |
145 | sudo dnsmasq -d --conf-file=/dev/null --except-interface=lo --interface=usb0 --bind-interfaces --dhcp-range=172.20.20.10,172.20.20.20,255.255.255.0,1h 2>&1
146 |
147 | After this final step, you should be the following on the Web User Interface:
148 |
149 |
150 |
151 |
152 | This means that the **old 192.168.3.1 Ip address has been changed** and you need to introduce the **new one** on the search bar to go to receiver's Web User Interface.
153 |
154 | **
169 |
170 |
171 | In this case the new IP addres is: **172.20.20.18**. If you put that address on the internet you will navigate to the receiver's Web User Interface. In the following picture you can see this interface with the new assigned IP addres.
172 |
173 |
174 |
175 |
176 | At this point the receiver has internet and will be able to access NTRIP Servers/Casters over internet within the Web User Interface.
177 |
178 | ## What to run once
179 |
180 | These lines have to be runned only once because the changes made with them remain undisturbed each time the operating system is restarted.
181 |
182 | sudo apt-get install dnsmasq
183 |
184 | sudo sed -i /etc/dnsmasq.conf -e 's/^#\(bind-interfaces\)/\1/'
185 |
186 | sudo sed -i /etc/dnsmasq.conf -e 's/^#\(except-interface=\)/\1usb0/'
187 |
188 | **Note:** Remember to restart the system dnsmasq after making changes in /etc/dnsmasq.conf if you make any.
189 |
190 | sudo systemctl restart dnsmasq
191 |
192 | It is required so that the changes in dnsmasq.conf file can be saved.
193 |
194 | ## What to run every boot of the operating system
195 |
196 | The modified or added information and files are deleted when the operating system is shut down, therefore, it is necessary to run the following lines every time the operating system is restarted and you want to perform the process of transferring the internet connection to the receiver from the raspberry pi
197 |
198 | sudo sysctl net.ipv4.ip_forward=1
199 |
200 | sudo ip addr add 172.20.20.1/24 dev usb0
201 |
202 | sudo iptables -t nat -A POSTROUTING --src 172.20.20.0/24 -o wlan0 -j MASQUERADE
203 |
204 | sudo dnsmasq -d --conf-file=/dev/null --except-interface=lo --interface=usb0 --bind-interfaces --dhcp-range=172.20.20.10,172.20.20.20,255.255.255.0,1h 2>&1
205 |
--------------------------------------------------------------------------------
/Receiver and Raspberry Setup/README.md:
--------------------------------------------------------------------------------
1 |
91 |
92 |
93 | Make sure you have a keyboard, mouse and monitor for comfortable use of the operating system.
94 |
95 | Needed materials:
96 |
97 | - USB to Micro USB Cable
98 | - Power supply
99 | - Raspberry Pi 4 Model B
100 | - 16GB SD Card
101 | - HDMI to Micro HDMI Cable
102 | - GNSS Antenna Cable
103 | - Mosaic-Go GNSS Receiver
104 | - GNSS Antenna already installed
105 |
106 | To implement GNSS correction services using a Raspberry Pi, it's necessary to have the proper hardware. There are several Raspberry Pi packs available on the market that provide all the necessary components, including the Raspberry Pi itself, power supply, and SD card. However, it's important to note that these packs do not include the Septentrio Mosaic-Go module, GNSS antenna and antenna cable, which must be obtained separately.
107 |
108 | Please be aware that this documentation does not cover the installation and setup of the GNSS antenna. It is assumed that the user already has a working GNSS antenna and knows how to install it. Therefore, regarding antenna related components, this documentation only deals with the connection of the already installed and operational antenna with the Mosaic-Go module.
109 |
110 | **Note:** It's worth noting that an Ethernet cable is not required if the Raspberry Pi has an internet connection via Wi-Fi. However, if your application requires an internet connection via Ethernet, you will need to configure the Raspberry Pi accordingly.
111 |
112 | ### Septentrio's Mosaic-Go GNSS Receiver
113 |
114 |
115 |
116 |
117 | In this setup, we have used the Septentrio Mosaic-Go model. However, any other Septentrio receivers that can communicate with a Raspberry Pi can be used instead. If a different connector is used, it may be necessary to modify the configuration of some of the libraries, APIs or SDKs provided by the different GNSS correction service companies that collaborate with Septentrio for this project.
118 |
119 | The Mosaic-Go is a high-precision GPS/GNSS evaluation kit that offers best-in-class centimeter-level positioning performance, even in challenging environments. It is a compact, multi-band, multi-constellation GPS/GNSS receiver integrated with a mosaic-X5 in a small metallic housing. The Mosaic-Go is specifically designed for easy evaluation of mosaic-X5 for applications such as UAVs, robotics, autonomous systems, construction and agriculture. This high-performance module supports all current GNSS satellite signals and is future-proof for upcoming signals and services. Its unique built-in AIM+ technology for interference monitoring and mitigation., as well as anti-spoofing, ensures the best availability, reliability, and precision.
120 |
121 | The evaluation kit provides an opportunity to discover and test the mosaic-X5 module. You can integrate the Mosaic-Go evaluation kit into your system using any of the following connections: COM ports, USB 2.0, or SD memory card.
122 |
123 | If you have any questions or feedback, please don't hesitate to reach out to us at Septentrio support page.
124 |
125 | ## RASPBERRY PI MODEL B AND HARDWARE CONSIDERATIONS
126 |
127 | For this implementation a Raspberry PI 4 Model B with 4 GB of RAM has been used. The use of another model of Raspberry Pi should work but has not been tested, although the use of the this model is recommended. Each one of the different Raspberry Pi models has hardware changes that could affect the performance of the system. In general, the libraries, APIs or SDKs offered by the different companies with which Septentrio collaborates for this project do not require excessive hardware usage. **Therefore, the use of another Raspberry PI model should not be a problem, but has not been tested by Septentrio**.
128 |
129 | Additionally it should be taken into account that the interface of the Raspberry Pi changes with the model, and that for example for the Raspberry Pi 3, the video output is an HDMI port and not a Micro HDMI port as it is the case of the Raspberry Pi 4 Model B, so another type of cable would be needed to connect it to a screen.
130 |
131 | ## IMPLEMENTATION SETUP
132 |
133 | ### Raspberry Pi OS Installation
134 |
135 |
136 |
137 |
138 | For the demostration, the first step is to install an Operating System inside micro SD Card for which **another computer is needed**. The Selected Operation System is Raspberry Pi OS 64-Bits, wich has "Bullseye" Debian 11 version. Raspberry Pi Os is the official supported operating system by Raspberry.
139 |
140 | #### Raspberry Pi OS Versions
141 |
142 | Raspberry Pi OS is offered in three “versions”:
143 |
144 | - Full: Raspberry Pi OS with desktop and recommended software.
145 | - Desktop: Raspberry Pi OS with desktop.
146 | - Lite: Minimal image for Raspberry Pi OS (no interface, command line only).
147 |
148 | #### Prerequisites to install Raspberry Pi OS
149 |
150 | To follow the instalation guide, you need:
151 |
152 | - An Internet connection.
153 | - A computer to download and flash Raspberry Pi OS.
154 | - An SD card reader (USB or built-in computer).
155 | - A minimum 8 GB micro SD card.
156 |
157 | #### Using Raspberry Pi Imager
158 |
159 | Raspberry Pi Imager is the quick and easy way to install Raspberry Pi OS and other operating systems to a micro SD card, ready to use with your Raspberry Pi.
160 |
161 | If you want to learn how to install Raspberry Pi OS you can follow this video of How to use Raspberry Pi Imager, by Raspberry Pi's YouTube Channel or read more in the official documentation.
162 |
163 |
164 |
165 |
166 | #### Raspberry Pi OS Installation
167 |
168 | Download and install Raspberry Pi Imager. For this demostration we have downloaded 1.7.3 version of the Imager.
169 |
170 |
178 |
179 |
180 | One the program is opened, you should see the following window in your screen.
181 |
182 |
183 |
184 |
185 | The next step is to select which Operating System you want to install and its destination.
186 | By default, the application selects Raspberry Pi OS (32-Bit), but for the case of this Set UP with Septentrio receiver we will select **RASPBERRY PI OS 64-BIT** option and then seletc Storage SDHC CARD, which is our Micro SD Card. Then we press WRITE.
187 |
188 |
189 | 
190 |
191 | Then we need to confirm the installatoin operation and wait until the program finishes.
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 | When the following pop-up appears in the screen, the installations has been done correctly and we have to select CONTINUE.
200 |
201 |
202 |
203 |
204 | #### Raspberry Pi Board Connection
205 |
206 | For the connection of the Raspberry Pi board we need to:
207 |
208 | - Connect Raspberry Pi to a screen using Micro HDMI port with the Micro HDMI to HDMI cable.
209 | - Insert Micro SD.
210 | - Connect Keyboard and Mouse into USB Ports.
211 |
212 | And finally, power the Raspberry Pi with USB-C cable. Once the Raspberry Pi is supplied with power, you should see the Raspberry Pi OS Desktop Set Up on the screen.
213 |
214 | #### Raspberry Pi OS Desktop Set Up
215 |
216 | Once the Operating System setup is displayed on the screen:
217 |
218 | - Press Next to get started.
219 | - Set the counrty, lenguage and keyboard lenguage.
220 | - Set an username and password.
221 | - Set up Screen size.
222 | - Select Wi-Fi Network. (Recommended)
223 | - Update Software.
224 | - Reboot.
225 |
226 | ### Receiver Set Up
227 |
228 | For the Mosaic-Go module setup its needed to connect the receiver and Raspberry Pi using the USB to Micro-USB Cable. Micro-USB Connector in the Receiver and USB in the Raspberry Pi. You can see the Mosaic-Go interface in the following pictures.
229 |
230 |
231 |
232 |
233 | The next step would be to connect the GNSS antenna to the receiver via antenna cable. For more information about the Mosaic-Go Interface, please visit Septentrio's GNSS Modules web page.
234 |
235 | **Note:**
236 | If you're running into issues with the Receiver/Raspberry Pi connection, you may not have read/write access to the serial port on your machine. This is a common issue when using the serial port in Linux. To fix it, run the following command in a terminal.
237 |
238 | sudo usermod -a -G dialout $USER
239 |
240 | ## General flowchart and system scheme
241 |
242 | The general flowchart of the system:
243 |
244 |
245 |
246 |
247 | Simplified scheme of the system:
248 |
249 |
250 |
251 |
252 | ## NEXT STEP: IMPLEMENTATION OF DIFFERENT CORRECTION SERVICES
253 |
254 | At this point, the guide assumes that you have already set up the receiver and Raspberry Pi hardware following the steps provided in the previous sections of this documentation page.
255 |
256 | To proceed with the implementation of the third-party correction service, first of all you need to select one of the companies that Septentrio collaborates with for this project. Once you have selected the company, follow the instructions to implement their library, API or SDK on your Raspberry Pi. It is important to note that different companies have different features and coverage areas, so it is recommended to research and select the company that best suits your specific needs and performance requirements.
257 |
258 | After completing the implementation of the service, the Raspberry Pi you should be able to get corrections on the receiver for high-precision positioning.
259 |
260 |
87 |
88 |
89 | You can download and install RKTLIB with its tools by entering the following command in the terminal.
90 |
91 | sudo apt-get install rtklib
92 |
93 | ### What is str2str?
94 |
95 | str2str is an Application Program that receives input data from a stream and divides and outputs them to one or multiple streams. The input stream can be serial, TCP client, TCP server, NTRIP client, or file. The output stream can also be serial, TCP client, TCP server, NTRIP server, or file.
96 |
97 | This repository provides a solution for a specific case where the input stream is a corrections provider that uses NTRIP. In this case, you should have the information (host, stream, password, etc.) of the NTRIP connection of the Correction Service Provider.
98 |
99 | ### The -b flag of rtklib 2.4.3 branch
100 |
101 | One challenge of using RTKLIB with this specific setup is that the version installed using the **sudo apt-get install rtklib does not have the -b flag implementation**. This flag is **strongly recommended** to keep the connections between the receiver and Raspberry Pi system as simple as possible.
102 |
103 | The -b flag implementation allows the system to send NMEA messages through the output channel, which is the serial port used to transmit RTCM corrections messages from Raspberry Pi to the receiver. **Without the -b flag, you will need to add an additional communication channel to transmit these NMEA messages to the corrections provider**. Therefore, using the -b flag results in a greater ease of system implementation because it allows you to run a single command with a single communication channel, which is a simple USB cable between the receiver and the Raspberry Pi, if you are using the setup recommended at the beginning of this guide.
104 |
105 |
127 |
128 |
129 |
146 |
147 |
148 | It can be seen marked in green in the picture above that we are still in the master branch. In this branch -b option for NMEA Data streaming does not exist, so we need to change to the correct branch.
149 |
150 | ### Changing to 2.4.3 branch
151 |
152 | To change to the correct RTKLIB's branch, which already has the implementation of str2str tool, we need to run this command inside the cloned repository.
153 |
154 | git checkout rtklib_2.4.3
155 |
156 | Should appear the following message:
157 |
158 |
170 |
171 |
172 | We can see that we are in the correct branch.
173 |
174 | ## STR2STR TOOL COMPILATION
175 |
176 | For the installation, **compilation with make command is needed** inside the specific Application Program's directory we want, which is str2str for this case. To do this:
177 |
178 | cd app/consapp/str2str/gcc
179 | make
180 |
181 | Some warnings will appear but the program should compile correctly.
182 |
183 | ## RECEIVER CONFIGURATION
184 |
185 | For the configuration of the receiver, the NMEA Streaming is only needed. We can do it in two different ways at Septentrio's HTTP Interface: 192.168.3.1.
186 |
187 | **Note:**
188 |
189 | For this case we are using USB OTG1 (USB On-The-Go 1) port, if you are using other channel that supports serial protocol, please adapt it to your setup (For example, any COM or USB port). To check the setup we are using and which this guide is based on (Raspberry Pi and AsteRx SB Receiver), please go to our following guide:
190 |
191 |
211 |
212 |
213 | **2nd OPTION:** Create new stream manually. In the Septentrio's HTTP interface go to *NMEA/SBF Out> (+) New NMEA Stream> USB On-The-Go port> OTG1 USB On-The-Go port 1> Select GGA and 100ms interval*. If it is well configured, the streaming should appear like in the following picture.
214 |
215 |
216 |
217 |
218 | ### Receiver Input Configuration
219 |
220 | For this step we have to make sure that the receiver is well configured to receive RTCMv3 data. The receiver is able to read any kind of corrections format coming from all of channels it has available by default. To check if it is well configured, in Septentrio's HTTP Interface, go to *Corrections > Corrections Input* and the selected option for the communication channel you are using shoudl be as the following picture.
221 |
222 |
223 |
224 |
225 | In this case we are usin OTG1, so we have to be sure that is receiving in auto OR rtcmV3 mode. It is recommended to let it in auto mode. With this mode, the receiver will know automatically which mesasage protocol and which message type is been used.
226 |
227 | ## RUNNING STR2STR
228 |
229 | Once the str2str Application Program is compiled and receiver is correctly configured to send NMEA, we need to execute the str2str application like in the following picture.
230 |
231 |
232 |
233 |
234 | ### Different parts in execution command
235 |
236 | We have **4 parts** in the execution command:
237 |
238 | - **Command execution**
239 | - We need to execute a file directly, that is why is an Application Program and not a GUI or terminal tool. Also there is an equivalent tool in RTKLIB that is called strsrv, that is exactly the same as str2str but the difference is that **strsrv** is a GUI only for Windows.
240 |
241 | - **Input stream config**
242 | - The AP **only supports one input at the same time**.
243 | - For this case the input stream is the NTRIP Caster/Server hosted by the company you have selected for the correction service.
244 |
245 | - **Output stream config**
246 | - For this setup the output stream is going to be sent to the serial port connected to the Receiver.
247 | - As this is the channel in which we are going to send NMEA GGA Messages, from the Receiver to the Raspberry Pi (using str2str2), we must specify the host to be sent to. (See it in blue color ar the right side of the picture above)
248 | - This is **only** if we want to send NMEA, using -b flag.
249 |
250 | - **(-b Flag) NMEA config, if needed**
251 | - In this case we need -b flag to send NMEA for an easier implementation.
252 | - Here we have to specify the **output port in which we are receiving NMEA Messages.**
253 | - In this case, the number 1 after -b flag indicates that the NMEA stream which is going to be sent to NTRIP Caster/Server is been received from the **first output stream**. (This is because str2str tool suports several output streams at the same time.)
254 |
255 | ### Different streams
256 |
257 | For the **Input Stream**:
258 |
259 | We have to specify the stream type with **ntrip://**, which is NTRIP for this case and insert our NTRIP credentials, host and stream (mountpoint), as we are receiving corrections through NTRIP.
260 |
261 | -in ntrip://LoginID:Password@Host/Stream
262 |
263 | For the **Ouput stream**:
264 |
265 | As we are passing RTCM corrections to the receiver via serial port we have to specify the stream type with **serial://**, and the serial port parameters with the selected serial port, baud rate, byte size, parity, stop bit and fctr.
266 |
267 | -out serial://SerialPort:BaudRate:ByteSize:Parity:StopBit:Fctr#host
268 |
269 | For the setup we are using, would be:
270 |
271 | -out serial://ttyACM0:115200:8:n:1:off#host
272 |
273 | - Note that for this part of the command, we need to add **#host** (which is the NTRIP Mountpoint) at the end because we will specify later (-b flag after output stream parameters) that we are passing NMEA messages through the output 1 stream channel, so we need to specify where (which NTRIP port) do we want to send this information.
274 |
275 | - This is not the case, but **if we would not need to send NMEA messages**, the command would not have -b, like this:
276 |
277 | -out serial://ttyACM0:115200:8:n:1:off
278 |
279 | For the **NMEA stream**, we just need to add:
280 |
281 | -b 1
282 |
283 | - -b to configure that we are sending NMEA messages, and 1 to specify in which **output** stream channel will be sent. In this case is the output 1 stream channel, which is the serial port.
284 |
285 | ## RECEIVING CORRECTIONS
286 |
287 | Once the setup is well connected, RTKLIB's installed, str2str AP compiled, the receiver is configured and str2str execution command's parameters well configured, we execute this finnal command (filled with your own parameters):
288 |
289 | ./str2str -in ntrip://LoginID:Password@Host/Stream -out serial://ttyACM0:115200:8:n:1:off#Host -b 1
290 |
291 | And then the Septentrio's HTTP Interface should show that the receiver is getting corrections, as shown in the picture below.
292 |
293 |
294 |
295 |
296 | ### Execution command example
297 |
298 | For a practical example let's say that previously we have the correct setup and the receiver is well configured.
299 |
300 | The NTRIP parameters are:
301 |
302 | - LoginID: Septentrio_Login
303 | - Password: str2str_password
304 | - Host: Septentrio_Host
305 | - Stream: Septentrio_Stream
306 |
307 | And the serial port parameters are:
308 |
309 | - Port name: ttyACM0
310 | - Baud rate: 115200
311 | - Parity: none
312 | - Byte size: 8
313 | - Stop bit: no
314 | - Fctr: off
315 |
316 | The execution command would be:
317 |
318 | ./str2str -in ntrip://Septentrio_Login:str2str_password@Septentrio_Host/Septentrio_Stream -out serial://ttyACM0:115200:8:n:1:off#Septentrio_Host -b 1
319 |
320 | ## SYSTEM SCHEME
321 |
322 | The physical setup used for this example is the one suggested in this guide called " Set Up Guide to use Third parties OSR corrections with Septentrio's Receiver for precise positioning ". In the scheme below it can be seen that the only input from the user is the parameter configuration for the str2str Application Program in the execute command and the receiver configuration to ensure that NMEA stream is been sended. Both of these are done **inside the operating system running in the Raspberry Pi**. That is why there is a white box called "User Input" inside the green box which represents the Raspberry Pi.
323 |
324 |
325 |
326 |
327 | ### Simplified version of the system scheme
328 |
329 |
330 |
331 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
119 |
120 |
121 | Welcome to Septentrio, your trusted source for high-precision GPS/GNSS equipment designed for use in the most demanding applications. Our multi-frequency, multi-constellation products are used across a wide range of industries, including marine, construction, precision agriculture, logistics, machine control, rail, automotive, survey and mapping, geographic information systems (GIS), unmanned aerial vehicles (UAVs), and scientific research.
122 |
123 |
138 |
139 |
140 | This whole project of integration of third party corrections with septentrio receivers has been developed and tested with our mosaic-go GNSS module receiver evaluation kit. It's a multi-band, multi-constellation GPS/GNSS receiver **mosaic-X5 integrated** inside a small metallic housing. This guide has been written around mosaic-go however the same guide can also be used with other Septentrio receivers such as mosaic-go heading, or other product families such as AsteRx OEM boards and housed receivers.
141 |
142 |
143 |
144 |
145 | mosaic-X5 is Septentrio's mosaic-X5 multi-constellation GNSS receiver is a low-power surface-mount module with a wide array of interfaces and is designed for mass-market applications such as robotics and autonomous systems.
146 |
147 | **mosaic-X5 GNSS Module**
148 |
149 |
187 |
188 |
189 | ### Selecting the service
190 |
191 | When selecting a correction service, it's important to consider the different features and coverage areas offered by each company, as well as your specific application's performance requirements and needs. To help you make an informed decision, there is compiled a list of the companies that Septentrio collaborates with and their respective guidelines in this repository.
192 |
193 | Also you can access to the Septentrio Support page for more information about which of the following services best fits your needs and circumstances.
194 |
195 |
209 |
210 |
211 | | Point One Navigation Polaris Corrections With Septentrio Guide. |
212 | |---|
213 |
214 | #### Swift Navigation
215 |
216 |
217 |
218 |
219 | | SwiftNav Skylark Corrections With Septentrio Guide. |
220 | |---|
221 |
222 | #### u-blox
223 |
224 |
225 |
226 |
227 | | u-blox PointPerfect Corrections With Septentrio Guide. |
228 | |---|
229 |
230 | #### Topcon
231 |
232 |
233 |
234 |
235 | | Topcon Topnet Live Corrections With Septentrio Guide. |
236 | |---|
237 |
238 |
262 |
263 |
264 |
265 | ### RTKLIB str2str tool compilation and use guide
266 |
267 | This repository is about how to implement the tool called **str2str from the RTKLIB library**. The use of the tool consists of downloading the RTKLIB repository, compiling the str2str tool and using it to connect to an NTRIP Server/Caster and forward the incoming corrections to the receiver.
268 |
269 | The str2str tool **is running inside the Raspberry Pi and it creates an NTRIP client** to access the corrections, while sending them to the receiver. The steps for how to download, compile and use the tool for this specific application can be found in the following guide:
270 |
271 |
272 |
282 |
283 |
284 | ### Transmit internet connection through the Raspberry Pi to the receiver using a USB cable guide
285 |
286 | This is another alternative for using NTRIP. In this case you would be using the NTRIP Client within the Septentrio Module.
287 |
288 | The guide consists of executing a series of commands that configure the Raspberry Pi operating system to provide internet to a device that is connected to the Raspberry Pi through a USB cable. Therefore, if we connect the receiver to the Raspberry Pi with a USB cable after executing the commands, the receiver, and therefore its NTRIP client, will have access to the internet to get the corrections of the selected provider.
289 |
290 |
300 |
301 |
--------------------------------------------------------------------------------