## 3 TQU-SLAM Benchmark Dataset
### Preparing Ground-Truth Trajectory for VO  
To prepare the ground-truth data for evaluating the results of VO estimation, we built the ground-truth data of the motion trajectory as follows. We predefined a coordinate system in a real-world space as shown in Figure 3, where the X axis is red, the Y axis is green, and the Z axis is blue. We used a self-developed tool in the Python programming language to mark four points on the color image, as shown in Figure 6. Then we took the corresponding four marker points on the depth image, because each frame was obtained as a pair of RGB images and depth images. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Data Acquisition Times** & **Direction** & **Number of RGB-D Frames** \\ \hline \multirow{2}{*}{1 st} & FO-D & 21,333 \\ \cline{2-3}  & OP-D & 22,948 \\ \hline \multirow{2}{*}{2 nd} & FO-D & 19,992 \\ \cline{2-3}  & OP-D & 21,116 \\ \hline \multirow{2}{*}{3 rd} & FO-D & 17,995 \\ \cline{2-3}  & OP-D & 20,814 \\ \hline \multirow{2}{*}{4 th} & FO-D & 17,885 \\ \cline{2-3}  & OP-D & 18,548 \\ \hline \end{tabular}
\end{table} 
Table 1: The number of frames of four data acquisition times for the TQU-SLAM benchmark dataset. Figure 5: Illustration of a vehicle equipped with a camera and computer when collecting data. To convert the four marked points of the marker on the RGB image and the four corresponding points on the depth image to 3D point cloud data, we used the camera's intrinsic parameters, shown in Equation (1):  
\[ \begin{bmatrix}fx&0&cx\\ 0&fy&cy\\ 0&0&1\end{bmatrix} = \begin{bmatrix}525.0&0&319.5\\ 0&525.0&239.5\\ 0&0&1\end{bmatrix}  \tag{1}\]  
where \(fx,fy,cx\), and \(cy\) are the intrinsic parameters of the camera. For each marker point with coordinates \((x_{d},y_{d})\) and depth value \(d_{a}\) on the depth image, the result is converted to point M with coordinates \((x_{m},y_{m},z_{m})\) using Equation (2):  
\[ \begin{split} x_{m}=&\frac{(x_{d}-cx)\times d_{a}}{fx}\\ y_{m}=&\frac{(y_{d}-cy)\times d_{a}}{fy}\\ z_{m}=& d_{a}\end{split}  \tag{2}\]  
As shown in Figure 6, the four points of the marker point cloud data are according to the camera coordinate system, with the original coordinate system being the center of the camera. Therefore, to find these four points in the real-world coordinate system, it is necessary to find the rotation and translation matrix (transformation matrix) to transform four points from the camera coordinate system to the real-world coordinate system. For a point with coordinates \(M(x,y,z)\) in the camera coordinate system, \(M^{\prime}(x^{\prime},y^{\prime},z^{\prime})\) are the coordinates of point \(M\) in the real-world coordinate system, which we find after performing a transformation from the camera coordinate system to the real-world coordinate system using Equation (3):  
\[ \begin{bmatrix}x^{\prime}\\ y^{\prime}\\ z^{\prime}\\ 1\end{bmatrix} = \begin{bmatrix}Ro_{11}&Ro_{12}&Ro_{13}&Tr_{1}\\ Ro_{21}&Ro_{22}&Ro_{23}&Tr_{2}\\ Ro_{31}&Ro_{32}&Ro_{33}&Tr_{3}\\ 0&0&0&1\end{bmatrix} * \begin{bmatrix}x\\ y\\ z\\ 1\end{bmatrix}  \tag{3}\]  
where \(Ro_{11},Ro_{12},Ro_{13},Ro_{21},Ro_{22},Ro_{23},Ro_{31},Ro_{32},Ro_{33}\) are the components of the rotation matrix from the camera coordinate system to the real-world coordinate system. \(Tr_{1},Tr_{2}\)  
Figure 6: Illustration of marker application and the marker results collected on a color image. and \(Tr_{3}\) are the components of the translation matrix from the camera coordinate system to the real-world coordinate system. The transformation result of point \(M^{\prime}\) is shown in Equation (4):  
\[ \begin{Bmatrix}x^{\prime}&=&R_{011}x&+R_{012}y&+R_{0132}+Tr_{1}\\ y^{\prime}&=&R_{021}x&+R_{022}y&+R_{023}x+Tr_{2}\\ z^{\prime}&=&R_{031}x&+R_{032}y&+R_{0332}+Tr_{3}\end{Bmatrix}  \tag{4}\]  
From the coordinates of the four points of point cloud data in the camera's coordinate system, we define their coordinates in the matrix as Equation (5):  
\[ \begin{bmatrix}1&z_{1}&y_{1}&x_{1}\\ 1&z_{2}&y_{2}&x_{2}\\ 1&z_{3}&y_{3}&x_{3}\\ 1&z_{4}&y_{4}&x_{4}\end{bmatrix}