# An Improved Visual SLAM Based on Map Point Reliability under Dynamic Environments
## 3 Experiments  
### Datasets and Evaluation Criteria  
In this section, we test the performance of our proposed algorithm in dynamic environments. All experiments were run on Ubuntu 20.04 LTS using an Inter(R) Core(TM) [EMAIL_ADDRESS] GHz CPU and 32 GB@2400 MHz RAM. The test dataset we used is the TUM RGB-D dataset [48; 49], which is widely used for dynamic SLAM testing. The TUM RGB-D dataset, published by TUM Computer Vision Group in 2012, consists of 39 sequences recorded at 30 frames per second using a Microsoft Kinect sensor in different indoor scenes. It also comes with ground truth and some performance evaluation tools. In these experiments, we use dynamic object sequences to test the accuracy and real-time performance of our proposed algorithm. In these sequences of the TUM RGB-D dataset, the camera is moved at five different modes. (1) The \"static\" mode: the camera is static with slight shaking. (2) The \"xyz\" mode: the camera is moved approximately along the X, Y and Z axis with few rotational components. (3) The \"rpy\" mode: the camera is mostly only rotated around the principal axes with few translational motions. (4) The \"halfsphere\" mode: The camera moves back and forth along the latitude and longitude of the hemisphere, with the lens pointed at the center of the ball. (5) The \"desk-person\" mode: a person is sitting at one of the desks and continuously moves several objects around. Here, we select 5 sequences of slightly dynamic scenes and 4 sequences of highly dynamic scenes. In the slightly dynamic scene, two people sit on a chair, only moving their hands or faces and keeping their bodies static, while the camera moves in different ways. The slightly dynamic sequences we used include fr2/desk-person (fr2/d/person), fr3/sitting-static (fr3/s/static), fr3/sitting-xyz (fr3/s/xyz), fr3/sitting-rpy (fr3/s/rpy) and fr3/sitting-halfsphere (fr3/s/half). The highly dynamic scenes are where two people move freely, stand or sit at will, and the camera moves in the same way as the types above. The highly dynamic sequences we used are fr3/walking-static (fr3/w/static), fr3/walking-xyz (fr3/w/xyz), fr3/walking-rpy (fr3/w/rpy) and fr3/walking-halfsphere (fr3/w/half). We evaluate the performance of our method on these sequences by evaluating the quality of the estimated trajectories from the ground truth trajectories with two kinds of evaluation metrics, relative pose error (RPE) and absolute trajectory error (ATE) [50]. For a sequence of poses from the estimated trajectories \(P_{1},\ldots,P_{n}\in SE(3)\) and from the ground truth trajectories \(Q_{1},\ldots,Q_{n}\in SE(3)\), the RPE measures the local accuracy of the trajectories over a fixed time interval \(\Delta\). The RPE at time step \(i\) is described as:  
\[E_{i}=\Big{(}Q_{i}^{-1}Q_{i+\Delta}\Big{)}^{-1}\Big{(}P_{i}^{-1}P_{i+\Delta} \Big{)} \tag{13}\]  
From a sequence of \(n\) camera poses, we obtain individual RPE along the sequence in this way: \(m=n-\Delta\). Since each \(E_{i}\) consists of a translation part and a rotation part, we need to calculate them separately. Because the TUM RGB-D dataset was recorded with 30 Hz, we set \(\Delta=30\). From these errors, the root mean squared error (RMSE) over all time indices of the translational and rotational components is calculated as:  
\[\text{Trans.RMSE}=\Bigg{(}\frac{1}{m}\sum_{i=1}^{m}\|trans(E_{i})\|^{2}\Bigg{)} ^{1/2} \tag{14}\]  
\[\text{Rot.RMSE}=\Bigg{(}\frac{1}{m}\sum_{i=1}^{m}\|rot(E_{i})\|^{2}\Bigg{)}^{ 1/2} \tag{15}\]  
where \(trans(E_{i})\) and \(rot(E_{i})\) refers to the translational and rotational component of the RPE \(E_{i}\), respectively. The ATE is used to evaluate global consistency. The ATE at time step \(i\) can be computed as:  
\[F_{i}=\mathbf{Q}_{i}^{-1}\mathbf{S}\mathbf{P}_{i} \tag{16}\]where \(\mathbf{S}\) is the rigid-body transformation corresponding to the least-squares solution, \(\mathbf{P}_{i}\) is the estimated trajectory, and \(\mathbf{Q}_{i}\) is the ground truth trajectory. For ATE, we just evaluate its translation part.