This repository contains scripts for controlling and calibrating SO101 robotic arms, including teleoperation capabilities.
SO101-Showcase/
├── find_port.sh # Find the ports to which the robots are connected
├── enable_port.sh # Enable the ports to which the robots are connected
├── calibrate_arm.py # Calibrate SO101 arms (leader or follower)
├── teleoperate.py # Teleoperate follower arm using leader arm
├── setup_motors.py # Setup the motors of the arms
└── README.md # This file
Assign IDs to the motors of the SO101 arm (either leader or follower type) . Usage:
python setup_motors.py --port PORT --id NAME --arm_type TYPEArguments:
--port, -p(required): Serial port identifier (e.g.,USB0for/dev/ttyUSB0)--id, -i(required): Unique identifier for the robot arm--arm_type, -a(required): Arm type -leaderorfollower
Calibrates a SO101 arm (either leader or follower type) by performing initial calibration routines.
Usage:
python calibrate_arm.py --port PORT --id NAME --arm_type TYPEArguments:
--port, -p(required): Serial port identifier (e.g.,USB0for/dev/ttyUSB0)--id, -i(required): Unique identifier for the robot arm--arm_type, -a(required): Arm type -leaderorfollower
Enables real-time teleoperation of a follower SO101 arm controlled by a leader SO101 arm.
Usage:
python teleoperate.py --robot_port PORT1 --robot_id NAME1 --leader_port PORT2 --leader_id NAME2Arguments:
--robot_port, -rp(required): Serial port for follower robot (e.g.,USB0)--robot_id, -ri(required): Unique identifier for follower robot--leader_port, -lp(required): Serial port for leader arm (e.g.,USB1)--leader_id, -li(required): Unique identifier for leader arm
Features:
- Real-time action streaming from leader to follower
- Graceful interruption with
Ctrl+C - Automatic return to initial position on exit
- Python 3.10+
- LeRobot library with SO101 support
- Appropriate USB/serial drivers for arm communication