Skip to content

UR10 Inertia Matrix Calculation Issue: Last Row Always Zero #490

Open
@dazhongtu

Description

@dazhongtu

Hello, the Python Robotics Toolbox has been incredibly helpful and is one of the most user-friendly libraries I’ve encountered. However, while simulating the UR10 robot, I noticed an issue with the ur10.inertia(q) function. ​Regardless of the input joint angles q, the last row of the inertia matrix is always zero, resulting in a singular (non-invertible) matrix.

Steps to Reproduce:

`import numpy as np
from roboticstoolbox import models

robot = models.DH.UR10()
print(robot.inertia(robot.qz))`

Output attached below

[[ 1.11024103e+01 5.54268189e-02 5.54268189e-02 5.54268189e-02 -1.21107730e-02 0.00000000e+00] [ 5.54268189e-02 1.06425026e+01 4.32753994e+00 2.91654488e-02 -6.70885910e-03 0.00000000e+00] [ 5.54268189e-02 4.32753994e+00 1.93032952e+00 2.91654488e-02 -6.70885910e-03 0.00000000e+00] [ 5.54268189e-02 2.91654488e-02 2.91654488e-02 2.91654488e-02 -6.70885910e-03 0.00000000e+00] [-1.21107730e-02 -6.70885910e-03 -6.70885910e-03 -6.70885910e-03 2.24759060e-03 0.00000000e+00] [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]]

Even with non-zero joint angles:
print(robot.inertia([0.1, 0.2, 0.3, 0.4, 0.5, 0.6]))

outputs

[[ 9.38114647e+00 5.22236675e-01 2.99317646e-01 3.83881804e-02 -3.60450616e-02 0.00000000e+00] [ 5.22236675e-01 1.01214122e+01 4.01657180e+00 -1.24053598e-01 2.66954058e-02 0.00000000e+00] [ 2.99317646e-01 4.01657180e+00 1.82948361e+00 -2.09992031e-02 5.87920184e-03 0.00000000e+00] [ 3.83881804e-02 -1.24053598e-01 -2.09992031e-02 2.96820550e-02 -5.88757776e-03 0.00000000e+00] [-3.60450616e-02 2.66954058e-02 5.87920184e-03 -5.88757776e-03 2.24759060e-03 0.00000000e+00] [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00]]

Issue:
The last row of the inertia matrix is entirely zero, making it singular. As far as I understand, the inertia matrix M(q) should always be ​symmetric and positive definite (thus invertible). This behavior seems contradictory.

Questions:

Is this a bug in the UR10 model implementation, or am I misunderstanding something?
Could there be missing inertial parameters for the last joint/link in the UR10 definition?
Note:
I’m a beginner in robotics, so apologies if this is a misunderstanding on my part. Any clarification would be greatly appreciated!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions