Git Product home page Git Product logo

wvu-navlab / robustgnss Goto Github PK

View Code? Open in Web Editor NEW
124.0 15.0 44.0 78.71 MB

Robust GNSS Processing With Factor Graphs

Home Page: https://www.researchgate.net/publication/320084321_Robust_Navigation_in_GNSS_Degraded_Environment_Using_Graph_Optimization

License: MIT License

HTML 5.89% CMake 1.31% C++ 90.09% C 0.48% Mathematica 1.26% TeX 0.08% Makefile 0.11% Shell 0.02% MATLAB 0.77%
gnss robust robust-optimization gtsam factor-graph

robustgnss's Introduction

RobustGNSS


Please see https://github.com/wvu-navLab/ICE for an updated implementation of the robust estimators presented in this repo as well as a new robust estimators titled Incremental Covariance Estmation (ICE).


This repository contains a modified version of GTSAM, which has been updated for GNSS signal processing. To enable RINEX file reading and GNSS observation modeling, the GPSTk library is utilized. A detailed description of the modification can be found in "Robust Navigation In GNSS Degraded Environment Using Graph Optimization". This software has been cleared for public release by the USAF Case # 88ABW-2017-3893

For information on incorporating carrier-phase observations, please see "Evaluation of Kinematic Precise Point Positioning Convergence with an Incremental Graph Optimizer". The software released with this paper can be found here: https://github.com/wvu-navLab/PPP-BayesTree.



If you utilize this software for an academic purpose, please consider using the following citation:

@article{watson2018robust,
        title={Robust navigation in GNSS degraded environment using graph optimization},
        author={Watson, Ryan M and Gross, Jason N},
        journal={arXiv preprint arXiv:1806.08899},
        year={2018}
}


## How to Install

1) Requirements/Recommendations

Required

  • Boost --> sudo apt-get install libboost-all-dev
  • CMake --> sudo apt-get install cmake

Recommended

  • Intel TBB --> sudo apt-get install libtbb-dev
  • Intel MKL

2) Clone repository to local machine

  • RobustGNSS --> git clone https://github.com/wvu-navLab/RobustGNSS.git

3) Build

cd RobustGNSS/gtsam; 
mkdir build;  
cd build;
cmake ..
make

4) Test

Contained within the RobustGNSS/gtsam/gnssExamples directory are several examples. As an initial test, let's run the non-robust optimization script. First, move into the GTSAM build directory.

cd RobustGNSS/gtsam/build 

Next, the RINEX file saved in the RobustGNSS/gtsam/gnssData directory must be converted to a format readable by GTSAM. ( It should be noted that GTSAM only looks for data files in the RobustGNSS/gtsam/gnssData directory, so all new data files must be stored there. )

./gnssExamples/rnx2Gtsam --obs dec12.16o --sp3 dec12.sp3 > ../gnssData/dec12.gtsam 

Now, we can run the optimization script over the newly generated data file.

./gnssExamples/l2Example -i dec12.gtsam --dir test1 --writeENU  

Finally, we can look at the ground trace of the solution,

cd test1;
gnuplot 
plot 'enu.sol' using 2:3 with points

fg error

For a complete list of available options, run the command provided below.

./gnssExamples/l2Example -h 

robustgnss's People

Contributors

jsngross avatar watsonryan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

robustgnss's Issues

Code debugging encountered a problem: unable to open raise.c

Dear Mr. Ryan Watson,
I have read your paper "robust navigation in GNSS degraded environment using graph optimization" and found this code through the paper.There are some problems in debugging the code:When I use vscode to debug code, the system says, "can't open / build / glibc-e6zv40 / glibc-2.23/sysdeps/unix/syssv/linux/raise.c"and"can't open / build / glibc-e6zv40 / ....../abort.c".However, when I followed the instructions of READ.ME, it was very smooth.Have you ever encountered this problem?
My environment configuration:Linux version 4.15.0-115-generic (buildd@lcy01-amd64-029) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu116.04.12)) #11616.04.1-Ubuntu SMP Wed Aug 26 17:36:48 UTC 2020.

