This repository provides a LeRobot teleoperator integration for the reBot Arm 102 leader arm, intended to be paired with the Seeed reBot B601 follower arm.
The implementation is intentionally opinionated:
- joint names are aligned to reBot B601
- joint directions are configured in code
- joint limits are taken directly from config
- each startup calibration sets the current servo origin to zero
- Leader: reBot Arm 102
- Follower: Seeed reBot B601
- Communication: UART for reBot Arm 102, CAN or Damiao serial bridge for B601
Install LeRobot first, then install this package in editable mode:
cd lerobot-teleoperator-rebot-arm-102
pip install -e .This package registers one teleoperator type:
rebot_arm_102_leader
shoulder_pan-> servo ID0shoulder_lift-> servo ID1elbow_flex-> servo ID2wrist_flex-> servo ID3wrist_yaw-> servo ID4wrist_roll-> servo ID5gripper-> servo ID6
Joint directions and joint limits are defined in lerobot_teleoperator_rebot_arm_102/config_rebot_arm_102_leader.py.
Standard teleoperation:
lerobot-teleoperate \
--teleop.type=rebot_arm_102_leader \
--teleop.id=rebot_arm_102_leader \
--teleop.port=/dev/ttyUSB0 \
--robot.type=seeed_b601_dm_follower \
--robot.id=follower1 \
--robot.port=/dev/ttyACM4 \
--robot.can_adapter=damiaoPurpose:
- read raw reBot Arm 102 servo angles directly from the Fashion Star SDK
- verify servo ID to joint mapping
- check whether a given joint is actually changing at the hardware level
Usage:
cd lerobot-teleoperator-rebot-arm-102
python examples/read_raw_angles.py --port /dev/ttyUSB0What to look for:
- move only one joint at a time
- confirm the expected joint column changes
- if raw values change but teleop behavior is wrong, the problem is usually direction or range config, not the SDK readout
Purpose:
- read reBot Arm 102 leader output and B601 follower observation side by side
- compare
leader,follower, anddeltaper joint - debug direction mismatches safely without sending follower commands
Prerequisite:
- need a reBot B601 arm setup
- install the python integration for reBot B601, https://github.com/Seeed-Projects/lerobot-robot-seeed-b601
Behavior:
- after connecting the B601 follower, it disables torque so the arm can be moved by hand
- it does not send action commands to the follower
Usage with a Damiao follower on can0:
cd lerobot-teleoperator-rebot-arm-102
python examples/read_leader_follower_compare.py --leader-port /dev/ttyUSB0 --follower-port can0 --follower-type dmUsage with a Damiao follower through a Damiao serial bridge:
cd lerobot-teleoperator-rebot-arm-102
python examples/read_leader_follower_compare.py --leader-port /dev/ttyUSB0 --follower-port /dev/ttyACM0 --follower-type dm --follower-can-adapter damiaoWhat to look for:
- move one joint on the leader
- move the same joint by hand on the follower if needed
- compare whether
leaderandfollowerchange in the same sign direction - if one side increases while the other decreases, flip that joint in
joint_directions
- Under the current implementation, startup calibration resets each reBot Arm 102 servo origin to the current pose.
joint_rangesare taken from config, not from calibration data.- If a joint appears stuck near one limit, check
joint_rangesfirst.