petercorke / petercorke/robotics-toolbox-python
DH model inertia data incomplete: UR5 (missing entirely), UR10 (last-link Ixx=0)
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 3.5k
- Forks
- 624
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 53
Description
Background
Two reports (#387, #490) describe singular/near-singular inertia matrices for RTB's bundled DH models of Universal Robots arms. Verified 2026-08-25: neither is an RNE algorithm bug -- both are data-completeness gaps in the bundled model files themselves.
UR5 (#387)
src/roboticstoolbox/models/DH/UR5.py has no inertia data at all -- the source has a literal comment: # mass data, no inertia available. Every link's inertia tensor defaults to zero, so UR5.inertia(q) is trivially, exactly singular (det() == 0) for any q. Not fixable without sourcing real inertia parameters for the UR5 from somewhere (Universal Robots' published parameter sheet, as already used for UR10 -- see below).
UR10 (#490)
src/roboticstoolbox/models/DH/UR10.py has real inertia data (cited: UR's own parameters reference), but the manufacturer's own published data has Ixx=0 for the last link:
np.array([[0, 0, 0], [0, 0.0004, 0], [0, 0, 0.0003]]), # link 6
This makes the resulting inertia matrix near-singular (det ~ 2e-6), though not exactly singular the way #490 originally reported it (the reporter saw an exactly-zero last row on an older version; current code produces small but nonzero values). Whether this is fixable depends on whether a better UR10 parameter source exists that fills this in, or whether it's genuinely negligible/omitted in the manufacturer's own reference.
Next steps
- UR5: source real inertia parameters (community contribution welcome) or clearly document the model as kinematics-only.
- UR10: worth a doc note in the class docstring that the last-link inertia is near-zero per the manufacturer's own reference, so users doing dynamics work know to expect a near-singular matrix, or supply a small regularization term if needed for control work.
Originally reported: #387, #490.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with src/roboticstoolbox/models/DH/UR5.py and src/roboticstoolbox/models/DH/UR10.py, then inspect how inertia(q) consumes each link's inertia data. For UR5, done means adding verified inertia parameters or documenting it as kinematics-only; for UR10, determine whether a better source fills Ixx or add the proposed class-docstring warning about near-singular dynamics.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- numpy, python
- Domain
- robotics
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100