Same bug as PPP-BayesTree

I initially run the code through the ternimal and it did work.
Then i run it through VSCode,it occurs the same issue as PPP-BayesTree:

huanhexiao@JIN:~/WORK/FactorGraph/GNSS/RobustGNSS/RobustGNSS_gtsam/Build_qt$ ./gnssExamples/l2Example -i dec12.gtsam --dir test1 --writeENU

Using 4 threads

###########################
GNSS Data File :: dec12.gtsam

Processing Strategy :: GNSS Only using L2 Optimization
###########################

l2Example: /home/huanhexiao/WORK/FactorGraph/GNSS/RobustGNSS/RobustGNSS_gtsam/gtsam/3rdparty/Eigen/Eigen/src/Core/Block.h:142: Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Block(XprType&, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index) [with XprType = Eigen::Matrix<double, -1, -1>; int BlockRows = -1; int BlockCols = -1; bool InnerPanel = false; Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index = long int]: Assertion a_startRow >= 0 && blockRows >= 0 && a_startRow <= xpr.rows() - blockRows && a_startCol >= 0 && blockCols >= 0 && a_startCol <= xpr.cols() - blockCols' failed. l2Example: /home/huanhexiao/WORK/FactorGraph/GNSS/RobustGNSS/RobustGNSS_gtsam/gtsam/3rdparty/Eigen/Eigen/src/Core/Block.h:142: Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Block(XprType&, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index) [with XprType = Eigen::Matrix<double, -1, -1>; int BlockRows = -1; int BlockCols = -1; bool InnerPanel = false; Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index = long int]: Assertion a_startRow >= 0 && blockRows >= 0 && a_startRow <= xpr.rows() - blockRows && a_startCol >= 0 && blockCols >= 0 && a_startCol <= xpr.cols() - blockCols' failed.
l2Example: /home/huanhexiao/WORK/FactorGraph/GNSS/RobustGNSS/RobustGNSS_gtsam/gtsam/3rdparty/Eigen/Eigen/src/Core/Block.h:142: Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Block(XprType&, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index) [with XprType = Eigen::Matrix<double, -1, -1>; int BlockRows = -1; int BlockCols = -1; bool InnerPanel = false; Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Index = long int]: Assertion `a_startRow >= 0 && blockRows >= 0 && a_startRow <= xpr.rows() - blockRows && a_startCol >= 0 && blockCols >= 0 && a_startCol <= xpr.cols() - blockCols' failed.

Now i delete the build fold and re-run it through the terminal, the issue occurs just as VSCode does.
Any advice?
Thank u

GTSAM commit history missing

Dear developers,
Thank you for sharing this piece of work. It looks quite interesting.

I just wanted to give my feedback on the absence of the gtsam commit history. I think that it would have been beneficial to include the full gtsam commit history, such that the changes you made to the library can be directly tracked, and if the authors or someone wants to push your contributions to the upstream gtsam repo, it's easier for them.

Best,
Yoshua Nava

Computation efficiency

The work is really impressive.

Do you compare the computation efficiency between the traditional EKF and your new proposed method?

Error of boost::posix_time

gtsam/gtsam/nonlinear/LevenbergMarquardtOptimizer.cpp:68:3: error: ‘startTime_’ was not declared in this scope startTime_ = boost::posix_time::microsec_clock::universal_time(); ^ /home/steve/RobustGNSS/gtsam/gtsam/nonlinear/LevenbergMarquardtOptimizer.cpp: In member function ‘void gtsam::LevenbergMarquardtOptimizer::writeLogFile(double)’: /home/steve/RobustGNSS/gtsam/gtsam/nonlinear/LevenbergMarquardtOptimizer.cpp:112:34: error: ‘startTime_’ was not declared in this scope << 1e-6 * (currentTime - startTime_).total_microseconds() << ","
There are some error happenned when I was trying to compile the code in Ubutnu 16.04 and Ubuntu 18.04.
Could you please give me some advice about the version of boost library you have installed in your system?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.