## 3 Shearer Positioning Technology
### The Backward Calibration of Shearer Trajectory
The back-end step is to realize the map optimization and obtain the estimated pose according to the constraint information from the loop closure. This step is generally implemented using g2o [36] and Ceres-solver [37]. The GOM is described in detail as follows. The dead-reckoning algorithm is used to calculate the shearer position based on the INS and axial encoder as (8). \[ \begin{split} N_{k}&=N_{k-1}+v_{k}T\cos\varphi_{k} \cos\theta_{k}\\ E_{k}&=E_{k-1}+v_{k}T\sin\varphi_{k}\cos\theta_{k} \\ U_{k}&=U_{k-1}+v_{k}T\sin\theta_{k}\end{split}  \tag{8}\]  
where \(N_{k},E_{k},\) and \(U_{k}\) are the shearer measurement position in the north, east, and up; \(v_{k}\) is the shearer velocity provided by the axial encoder; \(T\) is the sampling period; and \(\varphi_{k}\) and \(\theta_{k}\) are the heading and pitch angles measured by the INS. As introduced in Section 3.1, the heading drift error is much larger than the drift error of the pitch. Therefore, this paper only considers the heading drift error. According to the dead-reckoning algorithm, the position error caused by the heading drift in the north (\(\Delta N_{k}\)) from \(k-1\) to \(k\) can be expressed as  
\[\Delta N_{k}=v_{k}T\cos\varphi_{k}\cos\theta_{k}-v_{k}T\cos(\varphi_{k}+\Delta \varphi_{k})\cos\theta_{k} \tag{9}\]  
where \(\Delta\varphi_{k}\) is the absolute drift error of heading angle at \(k\) time, which is the sum of relative drift error (\(e_{k}\)) in each sampling period as (10). \[\Delta\varphi_{k}=\sum_{k=1}^{k}e_{k} \tag{10}\]  
Expanding \(\Delta N_{k}\) into a power series of \(\Delta\varphi_{k}\) at \(\Delta\varphi_{k}=0\) yields  
\[\Delta N_{k}\approx H_{1}\Delta\varphi_{k}+\frac{1}{2}H_{2}\Delta\varphi_{k}{} ^{2}+\frac{1}{6}H_{3}\Delta\varphi_{k}{}^{3} \tag{11}\]where \(H_{1}\), \(H_{2}\), and \(H_{3}\) are coefficients found in (12). \[ \begin{split} H_{1}&=\frac{d(\Delta N_{k})}{d(\Delta \varphi_{k})}=v_{k}T\sin(\varphi_{k}+\Delta\varphi_{k})\cos\theta_{k}\\ H_{2}&=\frac{d^{2}(\Delta N_{k})}{d(\Delta \varphi_{k})^{2}}=v_{k}T\cos(\varphi_{k}+\Delta\varphi_{k})\cos\theta_{k}\\ H_{3}&=\frac{d^{3}(\Delta N_{k})}{d(\Delta \varphi_{k})^{3}}=-v_{k}T\sin(\varphi_{k}+\Delta\varphi_{k})\cos\theta_{k}\\ \end{split}  \tag{12}\]  
Similarly, the position error caused by the heading drift in the east (\(\Delta E_{k}\)) from \(k-1\) to \(k\) is given as (13). \[\Delta E_{k}=v_{k}T\sin\varphi_{k}\cos\theta_{k}-v_{k}T\sin(\varphi_{k}+ \Delta\varphi_{k})\cos\theta_{k} \tag{13}\]  
\(\Delta E_{k}\) is expanded into a power series of \(\Delta\varphi_{k}\) as  
\[\Delta E_{k}\approx J_{1}\Delta\varphi_{k}+\frac{1}{2}J_{2}\Delta{\varphi_{k }}^{2}+\frac{1}{6}J_{3}\Delta{\varphi_{k}}^{3} \tag{14}\]  
where  
\[ \begin{split} J_{1}&=\frac{d(\Delta E_{k})}{d( \Delta\varphi_{k})}=-v_{k}T\cos(\varphi_{k}+\Delta\varphi_{k})\cos\theta_{k}\\ J_{2}&=\frac{d^{2}(\Delta E_{k})}{d(\Delta\varphi _{k})^{2}}=v_{k}T\sin(\varphi_{k}+\Delta\varphi_{k})\cos\theta_{k}\\ J_{3}&=\frac{d^{3}(\Delta E_{k})}{d(\Delta\varphi _{k})^{3}}=v_{k}T\cos(\varphi_{k}+\Delta\varphi_{k})\cos\theta_{k}\\ \end{split}  \tag{15}\]  
Based on the above analysis, the objective function \(F(e_{k})\) is defined as  
\[F(e_{k})=\left|\left(\sum_{k=1}^{m}\Delta N_{k}\right)-\Delta P_{N}\right|+ \left|\left(\sum_{k=1}^{m}\Delta E_{k}\right)-\Delta P_{E}\right| \tag{16}\]  
where \(m\) is the number of sampling periods in a cutting cycle, and \(\Delta P_{N}\) and \(\Delta P_{E}\) are specifically described as (17). \[ \begin{split}\Delta P_{N}&=(N_{m}-N_{1})-(N_{end}- N_{start})\\ \Delta P_{E}&=(E_{m}-E_{1})-(E_{end}-E_{start})\\\end{split}  \tag{17}\]  
where \(N_{1}\) and \(E_{1}\) are the measured position coordinates of the start point in the north and east, \(N_{m}\) and \(E_{m}\) are the measured position coordinates of the end point, \(N_{start}\) and \(E_{start}\) are the accuracy position coordinates of the start point, and \(N_{end}\) and \(E_{end}\) are the accuracy position coordinates of the end point.