Add equations for landmark cost function. (#1254)
							parent
							
								
									1b88fb8e90
								
							
						
					
					
						commit
						30bc6bd97a
					
				|  | @ -20,13 +20,13 @@ Relative Transform Error 2D | |||
| =========================== | ||||
| 
 | ||||
| Given two poses | ||||
| :math:`\mathbf{p_i} = [\mathbf{x_i}; \theta_i] = [x_i, y_i, \theta_i]^T` | ||||
| and :math:`\mathbf{p_j} = [\mathbf{x_j}; \theta_j] = [x_j, y_j, \theta_j]^T` | ||||
| :math:`\mathbf{p}_i = [\mathbf{x}_i; \theta_i] = [x_i, y_i, \theta_i]^T` | ||||
| and :math:`\mathbf{p}_j = [\mathbf{x}_j; \theta_j] = [x_j, y_j, \theta_j]^T` | ||||
| the transformation :math:`\mathbf T` from the coordinate frame :math:`j` to the | ||||
| coordinate frame :math:`i` has the following form | ||||
| 
 | ||||
| .. math:: | ||||
|  \mathbf{T}( \mathbf{p_i},\mathbf{p_j}) = | ||||
|  \mathbf{T}( \mathbf{p}_i,\mathbf{p}_j) = | ||||
|  \left[ | ||||
|    \begin{array}{c} | ||||
|         R(\theta_i)^T (\mathbf x_j - \mathbf x_i) \\ | ||||
|  | @ -42,12 +42,12 @@ The weighted error :math:`f:\mathbb R^6 \mapsto \mathbb R^3` between | |||
| coordinate frame :math:`i` can be computed as | ||||
| 
 | ||||
| .. math:: | ||||
|  \mathbf f( \mathbf{p_i},\mathbf{p_j}) = | ||||
|  \mathbf f_{\text{relative}}( \mathbf{p}_i,\mathbf{p}_j) = | ||||
|  \left[ | ||||
|    w_{\text{t}} \; w_{\text{r}} | ||||
|  \right] | ||||
|  \left( | ||||
|    \mathbf T_{ij}^m - \mathbf T( \mathbf{p_i},\mathbf{p_j}) | ||||
|    \mathbf T_{ij}^m - \mathbf T( \mathbf{p}_i,\mathbf{p}_j) | ||||
|  \right) = | ||||
|  \left[ | ||||
|    \begin{array}{c} | ||||
|  | @ -68,7 +68,7 @@ Jacobian matrix  :math:`J_f` is given by: | |||
| 
 | ||||
| .. math:: | ||||
|  \begin{align} | ||||
|    J_f( \mathbf{p_i},\mathbf{p_j}) &= | ||||
|    J_f( \mathbf{p}_i,\mathbf{p}_j) &= | ||||
|    \left[ | ||||
|      \frac{\partial\mathbf f}{\partial x_i} \quad | ||||
|      \frac{\partial\mathbf f}{\partial y_i} \quad | ||||
|  | @ -92,3 +92,39 @@ Jacobian matrix  :math:`J_f` is given by: | |||
|      \end{array} | ||||
|    \right] | ||||
|  \end{align} | ||||
| 
 | ||||
| Landmark Cost Function | ||||
| ====================== | ||||
| 
 | ||||
| Let :math:`\mathbf{p}_o` denote the global pose of the SLAM tracking frame at | ||||
| which a landmark with the global pose :math:`\mathbf{p}_l` is observed. | ||||
| The landmark observation itself is the measured transformation | ||||
| :math:`\mathbf{T}^m_{ol}` that was observed at time :math:`t_o`. | ||||
| 
 | ||||
| As the landmark can be observed asynchronously, the pose of observation  | ||||
| :math:`\mathbf{p}_o` is modeled in between two regular, consecutive trajectory | ||||
| nodes :math:`\mathbf{p}_i, \mathbf{p}_j`. | ||||
| It is interpolated between :math:`\mathbf{p}_i` and | ||||
| :math:`\mathbf{p}_j` at the observation time :math:`t_o` using a linear | ||||
| interpolation for the translation and a quaternion SLERP for the rotation: | ||||
| 
 | ||||
| .. math:: | ||||
|   \mathbf{p}_o = \text{interpolate}(\mathbf{p}_i, \mathbf{p}_j, t_o) | ||||
| 
 | ||||
| Then, the full weighted landmark cost function can be written as: | ||||
| 
 | ||||
| .. math:: | ||||
|   \begin{align} | ||||
|     \mathbf f_{\text{landmark}}(\mathbf{p}_l, \mathbf{p}_i, \mathbf{p}_j) &=  | ||||
|       \mathbf f_{\text{relative}}(\mathbf{p}_l, \mathbf{p}_o) \\  | ||||
|     &=  | ||||
|     \left[ | ||||
|       w_{\text{t}} \; w_{\text{r}} | ||||
|     \right] | ||||
|     \left( | ||||
|       \mathbf T_{ol}^m - \mathbf T( \mathbf{p}_o,\mathbf{p}_l) | ||||
|     \right) | ||||
|   \end{align} | ||||
| 
 | ||||
| The translation and rotation weights :math:`w_{\text{t}}, w_{\text{r}}` are | ||||
| part of the landmark observation data that is fed into Cartographer. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue