forked from lizhengnss/POSGO
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a3e09d8
commit aa3230c
Showing
110 changed files
with
1,473,679 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
cmake-build-debug/ | ||
build_debug/ | ||
build_release/ | ||
build/ | ||
|
||
*.pyc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
"configurations": [ | ||
{ | ||
"name": "Linux", | ||
"includePath": [ | ||
"${default}", | ||
"/usr/include/eigen3" | ||
], | ||
"compilerPath": "/usr/bin/g++", | ||
"cStandard": "c11", | ||
"cppStandard": "c++14", | ||
"intelliSenseMode": "gcc-x64", | ||
"configurationProvider": "ms-vscode.cmake-tools" | ||
} | ||
], | ||
"version": 4 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
{ | ||
// Use IntelliSense to learn about possible attributes. | ||
// Hover to view descriptions of existing attributes. | ||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | ||
"version": "0.2.0", | ||
"configurations": [ | ||
|
||
{ | ||
"name": "build debug POSGO", | ||
"type": "cppdbg", | ||
"request": "launch", | ||
"program": "${workspaceFolder}/build_debug/POSGO", | ||
"args": [ | ||
"-C", "spp_kpl_lsqd.ini", "-S", "GREC", "-M", "spp", "-L", "1", | ||
], | ||
"stopAtEntry": false, | ||
"cwd": "/mnt/hgfs/VirtualFile/POSGO_V1.0/conf", | ||
"environment": [], | ||
"externalConsole": false, | ||
"MIMode": "gdb", | ||
"setupCommands": [ | ||
{ | ||
"description": "Enable pretty-printing for gdb", | ||
"text": "-enable-pretty-printing", | ||
"ignoreFailures": true | ||
} | ||
], | ||
"preLaunchTask": "debug POSGO" | ||
}, | ||
{ | ||
"name": "build release POSGO", | ||
"type": "cppdbg", | ||
"request": "launch", | ||
"program": "${workspaceFolder}/build_release/POSGO", | ||
"args": [ | ||
"-C", "rp_kpl_ekfd.ini", "-S", "GREC", "-M", "rtk", "-L", "1", | ||
], | ||
"stopAtEntry": false, | ||
"cwd": "/mnt/hgfs/VirtualFile/POSGO_V1.0/conf", | ||
"environment": [], | ||
"externalConsole": false, | ||
"MIMode": "gdb", | ||
"setupCommands": [ | ||
{ | ||
"description": "Enable pretty-printing for gdb", | ||
"text": "-enable-pretty-printing", | ||
"ignoreFailures": true | ||
} | ||
], | ||
"preLaunchTask":"release POSGO" | ||
}, | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
{ | ||
"files.associations": { | ||
"iostream": "cpp", | ||
"ostream": "cpp", | ||
"*.tcc": "cpp", | ||
"fstream": "cpp", | ||
"istream": "cpp", | ||
"utility": "cpp", | ||
"new": "cpp", | ||
"string": "cpp", | ||
"eigen": "cpp", | ||
"iomanip": "cpp", | ||
"iosfwd": "cpp", | ||
"cmath": "cpp", | ||
"complex": "cpp", | ||
"deque": "cpp", | ||
"vector": "cpp", | ||
"memory_resource": "cpp", | ||
"memory": "cpp", | ||
"type_traits": "cpp", | ||
"list": "cpp", | ||
"unordered_map": "cpp", | ||
"unordered_set": "cpp", | ||
"ctime": "cpp", | ||
"chrono": "cpp", | ||
"limits": "cpp", | ||
"numeric": "cpp", | ||
"ratio": "cpp", | ||
"streambuf": "cpp", | ||
"tuple": "cpp", | ||
"core": "cpp", | ||
"dense": "cpp", | ||
"thread": "cpp", | ||
"cctype": "cpp", | ||
"clocale": "cpp", | ||
"cstdarg": "cpp", | ||
"cstddef": "cpp", | ||
"cstdio": "cpp", | ||
"cstdlib": "cpp", | ||
"cstring": "cpp", | ||
"cwchar": "cpp", | ||
"cwctype": "cpp", | ||
"array": "cpp", | ||
"atomic": "cpp", | ||
"strstream": "cpp", | ||
"bitset": "cpp", | ||
"cinttypes": "cpp", | ||
"cstdint": "cpp", | ||
"exception": "cpp", | ||
"algorithm": "cpp", | ||
"functional": "cpp", | ||
"iterator": "cpp", | ||
"map": "cpp", | ||
"optional": "cpp", | ||
"set": "cpp", | ||
"string_view": "cpp", | ||
"system_error": "cpp", | ||
"initializer_list": "cpp", | ||
"sstream": "cpp", | ||
"stdexcept": "cpp", | ||
"cfenv": "cpp", | ||
"typeinfo": "cpp", | ||
"*.ipp": "cpp" | ||
}, | ||
"C_Cpp.errorSquiggles": "Enabled" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
// See https://go.microsoft.com/fwlink/?LinkId=733558 | ||
// for the documentation about the tasks.json format | ||
"version": "2.0.0", | ||
"tasks": [ | ||
{ | ||
"label": "debug POSGO", | ||
"type": "shell", | ||
"command": "mkdir build_debug; cd build_debug; cmake ../ -DCMAKE_BUILD_TYPE=Debug; make -j4;" | ||
}, | ||
{ | ||
"label": "release POSGO", | ||
"type": "shell", | ||
"command": "mkdir build_release; cd build_release; cmake ../ -DCMAKE_BUILD_TYPE=Release; make -j4;" | ||
}, | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
#Minimum requirement of CMake version : 3.0.0 | ||
cmake_minimum_required(VERSION 3.0.0) | ||
|
||
#Project name and version number | ||
project(POSGO VERSION 0.1.0) | ||
|
||
set(CMAKE_CXX_STANDARD 11) | ||
set(CMAKE_CXX_FLAGS "-std=c++11 -O0 -fPIC") #设置c++的编译选项 | ||
set(CMAKE_CXX_FLAGS "-msse3") | ||
|
||
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -g") | ||
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -ggdb") | ||
|
||
find_package(Eigen3 REQUIRED) | ||
find_package(Ceres REQUIRED) | ||
|
||
include_directories(${EIGEN3_INCLUDE_DIRS} ${CERES_INCLUDE_DIRS}) | ||
|
||
file(GLOB GLOBAL "src/Global.cpp" "src/Global.h" ) | ||
|
||
add_executable(POSGO app/POSGO.cpp ${GLOBAL}) | ||
|
||
|
||
target_link_libraries(POSGO MultiPosition SensorErrorModel SystemSetting DataManagement ResultExport) | ||
|
||
add_subdirectory("src/SystemSetting") | ||
add_subdirectory("src/ResultExport") | ||
add_subdirectory("src/DataManagement") | ||
add_subdirectory("src/MultiPosition") | ||
add_subdirectory("src/OrbitClock") | ||
add_subdirectory("src/SensorErrorModel") | ||
add_subdirectory("src/Solver") | ||
|
||
#Choose different compilation configurations according to VS compilation | ||
if(CMAKE_BUILD_TYPE MATCHES "Release") | ||
add_compile_options(-O3) | ||
set(CMAKE_BUILD_POSTFIX "${CMAKE_RELEASE_POSTFIX}") | ||
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build_release) | ||
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build_release/Lib) | ||
elseif(CMAKE_BUILD_TYPE MATCHES "Debug") | ||
add_compile_options(-O0) | ||
set(CMAKE_BUILD_POSTFIX "${CMAKE_DEBUG_POSTFIX}") | ||
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build_debug) | ||
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build_debug/Lib) | ||
endif() | ||
|
||
add_compile_options(-w) | ||
add_compile_options(-m64) | ||
add_compile_options(-lz) | ||
add_compile_options(-lstdc++) | ||
|
||
#Output Messages for debug the Cmake | ||
message(STATUS "operation system is : ${CMAKE_SYSTEM}") | ||
message(STATUS "current platform is : ${CMAKE_SYSTEM_NAME}") | ||
message(STATUS "CMake version is : ${CMAKE_SYSTEM_VERSION}") | ||
message(STATUS "C compiler is : ${CMAKE_C_COMPILER}") | ||
message(STATUS "C++ compiler is : ${CMAKE_CXX_COMPILER}") | ||
message(STATUS "The program main directory is : ${PROJECT_SOURCE_DIR}") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
# POSGO | ||
|
||
## an open-source software for GNSS pseudorange positioning based on graph optimization | ||
|
||
<img src="doc/POSGO.png" alt="POSGO" style="zoom:20%;" /> | ||
|
||
POSGO (POSition based on Graph Optimization) is a multi-frequency and multi-GNSS pseudorange data processing software program based on GO (Graph optimization). The main features of the software are listed in the following: | ||
|
||
- Single-Point Positioning (SPP) and Relative Positioning (RP) positioning based on GO | ||
- Support several loss functions for robust estimation in GO | ||
- Support multi-constellation data processing | ||
- Support single-frequency and dual-frequency ionospheric-free SPP | ||
- Support multi-frequency RP | ||
|
||
**Authors:** Zhen Li, Jing Guo, and Qile Zhao from the [Satellite POD and Navigation Augmentation Group](http://panda.whu.edu.cn/), Wuhan University. | ||
|
||
**Related Paper:** | ||
|
||
- Li Z, Guo J, Zhao Q (2022) POSGO: an open-source software for GNSS pseudorange positioning based on graph optimization. | ||
|
||
## 1 Prerequisites | ||
|
||
### 1.1 System and compiler | ||
|
||
We recommend you use Ubuntu 18.04 or Ubuntu 20.04 with the gcc compiler (gcc>=7.5). | ||
|
||
### 1.2 Eigen3 | ||
|
||
``` | ||
sudo apt-get install libeigen3-dev | ||
``` | ||
|
||
### 1.3 Ceres | ||
|
||
Follow [Ceres installation instructions](http://ceres-solver.org/installation.html). | ||
|
||
## 2 Quick Start | ||
|
||
### 2.1 Installation | ||
|
||
Once the prerequisites have been installed, you can clone this repository and build POSGO as follows: | ||
|
||
``` | ||
# Clone the repository | ||
git clone https://github.com/lizhengnss/POSGO.git ~/ | ||
# Build POSGO | ||
cd ~/POSGO | ||
mkdir build && cd build | ||
cmake ../ -DCMAKE_BUILD_TYPE=Release | ||
make -j4 | ||
# Check if the compilation was successful | ||
./POSGO | ||
``` | ||
|
||
### 2.2 Data Processing | ||
|
||
program arguments need to be given in the following format when the software is running: | ||
|
||
``` | ||
POSGO -C [config] -S [GREC] -M [ProcessMode] -L [TraceLevel] | ||
``` | ||
|
||
The program parameters of SPP GOLD in paper are as follows: | ||
|
||
``` | ||
POSGO -C YOURPATH/conf/spp_kpl_go_ld.ini -S GREC -M SPP -L 1 | ||
``` | ||
|
||
The program parameters of RP GOLD in paper are as follows: | ||
``` | ||
POSGO -C YOURPATH/conf/rp_kpl_go_ld.ini -S GREC -M RTK -L 1 | ||
``` | ||
|
||
## 3 Datasets | ||
|
||
We offer 3 demo dataset with configuration file, which are located at **data** directory. | ||
|
||
### 3.1 KPL Dataset | ||
|
||
Kinematic data of urban areas in Wuhan city collected by geodetic receivers during 12:00~12:45 (UTC) on Day of Year (DOY) 165, 2022. Base station and rover GNSS observation are provided. The smoothed RTK solution from the NovAtel Waypoint 8.9 software package is used as the reference. | ||
|
||
<img src="doc/KPL.jpg" alt="KPL" style="zoom:33%;" /> | ||
|
||
### 3.2 Huawei P40 Dataset | ||
|
||
Kinematic data of urban areas in Wuhan city collected by Huawei P40 mobile phone during 3:35~4:20 (UTC) on Day of Year (DOY) 183, 2022. Base station and rover GNSS observation are provided. We are also equipped with the Leador A15 integrated navigation system, and the smoothed GNSS/INS solution form the GINS is used as the reference. | ||
|
||
<img src="doc/P40.jpg" alt="KPL" style="zoom:50%;" /> | ||
|
||
### 3.3 Huawei Mate20 Dataset | ||
|
||
Static data of urban canyon in Wuhan city collected by Huawei Mate20 mobile phone during 6:35~6:50 (UTC) on Day of Year (DOY) 266, 2021. The reference solution is obtained from RTK. | ||
|
||
<img src="doc/Mate20-1.jpg" alt="Mate20-1" style="zoom:10%;" /> <img src="doc/Mate20-2.jpg" alt="Mate20-2" style="zoom:10%;" /> | ||
|
||
## 4 Acknowledgements | ||
|
||
We thanks [RTKLIB](https://github.com/tomojitakasu/RTKLIB/tree/rtklib_2.4.3), [RTKLIB-Demo5](https://github.com/rtklibexplorer/RTKLIB), [GraphGNSSLib](https://github.com/weisongwen/GraphGNSSLib) and [OB_GINS](https://github.com/i2Nav-WHU/OB_GINS) for selfless open-source spirit and elegant programming. | ||
|
||
At the same time, Shengyi Xu from Wuhan University provided some analysis scripts for POSGO. Xiao Liu, Ziyu Fan, Gaojian Zhang, Yihao Jiang, Hengda Wei and Shengyi Xu from Wuhan University tested the software, we also thank them for their work. | ||
|
||
## 5 License | ||
|
||
The source code is released under GPLv3 license. | ||
|
||
We are still working on improving the code reliability and fix potential bugs. For any technical issues, please contact Zhen Li ([email protected]) or open an issue at this repository. |
Oops, something went wrong.