# Combining centres of mass and Inertia tensors

I'm trying to build the dynamic model of a 6DOF robot, and the company that has built it, kindly provides a document having the masses, centres of mass, principal axes of inertia and principal moments of inertia taken at the center of mass, taken at the center of mass and aligned with the output coordinate system, and taken at the output coordinate system (I've come to known that this was obtained from a tool in SolidWorks)

The robot has 6 actuators responsible for the motion of each one of the 6 links available. The problem that I have here is the way I should calculate the inertia matrix $M(q)$. Since the matrix has to have a 6x6 dimension, I know that I have to do some kind of "combining" between one link and the correspondent actuator. The problem is that I don't really know how can I find the respective centre of mass between the two "objects" and the respective moment of inertia of the "multiobject". I've seen people saying that it is simply the summation of the respective moments of inertia but they need to be in respect to the same orientation and translation.

Can anyone shed some light into this? Suggestions would be greatly appreciated.

Thanks

• It may help to add some of the equations relevant to the point at which you are stuck. Are you trying to add actuator mass to link mass? Add the actuator rotor dynamics to your dynamics calcs? Get M(q) from the manufacturer provided mass info? It's not clear. – hauptmech May 9 '17 at 22:33
• @hauptmech Yes, basically I want to combine the mass of both the actuator and the link and the respective inertia tensors. The mass I assume I can simply add them together. The inertia tensor I believe it's not that straightforward. – Miguel M. May 10 '17 at 13:07
• If you write the equations for moments of inertia, and talk through what they mean, it should be clear how to combine multiple moment of inertia matrices. If you put all this in an answer to your question it will help others and we will be able to confirm your reasoning. – hauptmech May 10 '17 at 20:56

You are lucky to have the inertial parameters for the robot! This is something that manufacturers very rarely share and it is hard to reverse engineer.

Given that you have these inertial parameters, plus a kinematic model expressed in Denavit-Hartenberg parameters, then a very well known and efficient algorithm called recursive Newton-Euler (RNE) can compute the joint torquse required to achieve a particular acceleration, given joint angles and velocities. Calling this algorithm 6 times (with zero velocity, unit acceleration, and zero gravity) will allow you to build up the joint-space inertia matrix column by column.

In practice the inertia of the motors, amplified by the gear ratio squared, is of a similar order to the link inertias and must be taken into consideration. These terms are added to the diagonal of M.

The RNE algorithm can be found in most robotics textbooks and is implemented in various robotic software packages. Using this algorithm to determine the joint-space inertia matrix is part of "Method 1" described in: Efficient dynamic computer simulation of robotic mechanisms, M. W. Walker and D. E. Orin, ASME Journal of Dynamic Systems, Measurement and Control, vol. 104, no. 3, pp. 205-211, 1982. Other algorithmic approaches exist but given the efficiency and ubiquity of RNE this is a pretty good way to compute M for a 6-axis manipulator.

Both algorithms mentioned are implemented in the Robotics Toolbox for MATLAB. The Toolbox allows you to enter the kinematic and inertial parameters, as well as friction models and motor inertia, to investigate the dynamics of robot manipulator arms.

• Hi, thanks for your suggestions, Professor. – Miguel M. Jan 3 '19 at 18:24
• Hi, thanks for your suggestions, Professor. I actually tried using your Toolbox, but somehow had some difficulties when "inputing" some parameters... I manually calculated with RNE and the Euler-Lagrange method but again for some reason the output was not the same . Well, this was an issue during my master thesis at the time, and I ended up using a similar tool like yours made by a former PhD student of my department :/ – Miguel M. Jan 3 '19 at 18:34
• @MiguelM I'd be happy to chat outside this forum about the "difficulty when inputting some parameters". This is a very commonly used part of the Toolbox. Did you take the issue to tiny.cc/rvcforum or look at the FAQ? – Peter Corke Jan 3 '19 at 23:38
• No, although you're right I could've ask there... Now, I don't really have the robot and the data with me, so I can't really test anything. But thanks anyway! – Miguel M. Jan 6 '19 at 23:29

This site about robotics walks you through how you can define the link inertias in the local frame, then use transformations to come up with $M$. It is pretty straightforward. Just remember to define link parameters locally, then premultipy by the appropriate transformation.

• Thanks for the suggestion. Unfortunately, that wasn't particularly what I was looking for. That example only takes into account the links of the robot. For my problem I really have to calculate with the links + actuators, and that , I assume, requires additional math. Thanks anyways. – Miguel M. May 10 '17 at 14:17
• You're welcome. It's not really different if you consider what defines an individual link's moment of inertia. You can just take each link, including everything that is attached to the link and rotates with it (so you can include all attached "things," such as the next distal actuator), and compute the moment of inertia for that combined set of masses. Then follow the steps to create $M$. Good luck! – SteveO May 10 '17 at 14:23