Repository navigation
fix(models): separate gripper from arm and fix in-limit qr/qz for Interbotix URDF models (#729) - #818
Conversation
…erbotix URDF models Fixes petercorke#729 - Pass gripper_link_name='/ee_arm_link' to URDFRobot for all 9 Interbotix models (px100, px150, rx150, rx200, wx200, wx250, vx300, vx300s, wx250s) - Sets arm degrees of freedom correctly (4 for px100, 5 for 5-axis models, 6 for 6-axis models) - Attaches fingers and prop joints cleanly as Gripper, avoiding multi-link ambiguous ee_links - Sets gripper tool transform to the physical tool center point (/ee_gripper_link) - Replaces copied Panda joint configurations with valid in-limit ready (qr) and zero (qz) configurations - Expands test_models.py to verify arm degrees of freedom, single end-effector link, gripper attachment, and joint limit compliance
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 0 |
| Duplication | 14 |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
|
Thanks for extending #729 across the full Interbotix family! I checked the bundled Xacro definitions and noticed two small TCP offset discrepancies:
Although the difference is only 5 µm, the default TCP should match the URDF exactly. I'd also suggest adding a regression test for each model: nt.assert_allclose( My earlier focused WX200 PR #739 already includes this FK consistency test and the exact offset. You're welcome to incorporate the test with attribution. I'm happy to collaborate on consolidating the overlapping WX200 changes into one consistent implementation. |
|
Thank you for extending this across the Interbotix family. The tool-offset points in the review above are good ones. I'm pausing changes that touch grippers while we decide how they should be modeled, see #884, so I won't merge this now. I'll leave it open and come back to it afterwards. |
Summary of Changes
This PR addresses all items in #729 across the entire Interbotix robot family (
px100,px150,rx150,rx200,wx200,wx250,vx300,vx300s,wx250s).(Note: #739 addressed
wx200individually; this PR provides the complete, uniform resolution across all 9 Interbotix models under #729 with unified test coverage).Key Modifications
Gripper Sub-Assembly Partitioning:
gripper_link_name="/ee_arm_link"inURDFRobot.__init__across all 9 models.Grippersub-assembly rather than arm joints.ncorrectly:px100:px150,rx150,rx200,wx200,wx250,vx300:vx300s,wx250s:ee_linksdown to a single mounting link['/gripper_link'].Gripper Tool Center Point Transform:
self.grippers[0].toolto the physical tool center point (/ee_gripper_link):SE3(0.05057, 0, 0)forpx100,px150,rx150,rx200,wx200,wx250,wx250s.SE3(0.06437, 0, 0)forvx300,vx300s.In-Limit Ready (
qr) and Zero (qz) Configurations:qr = np.array([0, -0.3, 0.8, -0.5]),qz = np.zeros(4)qr = np.array([0, -0.3, 0.8, -0.5, 0]),qz = np.zeros(5)qr = np.array([0, -0.3, 0.8, 0, -0.5, 0]),qz = np.zeros(6)Unit Tests:
tests/test_models.pyfor all 9 Interbotix models, validating:n(4, 5, or 6)./gripper_link).qrandqzconfigurations are 100% within joint limits (qlim).Verification
Ran unit tests with pytest:
Result: 31 passed in 3.02s.
Ran full test suite:
Result: 765 passed, 82 skipped, 0 failures.
Checklist
pytest