lerobot icon indicating copy to clipboard operation
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

Open vmayoral opened this issue 1 year ago • 9 comments

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:

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 xArmWrapper of the UFACTORY Python SDK, usable with other arms from the same vendor
  • extends manipulator.py with 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.

vmayoral avatar Oct 28 '24 12:10 vmayoral

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 :)

Cadene avatar Oct 31 '24 15:10 Cadene

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 avatar Nov 04 '24 04:11 vmayoral

@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 avatar Nov 04 '24 16:11 Cadene

@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.

vmayoral avatar Nov 17 '24 15:11 vmayoral

Ping @Cadene and team. Let me know if you folks require anything else.

vmayoral avatar Nov 19 '24 09:11 vmayoral

Friendly ping @Cadene. Let me know if you're missing anything.

vmayoral avatar Nov 25 '24 09:11 vmayoral

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?

srisaripalli avatar Mar 28 '25 16:03 srisaripalli

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.

vmayoral avatar Mar 28 '25 20:03 vmayoral

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.

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)

srisaripalli avatar Mar 28 '25 21:03 srisaripalli

I think this would be a great opportunity to test this new feature: https://github.com/huggingface/lerobot/pull/2123

imstevenpmwork avatar Oct 06 '25 17:10 imstevenpmwork