डेटा संग्रहण
एसओ-101 लेरोबोट समुदाय में सबसे आम डेटा संग्रह हथियारों में से एक है। यह मार्गदर्शिका हार्डवेयर कनेक्शन से लेकर एपिसोड रिकॉर्ड करने और आपके डेटासेट को हगिंगफेस पर भेजने तक सब कुछ कवर करती है।
रिकॉर्डिंग के लिए हार्डवेयर सेटअप
SO-101 डेटा संग्रह सेटअप CAN-बस आर्म्स की तुलना में सरल है - सब कुछ USB पर चलता है। यहाँ क्या कनेक्ट करना है.
कार्यस्थल कैमरा
USB वेबकैम ऊपर से या बगल से कार्यस्थल की ओर इंगित करता है। एक निश्चित स्थान पर माउंट करें - इसे एपिसोड के बीच न हिलाएं। सत्यापित करें: ls /dev/video*
कलाई कैमरा (वैकल्पिक)
एंड-इफ़ेक्टर पर छोटा USB कैमरा लगा हुआ है। प्रथम-व्यक्ति दृश्य जोड़ता है. दूसरे USB पोर्ट की आवश्यकता है. LeRobot मल्टी-कैमरा सिंक का समर्थन करता है।
अनुयायी शाखा (यूएसबी सीरियल)
वह भुजा जो क्रियाओं को क्रियान्वित करती है। यूएसबी सर्वो नियंत्रक के माध्यम से कनेक्ट करें। के साथ पोर्ट सत्यापित करें ls /dev/ttyUSB*
लीडर आर्म (यूएसबी सीरियल)
अनुपालन मोड में दूसरा SO-101 - अनुयायी को चलाने के लिए इसे अपने हाथ से घुमाएँ। दूसरे USB पोर्ट पर कनेक्ट करें. उच्चतम गुणवत्ता वाले प्रदर्शन देता है।
कोई ROS नहीं, कोई कर्नेल ड्राइवर नहीं: CAN-बस सेटअप के विपरीत, SO-101 डेटा संग्रह स्टैक पूरी तरह से USB सीरियल पर चलता है। आप मैकबुक या विंडोज लैपटॉप पर रिकॉर्ड कर सकते हैं - उबंटू की आवश्यकता नहीं है।
चरण-दर-चरण रिकॉर्डिंग वर्कफ़्लो
सत्यापित करें कि अंशांकन चालू है
यदि हाथ अलग हो गया हो या हिल गया हो तो प्रत्येक नए सत्र से पहले अंशांकन चलाएँ। देखना सॉफ्टवेयर → अंशांकन.
python -m lerobot.scripts.control_robot \
--robot.type=so101 --robot.port=/dev/ttyUSB0 \
--control.type=calibrate
कैमरा फ़ीड सत्यापित करें
python -c "
import cv2
for i in range(4):
cap = cv2.VideoCapture(i)
if cap.isOpened():
print(f'Camera {i}: OK')
cap.release()
"
हाथ को घर की स्थिति में ले जाएँ
अनुयायी भुजा को घर की स्थिति में रखें (पूरी तरह से विस्तारित, अंत-प्रभावक आगे की ओर इशारा करते हुए)। टेलिओप शुरू करने से पहले लीडर आर्म को उसी स्थिति में रीसेट करें।
कार्य दृश्य सेट करें
वस्तुओं को उनकी सुसंगत प्रारंभिक स्थिति में रखें। यदि आवश्यक हो तो तालिका को चिह्नित करें - नीति सामान्यीकरण के लिए सुसंगत प्रारंभिक स्थितियाँ महत्वपूर्ण हैं।
LeRobot रिकॉर्डिंग प्रारंभ करें
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=record \
--control.fps=30 \
--control.repo_id=your-username/so101-pick-place-v1 \
--control.num_episodes=50 \
--control.single_task="Pick the red block and place it in the bin" \
--control.warmup_time_s=3 \
--control.reset_time_s=8
LeRobot प्रत्येक एपिसोड से पहले संकेत देता है। वार्मअप के दौरान आप रिकॉर्डिंग शुरू होने से पहले लीडर आर्म पर अपनी पकड़ को समायोजित कर सकते हैं।
एपिसोड की समीक्षा करें और दोबारा चलाएं
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/so101-pick-place-v1 \
--episode_index=0
खराब गुणवत्ता वाले एपिसोड तुरंत हटा दें. गिरे हुए कैमरा फ़्रेम, अनियमित संयुक्त वेग, या अपूर्ण कार्य निष्पादन की जाँच करें।
हगिंगफेस हब पर पुश करें
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/so101-pick-place-v1
SO-101 डेटासेट प्रारूप
SO-101 मानक LeRobot / HuggingFace डेटासेट प्रारूप का उपयोग करता है - OpenArm, Koch और अन्य LeRobot हथियारों के समान स्कीमा। इसका मतलब है कि आपके डेटासेट पूर्ण LeRobot प्रशिक्षण पारिस्थितिकी तंत्र के साथ सीधे संगत हैं।
एपिसोड डेटा स्कीमा
SO-101 विशिष्ट नोट्स
एसओ-101 एक्शन स्पेस डिग्री (फ़ीटेक सर्वो इकाइयों) में संयुक्त स्थिति का उपयोग करता है, रेडियन का नहीं। क्रॉस-प्लेटफ़ॉर्म प्रशिक्षण के लिए SO-101 और OpenArm डेटासेट को मिलाते समय, पहले आँकड़ों का उपयोग करके दोनों को रेडियन में सामान्य करें meta/stats.json.
एकत्रित डेटा के लिए गुणवत्ता जांच सूची
हब पर जाने से पहले प्रत्येक रिकॉर्डिंग सत्र के बाद इसे चलाएं।
-
1एपिसोड की लंबाई सुसंगत है बाहरी-लंबाई वाले एपिसोड का आमतौर पर मतलब होता है कि ऑपरेटर रुक गया, ग्रिपर फिसल गया, या रिकॉर्डिंग बाधित हो गई। औसत लंबाई के ±30% के भीतर रखें।
-
2कोई सर्वो वेग स्पाइक नहीं STS3215 सर्वो में सीमित बैंडविड्थ है - अचानक वेग बढ़ जाता है
observation.stateसिलसिलेवार बस ड्रॉपआउट का संकेत दें। उन प्रकरणों को हटा दें. -
3कैमरा फ़्रेम संयुक्त डेटा के साथ संरेखित हैं जाँचें कि कैमरा टाइमस्टैम्प और संयुक्त टाइमस्टैम्प एक दूसरे से 20ms के भीतर हैं। यूएसबी सीरियल विलंबता लंबी रिकॉर्डिंग पर बहाव का कारण बन सकती है। प्रत्येक 100 एपिसोड में कैमरे पुनः सिंक करें।
-
4लीडर आर्म ट्रैकिंग सुचारू थी यदि रिकॉर्डिंग के दौरान अनुयायी काफ़ी पिछड़ जाता है (यूएसबी सीरियल विलंबता के कारण), तो कार्रवाई लेबल को अवलोकन से समय-स्थानांतरित कर दिया जाएगा। जांचने के लिए दोबारा चलाएं.
-
5प्रत्येक एपिसोड की शुरुआत में कार्य दृश्य सुसंगत था वस्तुएँ समान स्थिति और अभिविन्यास में। एसओ-101 की कम पुनरावृत्ति (बनाम कैन हथियार) इसे विशेष रूप से महत्वपूर्ण बनाती है - प्रारंभिक स्थितियों में भिन्नता नीति प्रशिक्षण को नुकसान पहुंचाती है।
-
6ग्रिपर का खुला/बंद होना स्पष्ट रूप से रिकॉर्ड किया गया है एसओ-101 ग्रिपर स्थिति संयुक्त 6 है। सत्यापित करें कि ग्रैस्प इवेंट डेटा में एक स्पष्ट संयुक्त स्थिति संक्रमण (खुला → बंद) दिखाते हैं, क्रमिक बहाव नहीं।
अपने डेटासेट से एक नीति का प्रशिक्षण
एक बार जब आपका डेटासेट गुणवत्ता जांच पास कर लेता है, तो LeRobot के साथ ACT या डिफ्यूजन पॉलिसी को प्रशिक्षित करें।
ट्रेन अधिनियम
python -m lerobot.scripts.train \
--policy.type=act \
--dataset.repo_id=your-username/so101-pick-place-v1 \
--policy.chunk_size=100 \
--training.num_epochs=5000 \
--output_dir=outputs/act-so101-pick-place
ट्रेन प्रसार नीति
python -m lerobot.scripts.train \
--policy.type=diffusion \
--dataset.repo_id=your-username/so101-pick-place-v1 \
--training.num_epochs=8000 \
--output_dir=outputs/diffusion-so101-pick-place
सामुदायिक डेटासेट: SO-101 के पास LeRobot पारिस्थितिकी तंत्र में सबसे बड़े सामुदायिक डेटासेट संग्रह में से एक है। अपना खुद का डेटा इकट्ठा करने से पहले जांच लें मौजूदा SO-101 डेटासेट के लिए हगिंगफेस हब - आप मौजूदा आधार डेटासेट से फ़ाइन-ट्यून करने और रिकॉर्डिंग समय बचाने में सक्षम हो सकते हैं।