डेटा संग्रहण

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

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

रिकॉर्डिंग के लिए हार्डवेयर कनेक्शन

डेटा संग्रह के लिए बुनियादी आर्म नियंत्रण की तुलना में अधिक हार्डवेयर की आवश्यकता होती है। यह अनुभाग बताता है कि LeRobot शुरू करने से पहले क्या कनेक्ट करना है और कहाँ कनेक्ट करना है।

📷

कलाई का कैमरा

एंड-इफ़ेक्टर फ्लैंज पर एक USB वेबकैम या Intel RealSense D435i माउंट करें। 30+ एफपीएस के लिए यूएसबी 3.0 के माध्यम से कनेक्ट करें। सत्यापित करें: ls /dev/video*

📖

ओवरहेड/कार्यस्थान कैमरा

वैश्विक दृश्य के लिए कार्यस्थल के ऊपर कैमरा लगाया गया। टेबल से ~60 सेमी ऊपर, 30° नीचे कोण पर स्थापित करें। दूसरा यूएसबी 3.0 पोर्ट.

🔌

कैन बस (बांह नियंत्रण)

सेटअप से पहले से ही कनेक्ट है. सत्यापित करें: ip link show can0. LeRobot प्रारंभ करने से पहले CAN इंटरफ़ेस चालू होना चाहिए।

👤

टेलिओप डिवाइस

3डी स्पेसमाउस, लीडर आर्म के रूप में दूसरा ओपनआर्म या गेमपैड। दो ओपनआर्म्स के साथ लीडर-फ़ॉलोअर उच्चतम गुणवत्ता वाले प्रदर्शन देते हैं।

कैमरा सिंक नोट: LeRobot होस्ट पीसी स्तर पर सभी स्ट्रीम को टाइमस्टैम्प करता है। मल्टी-कैमरा सेटअप के लिए, कैमरा फ़्रेम और संयुक्त स्थिति रीडिंग के बीच विलंबता अंतर को कम करने के लिए यूएसबी 3.0 हब (यूएसबी 2.0 हब नहीं) का उपयोग करें। लक्ष्य: <5ms धाराओं के बीच तिरछा।

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

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

प्रत्येक रिकॉर्डिंग सत्र के लिए इन चरणों का पालन करें। प्रत्येक चरण अंतिम पर आधारित होता है - चरणों को छोड़ें नहीं।

1

सत्र पूर्व सुरक्षा जांच

कार्यस्थल (1 मीटर त्रिज्या) साफ़ करें, सत्यापित करें कि हाथ स्वतंत्र रूप से घर की स्थिति तक पहुँचता है, रिकॉर्डिंग से पहले ई-स्टॉप का परीक्षण करें। देखना सुरक्षा पृष्ठ.

2

CAN इंटरफ़ेस और ROS2 लाएँ

sudo ip link set up can0
source /opt/ros/humble/setup.bash
source ~/openarm_ws/install/setup.bash
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=false can_interface:=can0
3

हाथ घर

प्रत्येक सत्र से पहले संदर्भ स्थिति निर्धारित करने के लिए होमिंग रूटीन चलाएँ। हाथ को अंतिम-प्रभावक पर कोई भार डाले बिना अपनी घरेलू स्थिति तक पहुंचना चाहिए।

python3 -m openarm_can.scripts.home --interface can0
4

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

LeRobot शुरू करने से पहले जांच लें कि सभी कैमरे स्ट्रीमिंग कर रहे हैं। यदि LeRobot इसकी रिपोर्ट नहीं करता है तो एक गुम कैमरा चुपचाप आपके डेटासेट को दूषित कर देगा।

# Quick camera check (press Q to exit)
python3 -c "
import cv2
for i in range(4):
    cap = cv2.VideoCapture(i)
    if cap.isOpened():
        print(f'Camera {i}: OK')
    cap.release()
"
5

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

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

6

LeRobot रिकॉर्डिंग प्रारंभ करें

