## 2 Single-Camera Trilateration Algorithm
### Simulation Settings  
A performance analysis has been conducted on the proposed single-camera trilateration algorithm with representative examples in which a moving camera is localized in \(\mathbf{P}^{3}\) based on three landmarks, simulated in Matlab. In the simulated global frame of reference, the landmarks (reference points) are placed at \({}^{\delta}\mathbf{p}_{1}=\left[ \begin{array}{cccc}500&0&0\end{array}  \right]^{T}\), \({}^{\delta}\mathbf{p}_{2}=\left[ \begin{array}{cccc}-250&250\sqrt{3}&0\end{array}  \right]^{T}\) and \({}^{\delta}\mathbf{p}_{3}=\left[ \begin{array}{cccc}-250&-250\sqrt{3}&0\end{array}  \right]^{T}\). They form an equilateral triangle on the XY plane, inscribed in a circle centered at the origin of the global frame with a radius of r = 500 length units (Figure 2). Figure 2: Simulation settings. This figure is adapted from Figure 3 in [58]. (c) (2007) IEEE. Reprinted, with permission, from [[PERSON]; [PERSON] Recovering the position and orientation of a mobile robot from a single image of identified landmarks. In Proceedings of the 2007 IEEE/RSJ International Conference on Intelligent Robots and Systems, 2007; pp. 1065–1070.1). To study the effect of the geometric arrangement of the camera relative to the landmarks on the performance indices, we let the camera move on a data acquisition sphere S centered at the origin of the global frame with a radius of R, and keep the optical axis of the camera pointing towards the origin. We define a tilt angle \(\theta\) as the angle between \(Z_{\mathrm{g}}\) and \(-\mathbf{n}_{3}\), and a pan angle \(\phi\) as the angle between \(X_{\mathrm{g}}\) and the orthogonal projection of \(-\mathbf{n}_{3}\) on the XY plane (Figure 2). To study the effect of the observation distance on the performance indices, we test the algorithm with different values of R. To keep the inscribing circle of the landmarks in the camera field of view all the time, we use R \(\geq\) 3000. It means that the required maximal angle of view is about \(19^{\circ}\) (corresponding to R = 3000 and \(\theta\) = 0\({}^{\circ}\)), which is a mild requirement met by a large number of lenses. For a specific R, by changing the tilt angle \(\theta\) and pan angle \(\phi\), we move the camera on the sphere, and check the variation of the performance indices on the sphere. The intrinsic camera parameters used in the simulation are obtained by calibrating a real camera (a MatrixVision BlueFox-120 640 \(\times\) 480 CCD (Charged Coupled Device) grayscale camera with a Kowa 12 mm lens) using the camera calibration toolbox in [62] and a printed black/white checkerboard pattern. In particular, \({}^{m}\mathbf{f}\) = [1627.5609, 1629.9348]\({}^{T}\) and \({}^{m}\mathbf{q}_{0}\) = [333.9088, 246.3799]\({}^{T}\). The standard deviations of input errors are chosen mainly according to the calibration results of the above camera and lens. Specifically, using the camera calibration toolbox in [62] to calibrate the camera and lens, we obtained the estimation error for \({}^{m}\mathbf{f}\) as [1.1486, 1.1069]. Since the estimation errors are approximately three times the standard deviation of \(\delta^{m}\mathbf{f}\)[62], a representative standard deviation of the \(\delta^{m}\mathbf{f}\) components can be taken as \(\sigma_{f}\) = 0.4. Meanwhile, the estimation error for \({}^{m}\mathbf{q}_{0}\) was obtained as [1.9374, 1.5782], which means that a representative standard deviation of the \(\delta^{m}\mathbf{q}_{0}\) components can be taken as \(\sigma_{c}\) = 0.6. In addition, we take \(\sigma_{p}\) = 25 as a representative standard deviation of the \(\delta^{S}\mathbf{p}_{i}\) components, which corresponds to 5% of the base radius r. Besides, \(\sigma_{q}\) = 0.5 is taken as a representative standard deviation of the \(\delta^{m}\mathbf{q}_{i}\) components based on a conservative estimation of the average image segmentation operation.