# An Algorithm to Assist the Robust Filter for Tightly Coupled RTK/INS Navigation System
## 1 Introduction
However, conventional robust filters cannot identify whether faults happen in the state data or the measurements contain gross errors. The integration can perform worse if the state data causes the detection anomaly, but the robust filter still magnifies the measurement noise covariance [56; 57]. Some algorithms are proposed to deal with this issue, including Non-Holonomic Constraint (NHC)-aiding [43; 57] and two-step filtering [58; 59]. Furthermore, many researchers propose robust GNSS/INS integration algorithms based on different filters, including the Unscented Kalman Filter (UKF)[24], the Cubature Kalman Filter (CKF) [56], the strong tracking square-root Kalman filter [60], and the federated filter [61]. There are many excellent open-source GNSS and GNSS/INS projects. RTKLIB is a well-known and representative open-source software for calculating high-precision positioning results [62]. RTKLIB supports real-time mode (RTK) and post-processing mode, also known as PPK. Furthermore, RTKLIB provides algorithms for Precise Point Positioning, another phase-based positioning technique, which is also known as PPP. PPPLIB is developed from RTKLIB, which focused more on the algorithms of PPP [63]. PPPLIB also supports PPK mode and LC GNSS/INS mode. The author announces that PPPLIB will support TC GNSS/INS mode in the future. When it comes to GNSS/INS integration, [PERSON] shares many excellent codes, also known as PSINS software, on his website [64]. PSINS contains Matlab and C++ codes, which significantly drives GNSS/INS integration research. PSINS mainly concentrates on LC integration and pseudorange-based TC integration. GINAV is a comprehensive project that combines the advantages of the above work. GINAV provides Matlab codes and supports different integration modes, including LC integration, pseudorange-based TC integration, PPK TC integration, and PPP TC integration [65]. Notably, the i2 nav laboratory from Wuhan University shares an optimization-based GNSS/INS integration strategy called OB-GINS, which adopts a brand new architecture compared to conventional integration methods [66]. As RTKLIB is implemented in ANSI C, our previous work implemented the RTK function in C++ and packaged these codes into a Robot Operating System (ROS) node to fit in SLAM projects based on ROS [67]. We summarize these projects' characteristics in Table 2 to make the description clearer. The following are the contributions:  
1. We improve our previous work to support GPS/BDS TC RTK/INS integration. Many related works introduce TC RTK/INS. However, most of them do not go into much detail about the implementation of the code. Although the TC RTK/INS integration is not rocket science, the implementation difficulties are easily underestimated,especially for the teams and labs just entering the field. This study introduces our implementations in detail and gives some derivations of key issues. We also open source our codes to facilitate the work of other researchers. Our codes are in C++ and are based on RTKLIB, PSINS, and GINAV. As mentioned above, GINAV is implemented in Matlab. We believe our C++ implementation can be more suitable for some engineering applications. Furthermore, GINAV aims to meet the researcher's requirements for PPK. GINAV imports all the GNSS measurements and IMU data simultaneously when it comes to the input. We let the observations enter the integration sequentially by timestamp, approaching the real-time operation. 2. We propose a novel algorithm to improve RKF and test the improvement. We introduce the Cignal-to-Noise Ratio (CNR) to help detect outliers that should be discarded. We use CNR to decide whether a potential outlier should be maintained for a while to resist excessive robustness. The algorithm's performance is tested on open-source datasets. The test shows that our algorithm's positioning performance is improved compared to that of conventional RKF.