source ~/.venvs/openarm/bin/activate
python -m lerobot.scripts.control_robot \
  --robot.type=openarm \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/openarm-pick-place-v1 \
  --control.num_episodes=50 \
  --control.single_task="Pick up the red cube and place it in the bin" \
  --control.warmup_time_s=5 \
  --control.reset_time_s=10

LeRobot प्रत्येक एपिसोड से पहले आपको संकेत देगा। रिकॉर्डिंग शुरू होने से पहले अपनी टेलोप स्थिति तैयार करने के लिएwarmup_time_s का उपयोग करें।

7

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

रिकॉर्डिंग के बाद, डेटासेट को अंतिम रूप देने से पहले संदिग्ध एपिसोड को दोबारा चलाएं। खराब गुणवत्ता वाले एपिसोड तुरंत हटा दें.

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

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

huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
  --repo_id=your-username/openarm-pick-place-v1
डेटासेट प्रारूप

लेरोबोट डेटासेट प्रारूप

लेरोबोट सारणीबद्ध डेटा के लिए Parquet फ़ाइलों और छवि स्ट्रीम के लिए MP4/PNG फ़ाइलों का उपयोग करके हगिंगफेस डेटासेट प्रारूप में डेटासेट संग्रहीत करता है। प्रत्येक एपिसोड टाइमस्टैम्प्ड अवलोकनों और कार्यों का एक क्रम है।

निर्देशिका संरचना

your-username/openarm-pick-place-v1/
├── meta/
│   ├── info.json          # Dataset metadata, fps, shapes
│   ├── episodes.jsonl     # Per-episode metadata (task, length, outcome)
│   └── stats.json         # Min/max/mean/std for all fields
├── data/
│   └── chunk-000/
│       ├── episode_000000.parquet
│       ├── episode_000001.parquet
│       └── ...
└── videos/
    └── chunk-000/
        ├── observation.images.wrist_cam/
        │   ├── episode_000000.mp4
        │   └── ...
        └── observation.images.overhead_cam/
            └── ...

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

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

डेटा के रूप में विफलता एपिसोड

ओपनआर्म को केवल सफलताओं के लिए ही नहीं, बल्कि विफल प्रयासों को भी सुरक्षित रूप से रिकॉर्ड करने के लिए डिज़ाइन किया गया है। विफलता प्रक्षेप पथ - फिसलन, गलत समझ, टकराव, पुनर्प्राप्ति प्रयास - मजबूत नीति सामान्यीकरण के लिए प्रथम श्रेणी के डेटा महत्वपूर्ण हैं। विफलता प्रकरणों को स्वचालित रूप से न हटाएं. इसके बजाय, उन्हें इसके साथ एनोटेट करें success एपिसोड मेटाडेटा में फ़ील्ड और प्रशिक्षण ढांचे को यह तय करने दें कि उनका उपयोग करना है या नहीं।

गुणवत्ता आश्वासन

एकत्रित डेटा के लिए गुणवत्ता जांच सूची

