Software > Software

Near-singular inertia matrix

**rabben47**:

The usual equation for an n-link manipulator is D(q)q_dotdot + C(q,q_dot)q_dot + G(q) = u. Including the motor model, the equation becomes M(q)q_dotdot + C(q,q_dot)q_dot + G(q) = tau, where M denotes the inertia matrix; C represents the coriolis and centripetal effects and G is the gravity loading.

In general the M-matrix is positive definite => always non-singular. However, for the system that I am working on atm, a triple inverted pendulum system, the inertia matrix becomes near singular with the determinant det(M) < 0.000014. This leads to huge problems with simulation in matlab (getting inf/nan-values for states) and also problems for the control-algorithm which uses the inverse inv(M) in its calculations.

Has anyone encountered this before, and if so how did you solve it?

Some has suggested a quaternion representation of the rotations/translations (based on unit dual quaternions), but I don't want to do a lot of work deriving the model based on quaternions only to still have a near singular M-matrix.

I will transfer all my karma to anyone that can help.

**jwatte**:

If by "inertia matrix" you mean "inertia tensor" then a near-singular inertia tensor means your system has close to zero inertia along some axis -- it's devolving to a 2D, flat, system.

This should tell you something about the system you are trying to model. Either your math is wrong, or your system of linkages is such that it purposefully emulates such as system (don't know offhand how that'd come about, but I imagine it's possible.)

Can you instead solve multiple, non-singular, systems, or would that not help in your situation?

**rabben47**:

Thanks for your answer.

--- Quote ---If by "inertia matrix" you mean "inertia tensor"

--- End quote ---

yes.

--- Quote ---Either your math is wrong, or your system of linkages is such that it purposefully emulates such as system

--- End quote ---

It is very possible that my math is wrong since the equations of motion are quite complex, involving about 50 trigonometric terms.

The attached picture illustrates the system I'm modelling: A rotational triple inverted pendulum system. To clarify even further: it consists of one horizontal rod that can rotate about one axis which is normal to the ground, one pendulum on one of the rod's ends which can rotate about one axis parallel to the horizontal rod and a double-pendulum on the other side: each pendulum is allowed to rotate about one axis, thus the pendulums and the rod has one degree of freedom each.

--- Quote --- it's devolving to a 2D, flat, system.

--- End quote ---

Could this be the case for my system?

**jwatte**:

--- Quote ---the equations of motion are quite complex, involving about 50 trigonometric terms.

--- End quote ---

Then you're doing it wrong! If you're dealing with a 3D system, and have 3D inputs and outputs, then the only thing you should worry about is matrix and vector math. The only reason to use trig is to create initial rotation matrices/bases. That, in turn, should be easily testable as a separate function (which already exists in most 3D math libraries) and shouldn't need to be written out explicitly.

**rabben47**:

The initial model was derived by hand through the euler-lagrange equation. I will do it once more, but use matlab instead. Thanks for your input.

Navigation

[0] Message Index

[#] Next page

Go to full version