-
Notifications
You must be signed in to change notification settings - Fork 122
PreciseFlex Arm Driver #619
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PreciseFlex Arm Driver #619
Conversation
49a6770 to
159fd78
Compare
bffeb24 to
a1d61b7
Compare
… the Backend abstractmethods
…unndant method, chenge default ip address, change test_get_base assertion to tuple, add sleep to test_set_power
…lidation - Updated get_signal to correctly parse response and return signal value. - Modified get_location_z_clearance to return z_world as a boolean. - Enhanced set_location_z_clearance to convert z_world to an integer for command. - Improved get_location_config and set_location_config to handle bit mask configurations with validation checks.
…refactor speed handling and location management
…onfiguration tests
|
when gripping a plate using the reason is probably that it tries to close too far, as the gripper closes all the way when I run it without a plate. strangely, two questions:
|
|
re my second question: I get the following error when attempting any command after the crash: when I attach, I get this: I have to power cycle by physically powering off and on the robot. |
turns out, it pulls information not from the |
|
I havent run into this error with the pick plate before. But it maybe that the speed in your profile is too fast. So that may need to be lowered in the speed profile because some joints may not be able to keep up. The other part is I add in a setting to keep the wrist between +/- 180° to prevent some wild spinning of the wrist. It's a bitwise setting called GPL_Single flag (0x1000) in commit a332ab5 I think this including this would be useful because the wrist can get a little wild sometimes... but it may be the cause of this problem. I'd check the profile setting first though. I think the pick always just runs on profile 1. |
|
I think the reason is our end effector has prongs, which makes the default width different than yours. It is my first time using |
|
If setup(), which has the hp 1 and attach 1 isn't working, it may have gotten hung up with the GPL code running on the system. Go to the web application, I think its 192.168.0.1. Then select admin button and then click the top option in the side panel... I think it maybe be pendant or operator or similar. And in there I think you need to stop the GPL program that's loaded then need to load it again. I think there's a stop button and then you need to load it again. (You can also do this from Brooks' GDS app, if you have that) I dont have my laptop or the bot right now... so this is from memory. And a bad memory too. |
c1cc8af to
e6c6593
Compare
|
we are mostly ready I think! I just wrote a small tutorial showing how to do the basic things one thing still to discuss:
I will do the resource modeling (ie picking up resources instead of "pick up from coordinate") in a future PR. |
|
The only reason I can think of for keeping those functions is to have all endpoints of the TCS API exposed in python in case there is a difference and a user is specifically looking for one of them. But I think its probably just better to remove them in favor of a non-ambiguous API. Brooks' TCS GPL code is open source if a user wants to explore things more. There's a few things not exposed through the TCS interface. An example is the Kinematic Solve function for cartesian <-> joint conversions. It exists on the robot, but isn't exposed through the TCS program that ships with the robot. This is where Brooks' has a lot of their software - Guidance Development Studio (GDS), TCP Command Server (TCS), etc: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds a comprehensive driver implementation for the PreciseFlex robotic arm (PF400 and PF3400 models). The implementation follows a backend/frontend architecture pattern with extensive test coverage for the backend logic.
Key changes:
- Introduces
SCARABackendbase class andExperimentalSCARAfrontend for robotic arm control - Implements
PreciseFlexBackendwith full TCP/IP socket communication to Brooks TCS controller - Adds support for Cartesian and joint-space movement, gripper control, and pick/place operations
Reviewed changes
Copilot reviewed 20 out of 21 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
pylabrobot/arms/backend.py |
Defines SCARABackend abstract base class and access pattern classes (VerticalAccess, HorizontalAccess) |
pylabrobot/arms/scara.py |
Frontend ExperimentalSCARA class that wraps backend methods |
pylabrobot/arms/precise_flex/precise_flex_backend.py |
Main backend implementation with 2400+ lines of TCS command wrappers |
pylabrobot/arms/precise_flex/coords.py |
PreciseFlex-specific Cartesian coordinates with elbow orientation |
pylabrobot/arms/precise_flex/joints.py |
Joint coordinate dataclass for 6-axis robot |
pylabrobot/arms/precise_flex/pf_400.py |
Specific backend for PF400 model |
pylabrobot/arms/precise_flex/pf_3400.py |
Specific backend for PF3400 model |
pylabrobot/arms/scara_tests.py |
Unit tests for SCARA frontend |
pylabrobot/arms/precise_flex/precise_flex_backend_tests.py |
Comprehensive unit tests (1551 lines) for backend |
pylabrobot/resources/rotation.py |
Adds roll, pitch, yaw properties for clearer rotation access |
pylabrobot/io/socket.py |
Changes logging from .hex() to raw bytes for better readability |
pytest.ini |
Adds hardware test marker to skip hardware-dependent tests by default |
docs/user_guide/01_material-handling/arms/c_scara/precise-flex-pf400/hello-world.ipynb |
Jupyter notebook tutorial for PreciseFlex usage |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
docs/user_guide/01_material-handling/arms/c_scara/precise-flex-pf400/hello-world.ipynb
Outdated
Show resolved
Hide resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…-pf400/hello-world.ipynb Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
thank you so much for this massive effort! |
Untested Driver
This adds:
Docs haven't been updated yet.
There's a warning included in the PreciseFlexBackend docstring that it's untested.