Skip to content

fix(deps): pin robot_descriptions<3.0, UR5 broke on the unpinned major bump#554

Merged
petercorke merged 2 commits into
mainfrom
fix/ur5
Jul 20, 2026
Merged

fix(deps): pin robot_descriptions<3.0, UR5 broke on the unpinned major bump#554
petercorke merged 2 commits into
mainfrom
fix/ur5

Conversation

@petercorke

Copy link
Copy Markdown
Owner

Summary

  • robot_descriptions 3.0.0 (uploaded 2026-07-11) resolves "ur5" to a different upstream repo (Universal_Robots_ROS2_Description) with a different link count/ordering than 2.0.0.
  • UR5.__init__'s gripper_link_index=7 is a raw positional index into the parsed link list, calibrated against the old vendored/local URDF from before this model switched to live robot_descriptions resolution. Under 3.0.0's structure it lands on wrist_2_link (a real arm joint) instead of the intended tool-attachment link, silently dropping 2 of 6 joints from self.n and breaking addconfiguration_attr's vector-length check.
  • pyproject.toml had no upper bound on robot_descriptions, so this would break on any fresh install regardless of branch/commit. Pinned >=2.0,<3.0, matching the existing floor+ceiling pattern already used for rtb-data.
  • Not a full fix: recorded a tech-debt entry — compared the raw link lists between both robot_descriptions versions and confirmed all 6 real arm joint names/isjoint status match exactly across both, and a shared "tool0" link exists in both (just at a different index), so a name/structure-based gripper-link lookup would survive this exact upstream change, unlike the hardcoded index.

Test plan

  • Reproduced the CI failure locally by installing robot_descriptions==3.0.0 directly.
  • Confirmed it resolves with the <3.0 pin (test_UR5, test_all_models_construct, test_IK_GN3 all pass).
  • Full suite green (620 passed, 72 skipped).

…r bump

robot_descriptions 3.0.0 (uploaded 2026-07-11) resolves "ur5" to a
different upstream repo (Universal_Robots_ROS2_Description) with a
different link count/ordering than 2.0.0. UR5.__init__'s
gripper_link_index=7 is a raw positional index into the parsed link
list - calibrated against the old vendored/local URDF from before this
model switched to live robot_descriptions resolution - so it now lands
on wrist_2_link (a real arm joint) instead of the intended tool
attachment link, silently dropping 2 of 6 joints from self.n and
breaking addconfiguration_attr's vector-length check.

pyproject.toml never had an upper bound on robot_descriptions, so every
fresh install picks up whatever's latest on PyPI at install time -
this was going to break CI (and any user's fresh install) regardless of
what branch or commit was checked out. Pinned >=2.0,<3.0, same
floor+ceiling pattern already used for rtb-data.

Not a full fix: compared the raw link lists between both
robot_descriptions versions and confirmed all 6 real arm joint names/
isjoint status match exactly across both, and a shared "tool0" link
exists in both too (just at a different index) - so a name/structure
-based gripper-link lookup would survive this exact upstream change,
unlike the hardcoded index. Recorded as its own tech-debt entry rather
than bundling a rushed redesign into this pin.

Verified: full suite green (620 passed, 72 skipped) with
robot_descriptions pinned to 2.0.0.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (17c67d2) to head (2e9f2cd).
⚠️ Report is 18 commits behind head on main.

Additional details and impacted files
@@          Coverage Diff           @@
##            main    #554    +/-   ##
======================================
  Coverage   0.00%   0.00%            
======================================
  Files        136     141     +5     
  Lines      13438   13659   +221     
======================================
- Misses     13438   13659   +221     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…ackage

Sphinx's docs-build job never caught this on PR #553 (the ET/ETS package
split) because it's gated behind tests passing, and tests were failing
there for the unrelated UR5/robot_descriptions reason - so docs-build
never actually ran until this PR fixed that gate. arm_ets.rst and ik.rst
still referenced the pre-split roboticstoolbox.robot.ETS.ETS(2) module
path; ETS now lives at roboticstoolbox.ets.ETS.ETS and ETS2 at
roboticstoolbox.ets.ETS2.ETS2 (separate files). Left autosummary to
regenerate docs/source/IK/stubs/ (gitignored) against the corrected path.

Verified: sphinx-build succeeds locally (previously a hard failure,
ImportExceptionGroup: could not import roboticstoolbox.robot.ETS.ETS);
remaining 4 warnings (KinematicCache, SensorBase, a guarded matplotlib
Color import) are unrelated and pre-existing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@petercorke
petercorke merged commit 48715b3 into main Jul 20, 2026
18 checks passed
@petercorke
petercorke deleted the fix/ur5 branch July 20, 2026 05:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant