डेटा संग्रहण

एसओ-101 लेरोबोट समुदाय में सबसे आम डेटा संग्रह हथियारों में से एक है। यह मार्गदर्शिका हार्डवेयर कनेक्शन से लेकर एपिसोड रिकॉर्ड करने और आपके डेटासेट को हगिंगफेस पर भेजने तक सब कुछ कवर करती है।

रिकॉर्डिंग से पहले

रिकॉर्डिंग के लिए हार्डवेयर सेटअप

SO-101 डेटा संग्रह सेटअप CAN-बस आर्म्स की तुलना में सरल है - सब कुछ USB पर चलता है। यहाँ क्या कनेक्ट करना है.

📷

कार्यस्थल कैमरा

USB वेबकैम ऊपर से या बगल से कार्यस्थल की ओर इंगित करता है। एक निश्चित स्थान पर माउंट करें - इसे एपिसोड के बीच न हिलाएं। सत्यापित करें: ls /dev/video*

🔒

कलाई कैमरा (वैकल्पिक)

एंड-इफ़ेक्टर पर छोटा USB कैमरा लगा हुआ है। प्रथम-व्यक्ति दृश्य जोड़ता है. दूसरे USB पोर्ट की आवश्यकता है. LeRobot मल्टी-कैमरा सिंक का समर्थन करता है।

🔌

अनुयायी शाखा (यूएसबी सीरियल)

वह भुजा जो क्रियाओं को क्रियान्वित करती है। यूएसबी सर्वो नियंत्रक के माध्यम से कनेक्ट करें। के साथ पोर्ट सत्यापित करें ls /dev/ttyUSB*

👤

लीडर आर्म (यूएसबी सीरियल)

अनुपालन मोड में दूसरा SO-101 - अनुयायी को चलाने के लिए इसे अपने हाथ से घुमाएँ। दूसरे USB पोर्ट पर कनेक्ट करें. उच्चतम गुणवत्ता वाले प्रदर्शन देता है।

कोई ROS नहीं, कोई कर्नेल ड्राइवर नहीं: CAN-बस सेटअप के विपरीत, SO-101 डेटा संग्रह स्टैक पूरी तरह से USB सीरियल पर चलता है। आप मैकबुक या विंडोज लैपटॉप पर रिकॉर्ड कर सकते हैं - उबंटू की आवश्यकता नहीं है।

रिकॉर्डिंग वर्कफ़्लो

चरण-दर-चरण रिकॉर्डिंग वर्कफ़्लो

1

सत्यापित करें कि अंशांकन चालू है

यदि हाथ अलग हो गया हो या हिल गया हो तो प्रत्येक नए सत्र से पहले अंशांकन चलाएँ। देखना सॉफ्टवेयर → अंशांकन.

python -m lerobot.scripts.control_robot \
  --robot.type=so101 --robot.port=/dev/ttyUSB0 \
  --control.type=calibrate
2

कैमरा फ़ीड सत्यापित करें

python -c "
import cv2
for i in range(4):
    cap = cv2.VideoCapture(i)
    if cap.isOpened():
        print(f'Camera {i}: OK')
    cap.release()
"
3

हाथ को घर की स्थिति में ले जाएँ

अनुयायी भुजा को घर की स्थिति में रखें (पूरी तरह से विस्तारित, अंत-प्रभावक आगे की ओर इशारा करते हुए)। टेलिओप शुरू करने से पहले लीडर आर्म को उसी स्थिति में रीसेट करें।

4

कार्य दृश्य सेट करें

वस्तुओं को उनकी सुसंगत प्रारंभिक स्थिति में रखें। यदि आवश्यक हो तो तालिका को चिह्नित करें - नीति सामान्यीकरण के लिए सुसंगत प्रारंभिक स्थितियाँ महत्वपूर्ण हैं।

5

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 प्रत्येक एपिसोड से पहले संकेत देता है। वार्मअप के दौरान आप रिकॉर्डिंग शुरू होने से पहले लीडर आर्म पर अपनी पकड़ को समायोजित कर सकते हैं।

6

एपिसोड की समीक्षा करें और दोबारा चलाएं

python -m lerobot.scripts.visualize_dataset \
  --repo_id=your-username/so101-pick-place-v1 \
  --episode_index=0

खराब गुणवत्ता वाले एपिसोड तुरंत हटा दें. गिरे हुए कैमरा फ़्रेम, अनियमित संयुक्त वेग, या अपूर्ण कार्य निष्पादन की जाँच करें।

7

हगिंगफेस हब पर पुश करें

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 प्रशिक्षण पारिस्थितिकी तंत्र के साथ सीधे संगत हैं।

एपिसोड डेटा स्कीमा

प्रत्येक एपिसोड Parquet फ़ाइल में फ़ील्ड
अवलोकन.स्थिति फ्लोट32[6] डिग्री में संयुक्त स्थिति (6 डीओएफ - 5 जोड़ + ग्रिपर)
अवलोकन.छवियां.* वीडियो पथ प्रति कैमरा MP4 वीडियो फ़ाइल में फ़्रेम का संदर्भ
कार्रवाई फ्लोट32[6] लीडर आर्म से संयुक्त पदों को लक्षित करें
TIMESTAMP फ्लोट64 सेकंड में यूनिक्स टाइमस्टैम्प
फ़्रेम_सूचकांक int64 एपिसोड के भीतर फ़्रेम नंबर
एपिसोड_इंडेक्स int64 डेटासेट के भीतर एपिसोड नंबर
अगला.किया बूल प्रत्येक एपिसोड के अंतिम फ्रेम पर सच है
कार्य_सूचकांक int64 कार्य विवरण लुकअप तालिका में अनुक्रमित करें

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 डेटासेट के लिए हगिंगफेस हब - आप मौजूदा आधार डेटासेट से फ़ाइन-ट्यून करने और रिकॉर्डिंग समय बचाने में सक्षम हो सकते हैं।

डेटासेट तैयार है? प्रशिक्षण प्रारंभ करें.

अपने डेटासेट को हगिंगफेस पर पुश करें और एसीटी या डिफ्यूजन पॉलिसी को प्रशिक्षित करें।