सॉफ्टवेयर सेटअप
लेरोबोट इंस्टालेशन, एसओ-101 रोबोट कॉन्फिगरेशन, सर्वो कैलिब्रेशन, लीडर-फॉलोअर टेलोप सेटअप, पायथन एपीआई और समस्या निवारण। ताज़ा पायथन इंस्टाल से लेकर रनिंग आर्म तक सब कुछ।
किसी अनुभाग पर जाएँ:
लेरोबोट इंस्टालेशन
LeRobot एकमात्र सॉफ़्टवेयर पैकेज है जिसकी आपको SO-101 के लिए आवश्यकता है। यह सर्वो संचार, अंशांकन, टेलीओप और डेटा रिकॉर्डिंग को संभालता है।
एक आभासी वातावरण बनाएँ
python -m venv ~/.venvs/so101
source ~/.venvs/so101/bin/activate # Windows: .venvs\so101\Scripts\activate
लेरोबोट स्थापित करें
pip install lerobot
स्थापना सत्यापित करें
python -c "import lerobot; print(lerobot.__version__)"
स्रोत से इंस्टॉल करें (वैकल्पिक - नवीनतम सुविधाओं के लिए)
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[so101]"
SO-101 रोबोट विन्यास
LeRobot में एक अंतर्निर्मित SO-101 रोबोट कॉन्फ़िगरेशन शामिल है। आप फॉलोअर आर्म के लिए यूएसबी पोर्ट निर्दिष्ट करते हैं (और यदि दो-आर्म टेलीपॉप का उपयोग कर रहे हैं तो लीडर आर्म)।
अपना यूएसबी पोर्ट ढूंढें
# Linux / macOS
ls /dev/ttyUSB* # typical: /dev/ttyUSB0, /dev/ttyUSB1
ls /dev/tty.usbserial* # macOS alternative
# Windows — check Device Manager → Ports → COMx
SO-101 कॉन्फ़िगरेशन YAML
LeRobot कमांड लाइन या YAML फ़ाइल पर इनलाइन कॉन्फ़िगरेशन का उपयोग करता है। सिंगल-आर्म सेटअप के लिए:
# ~/.lerobot/robots/so101_follower.yaml
robot_type: so101
port: /dev/ttyUSB0 # update to your port
cameras:
wrist_cam:
type: opencv
index_or_path: 0
fps: 30
width: 640
height: 480
दो-हाथ (नेता-अनुयायी) विन्यास
# ~/.lerobot/robots/so101_bimanual.yaml
robot_type: so101
port: /dev/ttyUSB1 # follower arm
leader_arms:
main:
type: so101
port: /dev/ttyUSB0 # leader arm
cameras:
top_cam:
type: opencv
index_or_path: 0
fps: 30
width: 640
height: 480
कनेक्शन का परीक्षण करें
python -m lerobot.scripts.control_robot \
--robot.type=so101 \
--robot.port=/dev/ttyUSB0 \
--control.type=none # just connects and reads state
आपको संयुक्त स्थिति रीडिंग मुद्रित दिखनी चाहिए। यदि आपको पोर्ट त्रुटि मिलती है, तो जांचें समस्या निवारण.
सर्वो अंशांकन
पूर्ण एनकोडर का उपयोग करने वाले CAN-बस हथियारों के विपरीत, फ़ीटेक STS3215 सर्वो को अपनी शून्य स्थिति को परिभाषित करने के लिए अंशांकन की आवश्यकता होती है। LeRobot इसे स्वचालित रूप से संभालता है।
अंशांकन चलाएँ
python -m lerobot.scripts.control_robot \
--robot.type=so101 \
--robot.port=/dev/ttyUSB0 \
--control.type=calibrate
स्क्रिप्ट आपको हाथ को विशिष्ट स्थिति (प्रत्येक जोड़ के लिए घर, न्यूनतम, अधिकतम) पर ले जाने के लिए संकेत देगी और प्रत्येक स्थिति में एंटर दबाएँगी। यह अंशांकन डेटा को सहेजता है ~/.cache/huggingface/lerobot/calibration/so101/.
अंशांकन स्थिति
लेरोबोट आपसे प्रत्येक जोड़ को तीन स्थितियों में रखने के लिए कहेगा:
- गृह स्थिति: हाथ पूरी तरह फैला हुआ है, अंत-प्रभावक आगे की ओर इशारा कर रहा है
- शून्य टॉर्क स्थिति: गुरुत्वाकर्षण के तहत हाथ स्वाभाविक रूप से लटका हुआ है
- 90-डिग्री संदर्भ: प्रत्येक जोड़ अपने मध्यबिंदु पर
अंशांकन सत्यापित करें
python -m lerobot.scripts.control_robot \
--robot.type=so101 \
--robot.port=/dev/ttyUSB0 \
--control.type=teleoperate # move arm by hand to verify joint readout
हाथ को मैन्युअल रूप से हिलाएं (अनुपालन मोड)। घर पर जोड़ों की स्थिति शून्य के करीब होनी चाहिए और जब आप प्रत्येक जोड़ को हिलाते हैं तो आसानी से बढ़ना/घटना चाहिए।
पुन:अंशांकन टिप: जब भी आप किसी जोड़ को अलग करें, सर्वो बदलें, या देखें कि जोड़ की स्थिति में बदलाव आ रहा है, तो अंशांकन फिर से चलाएँ। कैलिब्रेशन फ़ाइलें प्रति-आर्म क्रमांक संख्या में संग्रहीत की जाती हैं और स्वचालित रूप से पुनः लोड की जाती हैं।
नेता-अनुयायी टेलीऑपरेशन
SO-101 को लीडर-फ़ॉलोअर टेलीऑपरेशन के लिए डिज़ाइन किया गया है: एक हाथ (लीडर) आपके हाथ की गतिविधियों को पकड़ता है, और दूसरा हाथ (फ़ॉलोअर) वास्तविक समय में उन्हें प्रतिबिंबित करता है। यह उच्चतम गुणवत्ता वाले प्रशिक्षण प्रदर्शन तैयार करता है।
लीडर-फ़ॉलोअर टेलीओप प्रारंभ करें
python -m lerobot.scripts.control_robot \
--robot.type=so101 \
--robot.port=/dev/ttyUSB1 \
--robot.leader_arms.main.type=so101 \
--robot.leader_arms.main.port=/dev/ttyUSB0 \
--control.type=teleoperate
सिंगल-आर्म कीबोर्ड टेलोप (कोई दूसरा आर्म नहीं)
यदि आपके पास केवल एक हाथ है, तो कीबोर्ड नियंत्रण मोड का उपयोग करें:
python -m lerobot.scripts.control_robot \
--robot.type=so101 \
--robot.port=/dev/ttyUSB0 \
--control.type=teleoperate \
--control.teleop_keys=true
अनुपालन/गुरुत्वाकर्षण मुआवजा मोड
लीडर आर्म को लो-टॉर्क मोड में रखें ताकि आप इसे अपने हाथ से स्वतंत्र रूप से घुमा सकें:
python -c "
from lerobot.common.robot_devices.robots.so101 import SO101Robot
robot = SO101Robot(port='/dev/ttyUSB0')
robot.connect()
robot.set_compliance_mode(True) # arm moves freely under hand guidance
"
पायथन एपीआई क्विकस्टार्ट
आप सीएलआई स्क्रिप्ट के बिना लेरोबोट रोबोट एपीआई के माध्यम से सीधे एसओ-101 को नियंत्रित कर सकते हैं।
बुनियादी संयुक्त नियंत्रण
from lerobot.common.robot_devices.robots.so101 import SO101Robot
import torch
robot = SO101Robot(port="/dev/ttyUSB0")
robot.connect()
# Read current joint positions (6 DOF)
obs = robot.capture_observation()
print("Joint positions:", obs["observation.state"])
# Send joint position command (in degrees, normalized to [-1, 1] range)
action = torch.zeros(6) # all joints to zero position
robot.send_action(action)
robot.disconnect()
गुरुत्वाकर्षण मुआवजा (बैकड्राइवेबल मोड)
from lerobot.common.robot_devices.robots.so101 import SO101Robot
robot = SO101Robot(port="/dev/ttyUSB0")
robot.connect()
# Enable backdrive — arm can be moved freely by hand
robot.set_compliance_mode(True)
import time
for _ in range(100):
obs = robot.capture_observation()
print(obs["observation.state"]) # prints live joint positions as you move arm
time.sleep(0.02)
robot.disconnect()
सर्वो स्थिति पढ़ना
from lerobot.common.robot_devices.motors.feetech import FeetechMotorsBus
bus = FeetechMotorsBus(port="/dev/ttyUSB0",
motors={"joint1": (1, "sts3215"),
"joint2": (2, "sts3215"),
"joint3": (3, "sts3215"),
"joint4": (4, "sts3215"),
"joint5": (5, "sts3215"),
"gripper": (6, "sts3215")})
bus.connect()
positions = bus.read("Present_Position", ["joint1", "joint2", "joint3"])
print("Positions:", positions)
bus.disconnect()
शीर्ष 3 सामान्य मुद्दे
FileNotFoundError: /dev/ttyUSB0
USB सर्वो नियंत्रक का पता नहीं चला। आमतौर पर गायब ड्राइवर या केबल अनप्लग होता है।
हल करना:
# Check if the device is listed
ls /dev/ttyUSB* # Linux
ls /dev/tty.usbserial* # macOS
# Linux: add yourself to the dialout group (requires logout)
sudo usermod -aG dialout $USER
# Windows: install CP2102 or CH340 USB driver,
# then check Device Manager for COM port number
सर्वो भौतिक रूप से जुड़े हुए हैं लेकिन LeRobot उनकी स्थिति को नहीं पढ़ सकता है। आमतौर पर बिजली की समस्या या गलत बॉड दर।
हल करना:
# 1. Verify 5V power supply is connected and LED on servo board is on
# 2. Check all servo daisy-chain cables are fully seated
# 3. Try scanning for servos directly:
python -c "
from lerobot.common.robot_devices.motors.feetech import FeetechMotorsBus
bus = FeetechMotorsBus('/dev/ttyUSB0', motors={})
bus.connect()
ids = bus.find_motor_ids()
print('Found motor IDs:', ids)
bus.disconnect()
"
लेरोबोट प्रति आर्म सीरियल नंबर अंशांकन बचाता है। यदि इसे अंशांकन फ़ाइल नहीं मिल पाती है, तो यह चेतावनी देगा और कच्चे एनकोडर मानों का उपयोग करेगा।
हल करना:
# Check calibration file location
ls ~/.cache/huggingface/lerobot/calibration/so101/
# Re-run calibration if the file is missing
python -m lerobot.scripts.control_robot \
--robot.type=so101 \
--robot.port=/dev/ttyUSB0 \
--control.type=calibrate
# Pass explicit calibration path if needed
python -m lerobot.scripts.control_robot \
--robot.type=so101 \
--robot.port=/dev/ttyUSB0 \
--robot.calibration_dir=/path/to/calibration \
--control.type=teleoperate
अभी भी अटके हुए हैं? पर पूछें एसओ-101 फोरम या जाँच करें लेरोबोट गिटहब मुद्दे.