Setting the Rotor Inertia

Overview

In a joint driven by a motor with a reduction gear, the inertia of the motor rotor itself acts greatly amplified when seen from the joint side through the reduction gear. Specifically, let Ir be the moment of inertia of the rotor alone and G be the gear ratio. Then the “equivalent rotor inertia” Jeq converted around the joint axis is

Jeq = G × G × Ir

Since this is proportional to the square of the gear ratio, in robots with large gear ratios, it is not uncommon for the equivalent rotor inertia to be as large as or larger than the inertia of the links themselves. Therefore, considering the equivalent rotor inertia is important for simulating dynamic characteristics close to those of real robots.

In Choreonoid body models, this equivalent rotor inertia can be set for each joint. Note that this additional inertia around the joint axis corresponds to what is called “armature” in MuJoCo.

Effects in Simulation

Setting the equivalent rotor inertia increases the apparent inertia around the joint axes in simulation. This mainly provides the following effects.

  • Reproduction of dynamic characteristics close to real robots

Without considering the equivalent rotor inertia, the joints move too lightly compared to the real robot, especially in robots with large gear ratios. By setting the equivalent rotor inertia, the responses of the joints become closer to those of the real robot, and the evaluation of control behaviors with torque control or PD control becomes more accurate.

  • Stabilization of the simulation

The increased inertia around the joint axes suppresses high-frequency joint oscillations caused by control or contacts, which makes the simulation more stable. This effect is also the reason why armature is often used as a stabilization parameter in MuJoCo.

Description in Models

The equivalent rotor inertia is set for each link (joint) in a body-format model file with one of the following methods.

  • Specify the moment of inertia Ir of the rotor alone with the rotor_inertia key and the gear ratio G with the gear_ratio key. The equivalent rotor inertia is set as G × G × Ir.

  • Specify only the rotor_inertia key. In this case, the specified value is used as the equivalent rotor inertia as it is.

  • Directly specify the value of the equivalent rotor inertia with the joint_axis_inertia key.

The following is a description example.

links:
  -
    name: J1
    joint_type: revolute
    ...
    rotor_inertia: 1.0e-6
    gear_ratio: 100.0

For the details of the description in model files, see also Link Node.

Note

The decomposition into the gear ratio and the rotor inertia affects the behavior only in the Bullet simulator, which uses the virtual rotor method described below. In the other simulators, only the value of the equivalent rotor inertia is used, so the behavior is the same with any of the description methods.

Support Status for Each Simulator Item

The handling of the equivalent rotor inertia differs depending on the simulator item. There are roughly two methods:

  • Method using only the equivalent rotor inertia (armature method)

A method that adds the value of the equivalent rotor inertia Jeq to the inertia around the joint axis. The simulator items other than Bullet use this method, and only the value of Jeq is used. Therefore, as long as Jeq is the same, the behavior does not change no matter how it is decomposed into the gear ratio G and the rotor inertia Ir.

Physically, this method corresponds to the limit where the gear ratio goes to infinity while keeping Jeq constant. With an actual finite gear ratio, the angular momentum of the rotor spinning at G times the joint velocity (proportional to Jeq/G) remains, and it interferes with the rotational motion of the body, producing gyroscopic effects and so on; the armature method does not express these effects. The larger the gear ratio is, the smaller these effects become, so this method is a sufficiently good approximation for common robots with large reduction ratios.

  • Method using a virtual rotor

A method that reproduces the equivalent rotor inertia by actually rotating a virtual rigid body corresponding to the rotor at the gear-ratio times the joint velocity. The Bullet simulator uses this method. Since the angular momentum of the rotor with a finite gear ratio and its gyroscopic effects are also reproduced as physics with this method, the behavior can change depending on the value of the gear ratio even with the same Jeq. This is the only method in which the value of the gear ratio actually affects the behavior.

The support status of each simulator item is as follows.

Simulator

Support

Handling

AIST

The equivalent rotor inertia is directly incorporated into the dynamics computation and is rigorously considered as the additional inertia around the joint axes.

PhysX

Set for each joint using the armature functionality of PhysX.

MuJoCo

Set for each joint as the armature parameter of MuJoCo.

Bullet

Reproduces the equivalent rotor inertia by adding virtual geared rotor links that actually rotate at the gear-ratio times the joint velocities (the virtual rotor method). The effects of finite gear ratios are also reproduced, so the gear_ratio values of the model are reflected in the behavior. For models without a gear ratio specification, the value of the “Default rotor gear ratio” property (100 by default) is used. This function can be enabled/disabled with the “Rotor inertia” property (enabled by default). See Bullet Plugin for details.

ODE

Not directly supported. When the “Add joint-axis inertia to link inertia” property of the ODE simulator is enabled, an approximation is applied that adds the equivalent rotor inertia to the inertia tensor of the link as the component around the joint axis (disabled by default; a warning is displayed when such a model is loaded). See ODE Plugin for details.

AGX

Set as the virtual inertia for the joint constraints.

Models with the Rotor Inertia Set

Among the models bundled with Choreonoid, the rotor inertia is set, for example, in the following models.

  • Manipulators

  • PA10 (share/model/PA10/PA10.body)

  • Universal Robots UR3, UR5, and UR10 (share/model/UniversalRobots/UR3.body etc.)

  • JACO2 (share/model/JACO2/JACO2.body)

  • Humanoids

  • HRP4C (share/model/HRP4C/HRP4C.body)

  • RIC30 (share/model/RIC30/RIC30.body)

  • Hands and grippers

  • Robotiq 2F-85 (share/model/Robotiq/2F-85.body)

  • Others

  • Double-arm construction robot DoubleArmV7 (share/model/DoubleArmV7/DoubleArmV7-Upper.body)

  • Pendulum model (share/model/misc/pendulum.body)

The descriptions of these models are also good references for the setting.