Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
lizhengnss committed May 5, 2023
1 parent a3e09d8 commit aa3230c
Show file tree
Hide file tree
Showing 110 changed files with 1,473,679 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
cmake-build-debug/
build_debug/
build_release/
build/

*.pyc
17 changes: 17 additions & 0 deletions .vscode/c_cpp_properties.json
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
}
53 changes: 53 additions & 0 deletions .vscode/launch.json
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"
},
]
}
66 changes: 66 additions & 0 deletions .vscode/settings.json
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"
}
17 changes: 17 additions & 0 deletions .vscode/tasks.json
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;"
},
]
}
58 changes: 58 additions & 0 deletions CMakeLists.txt
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}")
108 changes: 108 additions & 0 deletions Readme.md
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.
Loading

0 comments on commit aa3230c

Please sign in to comment.