# gnssbox-code **Repository Path**: gu_liufang/gnssbox-code ## Basic Information - **Project Name**: gnssbox-code - **Description**: 代码与数据进行了分离 - **Primary Language**: C++ - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-06-09 - **Last Updated**: 2024-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## gnssbox ​ gpstk是德克萨斯大学(University of Texus)奥斯汀分校应用研究实验室从1978年开始开发的
gps研究工具的集合,该软件具有很多gnss软件的功能,并成为国内外 众多研究机构和个人学习
gnss的一个很好的入门软件。 ​ gpstk软件虽然具备众多优点,但是从软件结构来看,这个软件的代码历史有20年之久,并且
不同年的代码风格也差别很大,代码中有很多优秀的设计,但是也有很多地方晦涩难懂.
​ 经过长时间的学习和深入了解,越来越觉得有必要对其进行重构,原因有一下几点:
​ (1) 第三方开源工具库的蓬勃发展
​ 由于Eigen数值计算库的诸多优势,目前无人驾驶和深度学习领域的开源软件基本上把Eigen库
作为基本的数值计算库,但是gpstk# 软件仍然利用了其内部开发的矩阵向量库,因此将其替换
为Eigen库将有利于软件的功能扩展。
​ (2) glog日志工具
​ c++语言本身的日志控制是语言本身不支持的,而glog具备很多良好易用的特性。
​ (3) google命令行管理工具gflags
​ gpstk内部提供了一整套参数解释工具的类,但是gflags提供了一种非常友好的处理方式,
其接口简单易用,而且gflags仅支持长名参数,这对于ppp这种需要输入很多参数的程序来说
是更容易理解的。当参数过多时,短名参数很难选一个适当且不重复的名字。因此替换掉gpstk
软件中的CommandOption相关的类也是必须要做的。
​ (4) 文件系统
​ gpstk中的文件系统,FFTextStream和FFData这两个类的设计太晦涩难懂,已经超出了很多
c++入门学生的理解范围,因此重构文件输入输出是必须要做的工作。
考虑到gpstk软件中利用大量的template
​ (5) Python语言
​ python脚本程序的发展也越来越成熟, 用其替代传统的bash/csh,编写简单易懂
且跨平台兼容的代码也成为了目前跨平台实时软件开发的趋势,因此,替代传统的shell脚本
重构软件也是满足未来需求的必然技术路径。
​ (6) gnss技术趋势
​ 多频多系统的发展已经成为主流,gpstk中的很多设计虽然考虑了多频多系统的基本功能,
但是要实现不同技术模式对多频多系统的支持,仍然有许多工作要开展,包括:
(a) 多频多系统非差非组合ppp;(b) 单站与多站增强ppp-rtk; (c) 基于非差非组合模型的预处理
(d) 实时ppp。
​ (7)组合导航发展趋势
​ 融合视觉/INS/GNSS的定位与测图技术成为新的趋势,兼容不同数据的预处理方法和参数估计方法
成为必然的发展趋势。 
考虑到上述几个原因,对原来gpstk软件的底层工具类进行重构是今后的必然趋势,考虑到软件底层
代码的更新会改变软件的基本结构和功能,为了满足未来需求和管理方便,我们将软件名称改为gnssbox,
并预期在未来某一天可以完成以上工作,将其作为新一代gnss开源软件发布给初学者。
​ 开发面向未来的软件需要投入很多精力,需要很多人一起参与努力,欢迎大家一起为这个软件贡献
自己的力量!
​ -----张守建, 2020.6.10 疫情期间于武汉
## 安装方法 执行安装命令脚本,既可实现软件安装
cmake.sh 可执行程序将被安装到~/bin目录中,如果要修改安装路径,请修改cmake.sh脚本中的下面一行为:
cmake -DCMAKE_INSTALL_PREFIX=~/bin ../${source_name}/
把~/bin路径改为你想安装的路径
配置.bashrc,在其中增加以下语句:
export PATH=\\$PATH:./:\~/bin/bin/
export LD_LIBRARY_PATH=\\$LD_LIBRARY_PATH:\~/bin/lib/
安装完成后,请在你的本地目录下创建一个新的目录,比如tests目录,将例子程序中的数据和脚本复制到 tests目录中,进行数据解算和学习,不要在examples目录中进行数据解算和学习,否则会导致后续git库的容量增加。 ## 历史版本 version 1.2: 1. finish mw.sh/ppp.sh/updMW.sh/updLC.sh
version 1.3.1: 1. support rinex3.04, which mainly supports BDS-3 data format. version 1.3.2: 1. mw ambiguity fixing verified. 2. BLC ambiguity fixing for PPP is verified using ARRound. version 1.3.3: 1. ARMLambda should be introduced and verified. version 1.5.0: 1. pppar and pppucar are all tested correctly. version 1.5.2: 1. pod with float ambiguity have been testd 2. cycle-slip detection for leo using Geometry-based with clock variation constraint has been tested. version 1.5.3: anyOption test; 判断分析是否可以添加重复option? 添加required/optional选项,当required选项没有时,软件报错; ## 研究计划: ### 软件: 1.利用anyOption替代掉BasicFramework和CommandOption以及ConfDataReader类;
2.去掉FFTextStream类和FFData类;
3.简化Exception类;
4.利用Eigen类替代底层Vector和Matrix类;
### 算法: 1.基于非组合周跳探测方法;
2.基于非差非组合模型的RTK定位方法;
3.基于非组合PPP定位方法;
4.基于广播星历的区域ppp-rtk定位方法;