lerobot
lerobot copied to clipboard
Add UFACTORY 850 as one of the robots supported, introduce various HRI utilities for teleop and next episode hinting while reseting
This PR comes as a result of the Oct 2024 Hackathon wherein I participated remotely. Results were successful within the weekend of hacking, so I thought I'd give back and contribute. Results first:
- Setup with basic HRI for teleop
lerobotteleop operational in UFACTORY 850- Moving jellyfish grasped,
top - Moving jellyfish grasped,
wrist
| resulting dataset | resulting policy |
|---|---|
| https://huggingface.co/datasets/vmayoral/u850_test | https://huggingface.co/vmayoral/act_u850_test |
The contributions of this PR are summarized below:
- Add UFACTORY 850 as one of the supported robots, validing principles and introducing support for a commercial-grade lowcost cobot solution
- Enabled teleop while reseting episode
- Various minor updates for usability including next episode dislosure while reseting
- Ensures datatypes are consistent across realsense camera instantiations
- Proposes a generic
xArmWrapperof the UFACTORY Python SDK, usable with other arms from the same vendor - extends
manipulator.pywith minimal changes (attempted respecting the already existing structure) to support the new arm tested - Configs and related minor changes
Some notes and considerations:
- Current teleop mechanism in UFACTORY is jerky when compared to simpler implementations. There's plenty of margin for improvement here. Let me know if this of interest and I may find some room for contributing here as well.
Wow really cool! We are in the middle of a refactor. We will come back to this PR soon. In the meantime, I am curious if other people working on UFACTORY 850 are able to use this arm with LeRobot :)
Let me know @Cadene if you'd like other flavours of xArm robots tested. I'm rather certain it will, as the UFACTORY API is rather well structured and known reproducible. I've got an xArm Lite 6 also lying around, happy to test it if that gets this PR moving forward.
@vmayoral Sounds good ;) Any chance you could run pre-commit run --all-files?
See: https://github.com/huggingface/lerobot/blob/main/CONTRIBUTING.md#submitting-a-pull-request-pr
Thanks 🙏
@vmayoral Sounds good ;) Any chance you could run
pre-commit run --all-files? See: https://github.com/huggingface/lerobot/blob/main/CONTRIBUTING.md#submitting-a-pull-request-pr Thanks 🙏
@Cadene all ready concerning these requests. Should be good to go as of right now. Just rebased on top of main.
Ping @Cadene and team. Let me know if you folks require anything else.
Friendly ping @Cadene. Let me know if you're missing anything.
Some notes and considerations:
* Current teleop mechanism in UFACTORY is jerky when compared to simpler implementations. There's plenty of margin for improvement here. Let me know if this of interest and I may find some room for contributing here as well.
@vmayoral Thank you for this! We got the entire thing working on two xARM 850's. As you mentioned the teleop is quite jerky via control_robot.py or the 1_teleop_lerobot. Any idea(s) on where we should look to fix this?
A few:
- implement a filter, that did it mostly for me
- don’t use default configs of the robot, instead leverage restricted degrees/s configs
- ensure proper setup conditions
curious about your use case. Feel free to reach out and if you can elaborate more on your use, happy to find some time and help.
A few:
* implement a filter, that did it mostly for me * don’t use default configs of the robot, instead leverage restricted degrees/s configs * ensure proper setup conditionscurious about your use case. Feel free to reach out and if you can elaborate more on your use, happy to find some time and help.
Currently just trying to figure out if we can use an xARM 850 in an imitation learning framework (btw cool office:-)). If we get it working, we want to use both xARM's to move things around in a home like environment (dual arm config). Commenting out the max_relative_target seems to make the teleop OK but then replay still has issues.... Short video of replaying an episode here (https://youtube.com/shorts/Fzs2_MnPVe0)
I think this would be a great opportunity to test this new feature: https://github.com/huggingface/lerobot/pull/2123