Pepijn
462a8aea90
feat(robots): natively integrate Seeed Studio reBot B601-DM arm
...
Add first-class LeRobot support for the Seeed Studio reBot arm, replacing
the out-of-tree `lerobot-robot-seeed-b601` / `lerobot-teleoperator-rebot-arm-102`
plugin packages.
New devices:
- robot `rebot_b601_follower` — single-arm B601-DM follower (6-DOF + gripper,
Damiao CAN motors via `motorbridge`)
- robot `bi_rebot_b601_follower` — bimanual follower composing two single arms
- teleoperator `rebot_102_leader` — single-arm StarArm102 / reBot Arm 102 leader
(FashionStar UART servos via `motorbridge-smart-servo`)
- teleoperator `bi_rebot_102_leader` — bimanual leader composing two single arms
The bimanual variants reuse the single-arm classes and namespace each arm's
observation/action keys with `left_` / `right_` prefixes, so a bimanual
StarArm102 leader can teleoperate a bimanual reBot B601 follower.
Optional SDK imports are guarded; a `rebot` extra installs `motorbridge` and
`motorbridge-smart-servo`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-18 11:33:46 +02:00
Steven Palma
9021d2d240
refactor(imports): enforce guard pattern ( #3382 )
...
* refactor(imports): enforce guard pattern
* fix(tests): skip reachy2 if not installed
* Address review feedback
2026-04-14 22:54:05 +02:00
Martino Russi
4f2ef024d8
feat(robots): Unitree G1 WBC implementation ( #2876 )
...
* move locomotion from examples to robot, move controller to teleoperator class
* modify teleoperate to send back actions to robot
* whole body controller
* add holosoma to locomotros
* various updates
* update joint zeroing etc
* ensure safefail with locomotion
* add unitree locomotion
* launch camera from g1 server
* publish at varying framerates
* fix async read in camera
* attempting to fix camera lag
* test camera speedup
* training
* inference works
* remove logging from pi0
* remove logging
* push local changes
* testing
* final changes
* revert control_utils
* revert utils
* revert
* revert g1
* revert again:
* revert utils
* push recents
* remove examples
* remove junk
* remove mjlog
* revergt edit_dataset
* Update lerobot_edit_dataset.py
Signed-off-by: Martino Russi <77496684+nepyope@users.noreply.github.com >
* undo teleop changes
* revert logging
* remove loggings
* remove loogs
* revert dataset tools
* Update dataset_tools.py
Signed-off-by: Martino Russi <77496684+nepyope@users.noreply.github.com >
* move gravity to utils
* revert changes
* remove matplotlib viewer (rerun works fine)
* factory revert
* send policy action directly
* recent changes
* implement flexible action space
* send empty command if arms are missing
* rename locomotion to controller
* add init
* implement feedback
* add feedback for teleoperator
* fix ruff
* fix ruff
* use read_latest
* fix zmq camera
* revert exo_serial
* simplify PR
* revert exo_changes
* revert camera_zmq
* Update camera_zmq.py
Signed-off-by: Martino Russi <77496684+nepyope@users.noreply.github.com >
* remove frame duplication from zmq server
* revert channerfactoryinitialize
* keep channelfactoryinitialize
* remove zeroing out logic
* fix typo
* refactor teleop class
* simplify teleop further
* import armindex at the top
* fix visualizer again
* revert ik helper
* push stuff
* simplify image_server
* update image_server
* asd
* add threading logic
* simplify ik helper stuff
* simplify holosoma
* fix names
* fix docs
* revert leg override
* clean connect
* fix controller
* fix ruff
* clean teleoperator
* set_from_wireless
* avoid double initializations
* refactor robot class
* fix pre-commit
* update docs
* update docs format
* add teleop instructions
* unitree_g1 specific exception in record/teleoperate
* add thumbnail to docs
* add thumbnail to doc
* refactor(unitree): multiple improvements (#3103 )
* refactor(unitree): multiple improvements
* test(unitree): added tests + improved installation instructions
* refactor(robots): minor changes unitree robot kinematic
* chore(robots): rename g1 kinematics file
---------
Signed-off-by: Martino Russi <77496684+nepyope@users.noreply.github.com >
Signed-off-by: Steven Palma <imstevenpmwork@ieee.org >
Co-authored-by: Steven Palma <imstevenpmwork@ieee.org >
Co-authored-by: Steven Palma <steven.palma@huggingface.co >
2026-03-08 11:33:24 +01:00
Steven Palma
bbcf66bd82
chore: enable simplify in ruff lint ( #2085 )
2025-09-29 15:06:56 +02:00
Gaëlle Lannuzel
6a3d57031a
2 add reachy 2 to updated lerobot ( #1767 )
...
* Start adding Reachy 2 (no camera)
* Fix joint shape
* Remove print
* Modify observation_features
* Fix observation state
* Try adding a fake Reachy teleoperator
* Saving test scripts
* Add reachy2camera to cameras
* Add teleop_left camera to observation
* Create test_reachy2_camera.py
* Update utils.py
* Add all rgb cameras
* Future depth work
* Try adding mobile_base velocity
* Update tests
* Update data_acquisition_server.py
* Update with use_external_commands
* Replay
* Usable with or without mobile base
* No need for new isntance
* Use same ip for cameras
* Remove useless imports
* Add resume
* Divide joints in multiple dicts
* Divide joinits into several dicts in teleoperator
* Fix forgotten method call
* Create test_robot_client.py
* Open gripper on start
* Add arguments for cameras
* Modify get_frame() requested size
* Call generate_joints_dict on _init_
* black + isort
* Add reachy2 in imports
* Add reachy2 dependencies
* Add documentation
* Update reachy2.mdx
* Update reachy2.mdx
* Clean files and add types
* Fix type in send_action
* Remove print
* Delete test files
* Clean code
* Update cameras
* Disconnect from camera
* Run pre-commit hooks
* Update pyproject.toml
* Create test_reachy2.py
* Fix generate_joints
* Update test_reachy2.py
* Update send_action test
* Update reachy2_cameras depth + CameraManager
* Update reachy2_camera tests
* Remove useless import and args
* Rename reachy2_teleoperator
* Create test_reachy2_teleoperator.py
* Fix remainging fake_teleoperator
* Remove useless elements
* Mock cameras in test_reachy2
* Delete commented lines
* Add use_present_position to teleoperator
* Add cameras tests
* Add check no part + test
* Use disable_torque_on_disconnect
* Use odometry for vel with present_position
* Update documentation
* Fix vel value type
* Use ensure_safe_goal_position
* Import joints dict from classes
* Update reachy2.mdx
* Update reachy2.mdx
* Update minimal version
* Update minimal version
* fix(tests) fixes for reachy2 tests; removing reachy2 references from the script
* Add reachy2_sdk fake as plugins
---------
Co-authored-by: Michel Aractingi <michel.aractingi@huggingface.co >
2025-09-05 11:03:14 +02:00