I am trying to implement GraphSLAM from Sebastian Thrun's paper, The GraphSLAM Algorithm with Applications to Large-Scale Mapping of Urban Structures.

When I compute the inverse of my information matrix, $\Omega^{-1}$, I get an error, Matrix is Singular, because $\Omega$ is singular. How could I avoid matrix singularity when implementing GraphSLAM?

Please don't suggest me pinv() method it cannot give me actual answer.

I had considered using a pseudo-inverse, but, instead, I want to prevent $\Omega$ from becoming singular so that I can compute the exact inverse.

Below is where $\Omega$ is computed (see line 7), from Table 2. Calculation of and ξ in GraphSLAM:

Table 2. Calculation of  and ξ in GraphSLAM

  • $\begingroup$ It is a 3*3 matrix where diagonal elements are 0.001 and all other elements are zero. $\endgroup$ – Encipher Jul 25 '18 at 17:28
  • $\begingroup$ I retracted my earlier comments. I saw $R_t^{-1}$ and assumed that that was the inverse matrix you were computing. You should update your post to include more details on the $\Omega^{-1}$ computation, because it is not performed in the given pseudo code. $\endgroup$ – koverman47 Jul 25 '18 at 20:20
  • $\begingroup$ I have only this pseudo code. This is the problem of this implementation. So that I am looking for help. $\endgroup$ – Encipher Jul 26 '18 at 6:10
  • $\begingroup$ Is the code here the code that you are using? $\endgroup$ – koverman47 Jul 26 '18 at 14:44
  • 1
    $\begingroup$ If you don't want to use a pseudo-inverse, you can regularize $\Omega$ by adding $\Omega := \Omega + \epsilon I$ for some small $\epsilon > 0$. Also, looking at your first comment, if $\Omega$ is a diagonal with 0.001, then it should be invertible. $\endgroup$ – LanguagesNamedAfterCofee Oct 28 '18 at 6:37

If $\Omega$ is singular, you cannot avoid a matrix singularity. This is like saying you want to solve the system of equations $$x = 1$$ $$x = 7$$

There are many techniques to avoid robotic singularities, but if the math represents a pose whereby a degree of freedom is lost in the mechanism, there is no way to get around a singular (and therefore non-invertible) matrix.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.