Back to Lerobot

reBot B601-DM

docs/source/rebot_b601.mdx

0.6.06.5 KB
Original Source

reBot B601-DM

reBot B601-DM is an open-source, low-cost robot arm from Seeed Studio for embodied-AI and imitation learning. It comes as a follower arm (the B601-DM, a 6-DOF arm plus gripper driven by Damiao CAN motors) and a leader arm (the StarArm102 / reBot Arm 102, driven by FashionStar UART smart servos) used to teleoperate it.

This page covers calibration and teleoperation for both single-arm and bimanual (dual-arm) setups.

<div style="display: flex; align-items: center; gap: 10px;"> </div>

Left: the B601-DM follower at its zero position. Right: the reBot Arm 102 leader at its zero position. Images courtesy of Seeed Studio.

Install LeRobot 🤗

Follow our Installation Guide, then install the reBot support:

bash
pip install -e ".[rebot]"

This pulls in motorbridge (CAN motor control for the B601-DM follower) and motorbridge-smart-servo (FashionStar UART servos for the reBot Arm 102 leader).

Registered device types

TypeKind
rebot_b601_followersingle-arm B601-DM follower robot
bi_rebot_b601_followerbimanual (dual-arm) follower robot
rebot_102_leadersingle-arm reBot Arm 102 leader teleoperator
bi_rebot_102_leaderbimanual (dual-arm) leader teleoperator

The bimanual types compose two single-arm instances and namespace each arm's observation/action keys with a left_ / right_ prefix. Per-arm settings are passed through nested left_arm_config.* / right_arm_config.* arguments.

Find the USB ports

For each device, find the USB port associated with its motor bus using:

bash
lerobot-find-port
<Tip warning={true}> On Linux, remove `brltty` (`sudo apt remove brltty`) so it does not hold the leader's USB serial port. You may also need to grant access to the serial devices: `sudo chmod 666 /dev/ttyACM* /dev/ttyUSB*`. </Tip>

Calibration

Neither arm stores a persistent hardware calibration: every time it connects, the motors are re-zeroed against the pose the arm is physically holding. Calibration simply records that zero pose. When prompted, manually move the arm to its zero position (the default sit-down pose shown above, gripper fully closed) and press <kbd>ENTER</kbd>.

Follower (B601-DM)

<hfoptions id="calibrate-follower"> <hfoption id="Single arm">
bash
lerobot-calibrate \
    --robot.type=rebot_b601_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower \
    --robot.can_adapter=damiao
</hfoption> <hfoption id="Dual arm">

Connect the bimanual follower; calibration runs for the left arm, then the right arm.

bash
lerobot-calibrate \
    --robot.type=bi_rebot_b601_follower \
    --robot.id=bi_follower \
    --robot.left_arm_config.port=/dev/ttyACM0 \
    --robot.left_arm_config.can_adapter=damiao \
    --robot.right_arm_config.port=/dev/ttyACM1 \
    --robot.right_arm_config.can_adapter=damiao

Per-arm calibration files are saved with _left / _right suffixes on the id.

</hfoption> </hfoptions>

Leader (reBot Arm 102)

<hfoptions id="calibrate-leader"> <hfoption id="Single arm">
bash
lerobot-calibrate \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.id=leader
</hfoption> <hfoption id="Dual arm">
bash
lerobot-calibrate \
    --teleop.type=bi_rebot_102_leader \
    --teleop.id=bi_leader \
    --teleop.left_arm_config.port=/dev/ttyUSB0 \
    --teleop.right_arm_config.port=/dev/ttyUSB1
</hfoption> </hfoptions>

Teleoperation

Once both arms are calibrated, drive the follower with the leader. The follower talks to its CAN bus through a Damiao serial bridge (can_adapter=damiao, the default) or a SocketCAN adapter (can_adapter=socketcan). See the OpenArm page for more details on the SocketCAN adapter configuration.

<hfoptions id="teleoperate"> <hfoption id="Single arm">
bash
lerobot-teleoperate \
    --robot.type=rebot_b601_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower \
    --robot.can_adapter=damiao \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.id=leader
</hfoption> <hfoption id="Dual arm">

The bimanual leader and follower reuse the single-arm classes; each arm is configured through nested left_arm_config.* / right_arm_config.* arguments, so a bimanual reBot Arm 102 leader drives a bimanual B601-DM follower.

bash
lerobot-teleoperate \
    --robot.type=bi_rebot_b601_follower \
    --robot.id=bi_follower \
    --robot.left_arm_config.port=/dev/ttyACM0 \
    --robot.left_arm_config.can_adapter=damiao \
    --robot.right_arm_config.port=/dev/ttyACM1 \
    --robot.right_arm_config.can_adapter=damiao \
    --teleop.type=bi_rebot_102_leader \
    --teleop.id=bi_leader \
    --teleop.left_arm_config.port=/dev/ttyUSB0 \
    --teleop.right_arm_config.port=/dev/ttyUSB1
</hfoption> </hfoptions> <Tip> The leader and follower share the same joint names (`shoulder_pan, shoulder_lift, elbow_flex, wrist_flex, wrist_yaw, wrist_roll, gripper`), so leader actions map directly onto the follower. </Tip>

If the motion of a joint is reversed, flip its sign in the leader's joint_directions (the gripper also carries a scale to widen its range to the follower):

bash
lerobot-teleoperate \
    --robot.type=rebot_b601_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.can_adapter=damiao \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.joint_directions='{"shoulder_pan":-1,"shoulder_lift":-1,"elbow_flex":1,"wrist_flex":1,"wrist_yaw":1,"wrist_roll":-1,"gripper":-6}'

Recording datasets

Swap lerobot-teleoperate for lerobot-record (with the same --robot.* / --teleop.* arguments, plus --dataset.*) to record demonstrations for training. See Imitation Learning for Robots for the full workflow.

For hardware assembly and wiring, see the Seeed Studio reBot wiki.