# Calculate information matrix for graph slam

0

I am new to SLAM. I am working on graph slam where I need to do pose graph optimisation. For this requirement information matrix is required between two edges for which the transformation has already computed using iterative closest point. I used Open3D library to compute this as well as information matrix. However I don’t know what is information matrix and how it is calculated given the transformation between two nodes. I would also appreciate the mathematical derivation.

The information matrix is just the inverse of the covariance matrix.

I recommend you read the page I linked, or just google covariance matrix. Essentially it contains how certain you are in your measurements. (The lower the number the less uncertain you are).

As an example:

The translation matrix between nodes(ignoring rotation for now). Your covariance matrix should look something like this

$$\begin{bmatrix} \sigma_{xx}^2 & \sigma_{xy}^2 & \sigma_{xz}^2\\ \sigma_{yx}^2 & \sigma_{yy}^2 & \sigma_{yz}^2 \\ \sigma_{zx}^2 & \sigma_{zy}^2 & \sigma_{zz}^2 \end{bmatrix}$$

Where the $$\sigma_{aa}$$ is the standard deviation of your $$a$$ measurement, and $$\sigma_{ab}$$ is the correlation between $$a$$ and $$b$$(In many situations people just set this to 0).

Ideally these values should be determined experimentally, but in most cases people just put values that intuitively feel right. E.g for a translation edge we might set it to

$$\begin{bmatrix} 0.1^2 & 0 & 0\\ 0 & 0.1^2 & 0 \\ 0 & 0 & 0.1^2 \end{bmatrix}$$

because we believe our translation measurement is accurate to about 0.1 meter. We have also decided to ignore the correlation terms.

The information matrix is equal to the inverse of this matrix so in our case it would be

$$\begin{bmatrix} \sigma_{xx}^2 & \sigma_{xy}^2 & \sigma_{xz}^2\\ \sigma_{yx}^2 & \sigma_{yy}^2 & \sigma_{yz}^2 \\ \sigma_{zx}^2 & \sigma_{zy}^2 & \sigma_{zz}^2 \end{bmatrix}^{-1} =\begin{bmatrix} 0.1^2 & 0 & 0\\ 0 & 0.1^2 & 0 \\ 0 & 0 & 0.1^2 \end{bmatrix}^{-1} = \begin{bmatrix} 100 & 0 & 0\\ 0 & 100 & 0 \\ 0 & 0 & 100 \end{bmatrix}$$

Note that since the information matrix is the inverse of the covariance it has the opposite property that the higher the number the better the measurement. Essentially a bigger number means that we have more information about it.

I mentioned that you can set the values intuitively or determine them experimentally, another approach that you can use since you are using ICP is the "Hessian matrix" of the optimization problem. In Open3D this is the JTJ matrix computed here. Essentially the "Hessian" describes how well your problem is constrained, and thus can serve as your information matrix.

All 3 methods I described for computing it are viable, and there are also a bunch more complicated algorithms. Generally for pose graph SLAM I would say people just intuitively set some values.

Note that in your case since you have the full transform your covariance/information matrix should be 6x6.

• Note that JtJ approximation only works when the current state is close enough to the true value. Jul 27, 2021 at 1:37