# Visual-Inertial Navigation System Based on Virtual Inertial Sensors
## 4 Analysis and Experiments of Visual-Inertial Odometry Optimization  
### Analysis of VINS Odometry Optimization  
This paper analyzes the performance optimization of visual-inertial odometry based on a VINS system with the inclusion of the ZUPT on the VIMU data [7]. VINS belongs to the category of mature visual-inertial fusion algorithms, where the system estimates the pose information and constructs maps by fusing visual point clouds with pre-integrated information from inertial sensors. Figure 6 shows the flowchart of the localization and mapping process of VINS. It illustrates how the system estimates pose information and constructs maps by fusing visual point clouds with pre-integrated information from inertial sensors. The pre-integration method is a widely employed approach for processing data collected by IMUs. By integrating the angular velocity and acceleration signals, this method can provide information on the system's relative changes in attitude and velocity with respect to the previous moment [19]. \[ \begin{array}{l}\Delta v_{b}=\int a_{b}(\tau)d\tau=\int\big{(}a_{b}(\tau)-b_ {a}(\tau)-n_{a}(\tau)\big{)}d\tau\\ \Delta p_{b}=\int v_{b}(\tau)d\tau=\int\big{(}v_{b}(\tau)-b_{v}(\tau)-n_{v}( \tau)\big{)}d\tau\end{array}  \tag{1}\]  
In this equation, \(\Delta v_{b}\) and \(\Delta p_{b}\) represent the change in velocity and displacement between two specific moments in time. The variable \(a_{b}\) is the accelerometer measurement value, while \(b_{a}\) and \(n_{a}\) represent the accelerometer's bias and noise, respectively. The variable \(v_{b}\) denotes the calculated velocity value, and finally, \(b_{v}\) and \(n_{v}\) refer to the bias and noise of the calculated velocity value. \begin{table}
\begin{tabular}{c c c c c} \hline \hline  & **Mw (\({}^{\circ}\)/s)** & **Sw (\({}^{\circ}\)/s)** & **Ma (m/s\({}^{2}\))** & **Sa (m/s\({}^{2}\))** \\ \hline Walking & 0.0033 & 0.0046 & 0.076 & 0.132 \\ \hline Running & 0.0061 & 0.0072 & 0.102 & 0.183 \\ \hline Uphill & 0.0043 & 0.0049 & 0.079 & 0.137 \\ \hline Downhill & 0.0051 & 0.0050 & 0.082 & 0.141 \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Fitting output error of VIMU. \begin{table}
\begin{tabular}{c c c c c} \hline \hline  & **Mw (\({}^{\circ}\)/s)** & **Sw (\({}^{\circ}\)/s)** & **Ma (m/s\({}^{2}\))** & **Sa (m/s\({}^{2}\))** \\ \hline Walking & 0.0009 & 0.0010 & 0.046 & 0.088 \\ \hline Running & 0.0021 & 0.0037 & 0.072 & 0.121 \\ \hline Uphill & 0.0012 & 0.0016 & 0.045 & 0.083 \\ \hline Downhill & 0.0011 & 0.0019 & 0.050 & 0.092 \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Fitting output error of zero-velocity update of VIMU. During the pre-integration process, the presence of bias errors in the IMU measurements can result in accumulated integration errors, leading to a decrease in the accuracy and stability of visual-inertial odometry. To mitigate this issue, the ZUPT is applied to the foot-mounted VIMU constructed using the method described above. This correction eliminates the bias errors in the VIMU and thereby reduces the accumulation of pre-integration errors. As a result, it enhances the accuracy and stability of visual-inertial odometry [20]. \[ \begin{array}{l}a_{b}(\tau)=a_{b}(\tau)-b_{a}(\tau)-a_{a}(\tau)-\Delta b_{a}\\ v_{b}(\tau)=v_{b}(\tau)-b_{v}(\tau)-n_{v}(\tau)-\Delta b_{v}\end{array}  \tag{2}\]  
The ZUPT values for acceleration and velocity are represented by \(\Delta b_{a}\) and \(\Delta b_{v}\), respectively. The pre-integrated measurement model for the foot-mounted VIMU after the ZUPT can be defined as follows:  
\[