प्रत्येक रिकॉर्डिंग सत्र के बाद और हब पर जाने से पहले इस चेकलिस्ट को पढ़ें। खराब-गुणवत्ता वाला डेटा कम एपिसोड संख्या की तुलना में नीति प्रदर्शन को अधिक नुकसान पहुंचाता है।

  • 1
    एपिसोड की लंबाई सुसंगत है एक ही कार्य के लिए सभी एपिसोड औसत लंबाई के ±30% के भीतर होने चाहिए। आउटलाइर्स आम तौर पर संकेत देते हैं कि ऑपरेटर रुका हुआ है, पकड़ चूक गया है, या रिकॉर्डिंग बाधित हो गई है।
  • 2
    कोई कैमरा फ़्रेम गायब नहीं जांचें कि प्रत्येक एपिसोड में प्रति स्ट्रीम फ़्रेम की अपेक्षित संख्या है। दौड़ना lerobot.scripts.visualize_dataset वीडियो की गुणवत्ता सत्यापित करने के लिए 3-5 एपिसोड पर।
  • 3
    संयुक्त स्थितियाँ सुरक्षित सीमा के भीतर हैं सत्यापित करें observation.state कभी भी संयुक्त सीमा से अधिक नहीं होता विशिष्टता. उच्च-वेग स्पाइक्स CAN ड्रॉपआउट या नियंत्रण गड़बड़ी का संकेत देते हैं - उन एपिसोड को हटा दें।
  • 4
    एपिसोड के बीच कार्य दृश्य रीसेट किया गया था प्रत्येक एपिसोड को ऑब्जेक्ट के साथ उसी प्रारंभिक स्थिति में शुरू करना चाहिए। यदि आपने रीसेट करना छोड़ दिया है, तो पॉलिसी असंगत प्रारंभिक स्थितियों से सीख लेगी और खराब तरीके से सामान्यीकरण करेगी।
  • 5
    कैमरा कवरेज पूरा हो गया है कलाई के कैमरे को हमेशा अंतिम-प्रभावक और हेरफेर की जा रही वस्तु को दिखाना चाहिए। ओवरहेड कैमरे को पूरा कार्यक्षेत्र दिखाना चाहिए। यदि ऑब्जेक्ट एपिसोड के मध्य में फ्रेम छोड़ देता है तो माउंट को फिर से समायोजित करें।
  • 6
    प्रदर्शन शैली सुसंगत है सभी ऑपरेटरों को समान दृष्टिकोण पथ और समझ शैली का उपयोग करना चाहिए। मिश्रित रणनीतियाँ नीति प्रशिक्षण को भ्रमित करती हैं। प्रति कार्य संस्करण में एक ही ऑपरेटर का उपयोग करें, या ऑपरेटर द्वारा एपिसोड को लेबल करें।
  • 7
    डेटासेट आँकड़े उचित लगते हैं जाँच करना meta/stats.json रिकॉर्डिंग के बाद. सत्यापित करें कि एक्शन माध्य शून्य के करीब है (संयुक्त सीमा पर अटका नहीं है), और एक्शन एसटीडी एपिसोड में भिन्नता दिखाने के लिए पर्याप्त बड़ा है।
  • 8
    सफलता दर प्रलेखित है संग्रह के दौरान मानव सफलता दर रिकॉर्ड करें। संपर्क-समृद्ध कार्यों के लिए 60-70% सफलता दर विशिष्ट है। कम सफलता यह संकेत दे सकती है कि कार्य बहुत कठिन है; उच्चतर का मतलब यह हो सकता है कि उपयोगी प्रशिक्षण संकेत प्रदान करने के लिए कार्य बहुत आसान है।
अगला कदम

अपने डेटासेट से एक नीति का प्रशिक्षण

एक बार जब आपका डेटासेट गुणवत्ता जांच सूची पास कर लेता है, तो आप सीधे LeRobot के साथ ACT या डिफ्यूजन पॉलिसी को प्रशिक्षित कर सकते हैं।

ट्रेन अधिनियम

python -m lerobot.scripts.train \
  --policy.type=act \
  --dataset.repo_id=your-username/openarm-pick-place-v1 \
  --policy.chunk_size=100 \
  --training.num_epochs=5000 \
  --output_dir=outputs/act-pick-place

ट्रेन प्रसार नीति

python -m lerobot.scripts.train \
  --policy.type=diffusion \
  --dataset.repo_id=your-username/openarm-pick-place-v1 \
  --training.num_epochs=8000 \
  --output_dir=outputs/diffusion-pick-place

गहरे जाना: पूरा पढ़ें डेटा संग्रहण पाइपलाइन अवलोकन एपिसोड संरचना, डेटासेट संस्करण, सिम-टू-रियल संरेखण और बहु-कार्य डेटासेट संरचना के संपूर्ण उपचार के लिए रोबोटिक्स लाइब्रेरी में।

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

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