basic implementation of uFactory xArm#965
Open
Robert-Keyser-Calico wants to merge 4 commits intoPyLabRobot:mainfrom
Open
basic implementation of uFactory xArm#965Robert-Keyser-Calico wants to merge 4 commits intoPyLabRobot:mainfrom
Robert-Keyser-Calico wants to merge 4 commits intoPyLabRobot:mainfrom
Conversation
Introduces a parallel arm hierarchy for 6-axis articulated robots alongside the existing SCARA classes. Includes SixAxisBackend abstract base, SixAxisArm frontend, XArm6Backend wrapping the xArm Python SDK, vertical and horizontal access pattern sequences, freedrive mode, error recovery, and an interactive pick-and-place walkthrough script with JSON position persistence. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add speed, mvacc, joint_speed, joint_mvacc properties to XArm6Backend - Change gripper interface to use target position parameter instead of binary open/close, using set_gripper_position from the SDK - Add gripper_open_pos and gripper_close_pos constructor params for pick/place sequence defaults - Enable gripper during setup (set_gripper_mode, set_gripper_enable) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove unused `patch` import in xarm6_backend_tests.py - Sort imports alphabetically (HorizontalAccess before VerticalAccess) - Type `_arm` as `Any` to fix mypy attr-defined errors (xarm SDK has no stubs) - Add type: ignore comments for untyped xarm import and test mocking - Apply ruff formatting to all 6 files Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Use import-not-found instead of import-untyped for xarm SDK ignore - Add from __future__ import annotations to example_pick_place.py for X | Y union syntax compatibility Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new abstraction for 6-axis robotic arms to the codebase, including a generic frontend and backend interface, as well as an initial implementation for the xArm 6 robot. It also provides comprehensive tests and an interactive example script for pick-and-place operations. These changes pave the way for supporting advanced robotic arms and make it easier to integrate different 6-axis robots in the future.
6-Axis Arm Abstraction and Implementation
SixAxisArmfrontend class insix_axis.pythat defines high-level operations (movement, gripper control, pick/place, freedrive mode) for 6-axis robots, delegating to a backend.SixAxisBackendinterface insix_axis_backend.pyspecifying all required backend methods for 6-axis robot support.__init__.py) for easy import. [1] [2]xArm 6-Specific Additions
XArm6Axis) and backend scaffolding for the xArm 6 robot, preparing for hardware-specific implementations. [1] [2]example_pick_place.py) that guides users through teaching positions, saving/loading them, and running a pick-and-place cycle with vertical access.taught_positions.jsonfile as an example of saved positions for the xArm 6.Testing
six_axis_tests.py) that mocks the backend and validates all major frontend behaviors, including freedrive mode handling and command delegation.