የመጀመሪያዎን LeRobot ዳታሴት በSO-100 ክንድ ለመመዝገብ የAY-Robots ትምህርታዊ ገጽ
LeRobotSO-100ዳታሴት መቅዳትቴሌኦፕሬሽንየማስመሰል ትምህርት

የመጀመሪያዎን LeRobot ዳታሴት በSO-100 ይመዝግቡ

AY-Robots ResearchAugust 23, 202616 min ንባብ

በSO-100 ሊሰራ የሚችል LeRobot ዳታሴት ይመዝግቡ: ካሊብሬሽን፣ መሪ-ተከታይ ቴሌኦፕሬሽን፣ ትክክለኛዎቹ lerobot-record ፍላጎች እና ነባሪ ቅንብሮች፣ ካሜራ ማዋቀር፣ የክፍሎች ብዛት፣ እና ሩጫውን የሚያበላሹ ጉድለቶች።

አንድ SO-100 ተከታይ፣ ተመሳሳይ ዲዛይን ያለው መሪ ክንድ እና ሁለት የዩኤስቢ ካሜራዎች በአንድ ከሰዓት በኋላ ፖሊሲን ማስተካከል ይችላሉ። ተመሳሳይ የሙከራ ቦታ በፋይል ማሰሻ ውስጥ ጤናማ የሚመስሉ ስልሳ ክፍሎችን በቀላሉ ማምረት እና የስድስት ሰዓት የጂፒዩ ስራን ማባከን ይችላል። ልዩነቱ ሞዴሉ እምብዛም አይደለም፤ በሰርቮስ እና በፓርኬት ፋይል መካከል የተፈጠረው ነገር ነው።

ይህ በእጅ የሚሰራው መንገድ ነው፣ ከዚያም አጭሩ። እያንዳንዱ ትዕዛዝ ከlerobot 0.6.1 ነው፣ በኦገስት 3፣ 2026 የተለቀቀ እና በPyPI ላይ ወቅታዊ ነው። ወደ ኮንሶል መግቢያ ነጥቦች ተዛውሯል፣ ስለዚህ የሚሰሩ ትምህርቶች python lerobot/scripts/control_robot.py ከእንግዲህ የሌለ ፋይልን ይገልጻሉ።

አጭር እትም

  • lerobot 0.6.1 v3.0 ይመዘግባል፤ GR00T N1.7 እና N1.5 ደግሞ v2.1 ይፈልጋሉ። ከመቅዳትዎ በፊት ቅርጸቱን ያረጋግጡ።
  • አራት ትዕዛዞች: lerobot-find-port, lerobot-setup-motors, lerobot-calibrate, lerobot-record. ተመሳሳይ --robot.id እና --teleop.id ከካሊብሬሽን ወደ ቀረጻ ክፍለ ጊዜ ይውሰዱ።
  • ትክክለኛ ነባሪዎች: 30 fps, 60 s በአንድ ክፍል, 60 s ዳግም ማስጀመር, 50 ክፍሎች, ወደ 100 ደቂቃ የሚጠጋ የሰዓት ጊዜ።
  • እዚህ ዝቅተኛው ክፍሎች: 30 ለSmolVLA, 50 ለቀሪዎቹ።
  • ብዝሃነት ከብዛት ይበልጣል። የውሂብ ስብስቦች በአራት ነገሮች ይሞታሉ: የተለዋወጡ የካሜራ ኢንዴክሶች, የወደቁ ወይም የቀዘቀዙ ፍሬሞች, በመገደቢያው ላይ የቆመ መገጣጠሚያ, የማይነበብ የሥራ ሕብረቁምፊ።

የቀረጻ ክፍለ ጊዜ ምን ይይዛል

አንድ LeRobot ዳታ ስብስብ የቪዲዮዎች ማህደር ሳይሆን ጊዜ-መረጃ ያለው ቪዲዮ የተያያዘበት ሰንጠረዥ ነው፡ እያንዳንዱ የቁጥጥር-ዑደት ምት የታዘዘውን ተግባር፣ ተከታዩ የደረሰበትን ሁኔታ፣ ለእያንዳንዱ ካሜራ አንድ ፍሬም፣ የጊዜ ማህተም እና ኢንዴክሶችን የያዘ አንድ ረድፍ ይጽፋል። ፖሊሲው እነዚህን ዓምዶች ብቻ ነው የሚያየው። የlerobot/svla_so100_pickplace፣ ከ meta/info.json የተነበበ።

ባህሪdtypeቅርጽምንድን ነው
actionfloat32[6]ከመሪው ክንድ የመገጣጠሚያ ኢላማዎች
observation.statefloat32[6]ተከታዩ የደረሰባቸው የመገጣጠሚያ ቦታዎች
observation.images.topvideo[480, 640, 3]የቦታ ካሜራ፣ MP4 (እዚህ av1)
observation.images.wristvideo[480, 640, 3]የእጅ አንጓ ካሜራ፣ ተመሳሳይ ፍጥነት
timestampfloat32[1]ክፍል ከጀመረበት ጊዜ ጀምሮ ያሉ ሰከንዶች
frame_index, episode_index, index, task_indexint64[1]በራስ-ሰር የሚሞላ የሂሳብ አያያዝ

መገጣጠሚያዎቹ main_shoulder_pan, main_shoulder_lift, main_elbow_flex, main_wrist_flex, main_wrist_roll እና main_gripper ናቸው፡ የ SO-100 ስድስት የነጻነት ደረጃዎች። ተግባር እና ሁኔታ ቅርጽ የሚጋሩት መሪ-ተከታይ ቴሌኦፕሬሽን ኢላማን እና አንድ እርምጃ በኋላ የደረሰበትን ቦታ ስለሚመዘግብ ነው። ያ ክፍተት መረጃ ነው፡ ክንዱ ስበትን ወይም የተጣበቀ ነገርን የተዋጋበት። እነዚያ ሕብረቁምፊዎች የዚያ ዳታ ስብስብ ናቸው። ዛሬ በ0.6.1 የተመዘገበ ክፍለ ጊዜ shoulder_pan.pos እስከ gripper.pos ድረስ፣ በአውቶቡስ ላይ ከ1 እስከ 6 ያሉ መታወቂያዎችን ይጽፋል፡ ተመሳሳይ ስድስት መገጣጠሚያዎች፣ የተለያዩ ቁልፎች፣ ይህም አንድ ኮንፊግ ባህሪን በስም በሚጠራበት ጊዜ አስፈላጊ ይሆናል።

ከእውነተኛ ዳታ ስብስብ የተገኘ መለኪያ

ያ ዳታ ስብስብ 50 ክፍሎችን እና 19,631 ፍሬሞችን በ30 fps ይይዛል፡ በአንድ ክፍል ወደ 393 ፍሬሞች ወይም 13 ሰከንዶች። የእርስዎ በአማካይ አንድ ደቂቃ ከሆነ፣ የበለጠ ከባድ ነገር እየሰሩ ነው ወይም በሁለቱም ጫፎች ላይ የሞተ ጊዜ እየመዘገቡ ነው።

የ AY-Robots የቃላት መፍቻ ግቤት ለ LeRobot የውሂብ ስብስብ ቅርጸት፣ የዳይሬክተሪ አቀማመጥ እና የሜታዳታ ፋይሎችን የሚያሳይ።
በ data/, videos/ እና meta/ ውስጥ ምን እንደሚኖር፣ እና የትኞቹ ፖሊሲዎች የትኛውን ስሪት እንደሚያነቡ።

በስራ ቦታዎ ላይ የሚያስፈልጉዎት ነገሮች

እቃዝርዝርማስታወሻ
ተከታይ ክንድSO-100, ስድስት Feetech STS3215 ሰርቮዎችለክፍሎች ከ110 እስከ 150 ዩሮ አካባቢ
መሪ ክንድሁለተኛ SO-100, ጊርስ የተወገዱከስድስቱም መሪ ሞተሮች ጊርስ የተወገዱ: ኢንኮደር ብቻ, ያነሰ ግጭት
ኃይልበቁሳቁስ ዝርዝር ውስጥ ካለው 7.4 V STS3215 ልዩነት ጋር የተጣመረከታች ያለውን ማስጠንቀቂያ ይመልከቱ
ካሜራዎችሁለት ዩኤስቢ ካሜራዎች, 640x480 በ30 fpsአንድ የትዕይንት እይታ, አንድ በእጅ አንጓ ላይ
አስተናጋጅPython 3.12 ወይም ከዚያ በላይ, ffmpegrequires-python >= 3.12
የሃብ አካውንትHugging Face የመጻፊያ ቶከንoptional with --dataset.push_to_hub=false
7.4 V እንጂ 12 V አይደለም

STS3215 በሁለት ስሪቶች ይመጣል: የ SO-ARM100 README የ 7.4 V ስሪት በ 6 V ሲለካ 16.5 kg.cm የማቆሚያ ጉልበት እንዳለው እና የ 12 V ስሪት ደግሞ 30 kg.cm እንዳለው ይገልጻል, እንዲሁም የ 12 V ሞተሮችን መውሰድ ማለት ከ 5 V ይልቅ 12 V 5 A+ የኃይል አቅርቦት መግዛት ማለት እንደሆነ ያስተውላል። የቁሳቁስ ዝርዝር 7.4 V ሰርቮዎችን ይዘረዝራል። 12 V ለ 7.4 V ደረጃ ለተሰጣቸው ሰርቮዎች መስጠት ያጠፋቸዋል, ስለዚህ ማንኛውንም ነገር ከማገናኘትዎ በፊት የሞተሩን መለያ ያንብቡ። ሰርቮ ምላሽ አይሰጥም

ክንዱ ገና ካልተገነባ፣ ያ የተለየ ምሽት ነው፡ ከዚህ ይጀምሩ SO-100 መጀመርያ እና የSO-100 ሙሉ የማዋቀር መመሪያ። ምንም ነገር ካልገዙ፣ መጀመሪያ SO-100 ከSO-101 ጋር ንፅፅርን ያንብቡ፡ SO-101 የተሻሻለ ሽቦ እና የማርሽ ማስወገጃ ደረጃ የሌለው አዲስ ክለሳ ነው፣ እና የመቅጃው የስራ ፍሰት ተመሳሳይ ነው።

lerobot 0.6.1ን ይጫኑ

bash
conda create -y -n lerobot python=3.12
conda activate lerobot

# TorchCodec is the default video decoder and needs ffmpeg
conda install ffmpeg -c conda-forge

# core_scripts = dataset + hardware + viz extras (record, replay, calibrate)
# feetech     = SDK for the STS3215 bus servos in the SO-100
pip install 'lerobot[core_scripts,feetech]'

lerobot-info
lerobot-info በPATH ላይ ሊያገኘው የሚችለውን የffmpeg ስሪት ጨምሮ የስርዓት ማጠቃለያ ያትማል።

ተጨማሪዎች ሰዎችን በጣም ያደናግራሉ። pip install lerobot ዋና ዋና የML ጥገኞችን ብቻ ይጭናል፣ ከሮቦት ጋር የሚገናኝ ምንም ነገር የለም። የኮች ክንዶች dynamixel ፋንታ feetech ያስፈልጋቸዋል። የእርስዎ ሼል ስለ lerobot-record ሰምቶ የማያውቅ ከሆነ፣ ምክንያቱ ይህ ነው።

ፖርቶች፣ የሞተር መለያዎች እና ካሊብሬሽን

በክፍሎች እና በሚሰራ የቴሌኦፕ ሉፕ መካከል ሶስት የአንድ ጊዜ እርምጃዎች አሉ። በእጅዎ ላይ የሰለጠነ ፖሊሲ በሌላ ሰው ላይ እንዲሰራ ያደርጋል፣ ጥሬ ኢንኮደር ቆጠራዎችን ወደ የጋራ የመገጣጠሚያ ስምምነት ይለውጣል።

  1. 1
    የእያንዳንዱን ክንድ የዩኤስቢ ፖርት ያግኙ

    ሁለቱንም ክንዶች ሰክተው ያሂዱት፣ ሲጠየቁ የሚለዩትን ይንቀሉ እና የትኛው ፖርት እንደጠፋ ያስተውሉ። በሊኑክስ ላይ sudo chmod 666 /dev/ttyACM0 ሊያስፈልግዎ ይችላል።

    bash
    lerobot-find-port
    # Finding all available ports for the MotorsBus.
    # Ports before disconnecting: ['/dev/ttyACM0', '/dev/ttyACM1']
    # Remove the USB cable from your MotorsBus and press Enter when done.
    # The port of this MotorsBus is '/dev/ttyACM1'
    # Reconnect the USB cable.
  2. 2
    የሞተር መለያዎችን እና ባውድሬቶችን ይፃፉ

    መለያዎች አንድ ሞተር በአንድ ጊዜ ይፃፋሉ፣ እና ሰነዶቹ እንዴት እንደሆነ በጥብቅ ይገልጻሉ፡ በትክክል አንድ ሞተርን ከቁጥጥር ቦርዱ ጋር ያገናኙ፣ ገና ከሌላው ጋር ያልተገናኘ። ስክሪፕቱ ሰንሰለቱን ወደ ኋላ በመሄድ መጀመሪያ ግሪፐርን እንዲያስገቡ ይጠይቃል እና መለያ 6 ይሰጠዋል፣ ከዚያም wrist_rollን 5፣ እስከ shoulder_panን 1። ይህንን ከመገጣጠምዎ በፊት ያድርጉት።

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  3. 3
    ሁለቱንም ክንዶች ካሊብሬት ያድርጉ

    እያንዳንዱን መገጣጠሚያ ወደ ክልሉ መሃል ያንቀሳቅሱት፣ አስገባን ይጫኑ፣ ከዚያም እያንዳንዱን በሙሉ ክልሉ ውስጥ ያሽከርክሩት። id የመገለጫ ፋይል ስም ይሆናል።

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_so100_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_so100_leader
  4. 4
    ምንም ነገር ከመቅዳትዎ በፊት ቴሌኦፕሬት ያድርጉ

    ከላይ ለተጠቀሱት ነገሮች ሁሉ የመቀበያ ሙከራ። ቴሌኦፕሬሽን የሚንቀጠቀጥ፣ የተገለበጠ፣ ወይም አንድ መገጣጠሚያ የማይከተል ከሆነ፣ ቀረጻ በ50 ክፍሎች ውስጥ ያንን ይጠብቃል።

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_so100_follower \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_so100_leader \
        --display_data=true
ካሊብሬሽን የት እንደሚቀመጥ እና መለያው ለምን አስፈላጊ እንደሆነ

መገለጫዎች ወደ $HF_LEROBOT_CALIBRATION ይሄዳሉ፣ ነባሪው ~/.cache/huggingface/lerobot/calibration ነው፣ እና መለያው የመፈለጊያ ቁልፍ ነው። ለlerobot-record ካሊብሬት የተደረገ መለያ ይስጡት እና መገለጫውን እንደገና ለመጠቀም አስገባን ወይም እንደገና ለመስራት cን ያቀርባል። ያልታወቀ መለያ ከሰጡት ምንም ፋይል የለም፣ ስለዚህ በክፍለ-ጊዜው መካከል ወደ ካሊብሬሽን ይገባል።

ካሜራዎች ፖሊሲው የሚያየውን ይወስናሉ

bash
lerobot-find-cameras opencv   # or: lerobot-find-cameras realsense

# --- Detected Cameras ---
# Camera #0:
#   Name: OpenCV Camera @ 0
#   Type: OpenCV
#   Id: 0
#   Backend api: AVFOUNDATION
#   Default stream profile:
#     Format: 16.0
#     Width: 1920
#     Height: 1080
#     Fps: 15.0
ይህንን በእያንዳንዱ ክፍለ ጊዜ ያሂዱ፡ ሰነዶቹ እንደሚያስጠነቅቁት እነዚህ መለያዎች እንደ ኦፐሬቲንግ ሲስተሙ ሁኔታ ዳግም ከተጀመረ ወይም እንደገና ከተሰካ በኋላ ሊለወጡ ይችላሉ።

ሁለት እይታዎች፣ እና የት እንደሚቀመጡ አስፈላጊ ነው፡ የስራ ቦታውን የሚሸፍን ቋሚ የትዕይንት ካሜራ፣ እና የእጅ አንጓ ካሜራ ከየመጨረሻ-ተግባሪ አጠገብ ግሪፐሩ ሊነካው ያለውን ነገር የሚያሳይ። የLeRobot የማህበረሰብ-ዳታሴቶች ዝርዝር በተለይ ሁለት እይታዎችን በ480x640 / 720p ወይም የተሻለ፣ የማይንቀሳቀስ ዳራ፣ ገለልተኛ የተረጋጋ ብርሃን፣ እና የመሪው ክንድ እና የሰው እግሮች ከክፈፍ ውጪ እንዲሆኑ ይጠይቃል። የመቅጃ መመሪያው አጠቃላይ መመሪያውን ይጨምራል፡ ስራውን እራስዎ በካሜራ ምስሎች ብቻ በመመልከት ማከናወን መቻል አለብዎት።

የካሜራ ኢንዴክስ የተረጋጋ መለያ አይደለም

የOpenCV ኢንዴክሶች የሚመጡት ከቁጥር ቅደም ተከተል ነው፣ ስለዚህ ዳግም ማስጀመር ወይም እንደገና መሰካት ኢንዴክስ 0 እና 2 ቦታ እንዲቀያየሩ እና የእጅ አንጓ እይታውን ለአንድ ሙሉ ክፍለ ጊዜ ከላይኛው ማስገቢያ ላይ እንዲያስቀምጡ ያደርጋል። lerobot ራሱ እንደሚለው፡ የካሜራው ክፍል የመሳሪያ መንገድን እንዲሁም ኢንቲጀርን ይወስዳል፣ እና ኢንዴክሶች ዳግም በሚጀመሩበት ወይም ወደብ በሚቀየሩበት ጊዜ በተለይም በሊኑክስ ላይ ያልተረጋጉ መሆናቸውን ያስጠነቅቃል። index_or_pathን በ/dev/v4l/by-id/ ስር ወዳለው የudev symlink ያመልክቱ፣ ይህም የመሳሪያውን እንጂ የቁጥር ቅደም ተከተልን አይከተልም። ይህ አንድ ዳታሴት በውስጥ በኩል ወጥነት የሌለው የሚሆንበት በጣም የተለመደ መንገድ ነው፣ እና ስልጠና ሊያስተካክለው አይችልም። ካሜራ አልተገኘም

የመቅጃ ትዕዛዙ እና እያንዳንዱ አማራጭ

bash
HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')

lerobot-record \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_so100_follower \
    --robot.cameras="{ top: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
    --teleop.type=so100_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_so100_leader \
    --display_data=true \
    --dataset.repo_id=${HF_USER}/so100_pick_cube \
    --dataset.single_task="Pick the red cube and drop it in the box" \
    --dataset.num_episodes=50 \
    --dataset.fps=30 \
    --dataset.episode_time_s=25 \
    --dataset.reset_time_s=10 \
    --dataset.streaming_encoding=true \
    --dataset.encoder_threads=2
የካሜራ መዝገበ ቃላት አንድ በሼል የተጠቀሰ ሕብረቁምፊ ነው፤ ውስጠኛው ቅንፍ የሼል አገባብ አይደለም።

ከታች ያሉት ነባሪዎች የመጡት src/lerobot/configs/dataset.py ከዋናው (main) ነው እንጂ ከትምህርት መመሪያ አይደለም። አንዳንዶቹ ሰዎች ከሚያስቡት የተለዩ ናቸው።

አማራጭነባሪየሚያደርገው
--dataset.repo_idemptyስም፤ የጊዜ ማህተም በነባሪነት ይታከላል
--dataset.single_taskemptyከእያንዳንዱ ክፍል ጋር የሚቀመጥ የሥራ ሕብረቁምፊ
--dataset.root$HF_LEROBOT_HOME/repo_idየመጻፊያ መንገድ፣ ነባሪው ~/.cache/huggingface/lerobot/
--dataset.fps30የመቆጣጠሪያ ዑደት ፍጥነት እና የውሂብ ስብስብ የፍሬም ፍጥነት
--dataset.episode_time_s60አንድ ክፍል በራስ-ሰር ከመቀጠሉ በፊት ያሉ ሰከንዶች
--dataset.reset_time_s60የቦታ ዳግም ማስጀመር፤ ክንድ ይንቀሳቀሳል፣ ምንም አይቀመጥም
--dataset.num_episodes50በዚህ ክፍለ ጊዜ የተቀረጹ ክፍሎች
--dataset.push_to_hubtrueበክፍለ ጊዜው መጨረሻ ላይ ይጫናል፤ ሐሰት ከሆነ በአካባቢው ይቆያል
--dataset.streaming_encodingfalse in the dataclass, true in the docs tableበመቅረጽ ጊዜ ኢንኮድ ያደርጋል፤ በግልጽ ያዘጋጁት
--dataset.encoder_queue_maxsize30በእያንዳንዱ ካሜራ የተሸፈኑ ፍሬሞች፣ በ30 fps ~1 ሰከንድ
--dataset.encoder_threadsnull (codec decides)በእያንዳንዱ ኢንኮደር ያሉ ክሮች፤ ቀረጻው ከተቆራረጠ ይቀንሱ
--dataset.no_stampfalserepo_id እንደተጻፈው በትክክል ያቆያል
--resumefalseወደ ነባር የውሂብ ስብስብ ያክላል፤ --dataset.root ያስፈልገዋል
በድንገት አንድ ሰዓት የሚያስከፍሉ ሁለት ባንዲራዎች

የእርስዎ የውሂብ ስብስብ እርስዎ በጻፉት ስም አይጠራም። lerobot የቀን-ሰዓት መለያ ያክላል፣ ስለዚህ so100_pick_cube ወደ so100_pick_cube_20260823_141530 ይቀየራል። ለተረጋጋ ስም --dataset.no_stamp=true ይጠቀሙ። መቀጠል የሚቆጥረው ጭማሪዎችን እንጂ ጠቅላላ ድምርን አይደለም።--resume=true--dataset.num_episodes ተጨማሪ ክፍሎችን ይቆጥራል እና --dataset.root ግዴታ ይሆናል። በ30-ክፍል የውሂብ ስብስብ ላይ 50 ከጠየቁ 80 ያገኛሉ።

በክፍለ ጊዜ ውስጥ የቁልፍ ሰሌዳ ቁጥጥር

  • የቀኝ ቀስት ወይም n: ክፍሉን ወይም ዳግም ማስጀመሪያውን ደረጃ ቀድመው ያጠናቅቁ። ይህ ቁልፍ በብዛት የሚጠቀሙበት ነው፣ ምክንያቱም ንጹህ መያዝ እምብዛም 25 ሰከንዶች ስለማይፈልግ።
  • የግራ ቀስት ወይም r: ክፍሉን ይጣሉ እና እንደገና ያድርጉት። መጥፎ ሙከራ አሁን ምንም አያስከፍልም፣ በኋላ ግን ብዙ ያስከፍላል።
  • Escape ወይም q: ክፍለ ጊዜውን ያቁሙ፣ ኢንኮዲንግ ይጨርሱ፣ ይስቀሉ።
  • እነዚህ በX11፣ Wayland እና headless SSH ላይ ይሰራሉ፡ ምንም ዓለም አቀፍ የቁልፍ ባክኤንድ ከሌለ፣ lerobot-record ተመሳሳይ ቁልፎችን ከሚቆጣጠረው ተርሚናል ያነባል። ፊደሎቹ ቀርፋፋ የSSH ግንኙነቶችን ይቋቋማሉ፣ የቀስት ቅደም ተከተሎች በሚከፋፈሉበት ቦታ።
  • የቁልፍ ሰሌዳ ቴሌኦፕሬሽን የተለየ ነው እና ዓለም አቀፍ ባክኤንድ ያስፈልገዋል፡ X11፣ Windows፣ ወይም macOS ከAccessibility ጋር።

ስንት ክፍሎች፣ እና ጥሩ ክፍል ምን እንደሚመስል

የመቅጃው መመሪያ ለመጀመሪያው ተግባር ቢያንስ 50 ክፍሎችን ይጠቁማል፣ በአንድ ነገር ቦታ 10 ያህል። የፖሊሲ ገጾች በአንድ ሞዴል ዝቅተኛውን ይዘረዝራሉ፣ ከዚህ በታች ያለው አሂድ የጂፒዩ ጊዜ ዋጋ የለውም።

ፖሊሲዝቅተኛ ክፍሎችየውሂብ ስብስብ ቅርጸትየጂፒዩ ደረጃበአንድ አሂድ ወጪ
SmolVLA30LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD
ACT50LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD
GR00T N1.750LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
GR00T N1.550LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
Pi0.550LeRobot v3.0A100 80 GB or H100 80 GBabout 4 to 12 USD

የተሻለው ጥያቄ ስንት እና ምን ያህል ነው የሚለው ነው። Data Scaling Laws in Imitation Learning for Robotic Manipulation (ሊን እና ሌሎች፣ 2024) ከ40,000 በላይ ማሳያዎችን ሰብስበው ከ15,000 በላይ እውነተኛ ዓለም አሂዶችን አከናውነዋል። አጠቃላይነት ከቁጥር ጋር በግምት የኃይል-ህግ ግንኙነትን ተከትሏል environments and objects፣ እና በአንድ አካባቢ ወይም ነገር ከተወሰነ ገደብ በላይ፣ ተጨማሪ ማሳያዎች አነስተኛ ውጤት ነበራቸው። በአንድ ቤንች ላይ፡ አንድን ነገር ማንቀሳቀስ፣ መብራቱን መቀየር፣ ኩብ መቀየር፣ እንጂ አንድን ቀረጻ መድገም አይደለም።

መሪ-ተከታይ ቴሌኦፕሬሽን እንደ የውሂብ ምንጭ
ጥቅሞች
  • የቁልፍ ሰሌዳ ወይም የጨዋታ ሰሌዳ በተቃራኒው ሰርቮ ሊባዛ የሚችል ቀጣይነት ያለው የመገጣጠሚያ መንገዶች።
  • ድርጊት እና ሁኔታ የማስተባበሪያ ስምምነትን ይጋራሉ፣ ስለዚህ ፖሊሲው በቀጥታ ሊያዝዘው የሚችል ኢላማ ይማራል።
  • የ25 ሰከንድ ክፍል እና የ10 ሰከንድ ዳግም ማስጀመር በግምት በሰዓት 100 ክፍሎች ነው።
  • ኦፕሬተሩ ተከታዩ ሲቆም ወይም ሲጣበቅ ይሰማዋል፣ ስለዚህ ውሂብ ከመመዝገቡ በፊት ስህተቶች ይወጣሉ።
የሚለዋወጡ ነገሮች
  • ሁለተኛ ክንድ የመለዋወጫ ወጪን በግምት በእጥፍ ይጨምራል።
  • ማሳያዎች ኦፕሬተር ልማዶችን ይወርሳሉ፤ ማንደልካር እና ሌሎች የፖሊሲ ጥራት በማሳያ ጥራት ላይ በእጅጉ እንደሚመሰረት አግኝተዋል።
  • መሪው በሉፕ ፍጥነት ስለሚወሰድ፣ ለአፍታ ማቆም ፖሊሲው እንዲጠብቅ የሚያስተምሩ ተመሳሳይ ረድፎች ይሆናሉ።
  • በክፍለ-ጊዜዎች መካከል ወጥነትን የሚያስገድድ ምንም ነገር የለም፡ 5 ሴ.ሜ የተገፋ ካሜራ የተደበቀ የስርጭት ለውጥ ነው።

ጥሩ ክፍል አሰልቺ ነው፡ ተደጋጋሚ የመነሻ አቀማመጥ፣ አንድ ነገር የተሰራ፣ እቃው በቆሻሻ መጣያ ውስጥ ከገባ በኋላ ያበቃ፣ የፍተሻ ዝርዝሩ በሚመክረው ከ25 እስከ 50 ቁምፊዎች ውስጥ ያለ የሥራ ሕብረቁምፊ። Pick the red cube and drop it in the box የሥራ ሕብረቁምፊ ነው፤ task1 የፍተሻ ዝርዝሩ በግልጽ የሰየመው የተሳሳተ አሠራር ነው። ግልጽ ያልሆኑ ማብራሪያዎች የችግሮቹን ዝርዝር ይመራሉ፣ እና እነሱ በጣም አስፈላጊ የሆኑት ለ የእይታ-ቋንቋ-ድርጊት ሞዴሎች፣ ሕብረቁምፊው የሞዴል ግብዓት እንጂ የፋይል ስም ያልሆነበት።

የውሂብ ስብስብን በጸጥታ የሚያበላሹ ጉድለቶች

አንዳቸውም ልዩ ሁኔታን አይጥሉም። ሁሉም ወደ ስልጠና ይተርፋሉ፣ ጥሩ የሚመስል የኪሳራ ኩርባ እና ምንም የማያደርግ ሮቦት ሆነው ይታያሉ። ትዕይንቱ ሲዘጋጅ ያረጋግጡ።

ጉድለትእንዴት እንደሚታይከየት እንደሚመጣእንዴት እንደሚገኝ
የተቀያየሩ የካሜራ እይታዎችየእጅ አንጓ ምስል ከላይኛው ቁልፍ ስርእንደገና ከተሰካ በኋላ የመረጃ ጠቋሚ ዳግም ምደባlerobot-find-cameras በእያንዳንዱ ክፍለ ጊዜ; by-id paths
የቀዘቀዙ ፍሬሞችለአስርዎች ረድፎች ተመሳሳይ ምስልካሜራ ማቅረብ ያቆማል; ዑደቱ የመጨረሻውን ፍሬም ይደግማልበ lerobot-dataset-viz ውስጥ ያረጋግጡት
የተጣሉ ፍሬሞችየረድፍ ብዛት ከ fps ጊዜ ሰከንዶች በታችወረፋው ይሞላል፣ ከመዝጋት ይልቅ ይጥላልበሎግ ውስጥ 'Encoder queue full'; ረድፎች ከ fps ጊዜ ቆይታ ጋር
መገጣጠሚያው በገደቡ ላይአንድ መገጣጠሚያ በትንሹ ወይም በከፍተኛው ጠፍጣፋየመሪው ክልል የተከታዩን ይበልጣል፣ ወይም መጥፎ መካከለኛ አቀማመጥበእያንዳንዱ መገጣጠሚያ ዝቅተኛ/ከፍተኛ በ ds.meta.stats ውስጥ; lerobot-find-joint-limits አስቀድሞ
ምስል እና ድርጊት ያልተመጣጠኑፖሊሲው አስቀድሞ ይገምታል ወይም ይዘገያልካሜራዎች ከዑደቱ የተለየ fps ላይእያንዳንዱን ካሜራ በ --dataset.fps ያቆዩ
የሞተ ጊዜተመሳሳይ የድርጊት ረድፎች ረጅም ሩጫዎችኦፕሬተሩ መቅጃው እየሰራ እያለ ቆሟልተከታታይ ተመሳሳይ የድርጊት ረድፎች ድርሻ
የማይጠቅም የሥራ ሕብረቁምፊtask1, demo2, testበፍጥነት መተየብmeta/tasks.parquet በ v3.0 (በ v2.1 meta/tasks.jsonl ነበር); በ lerobot-edit-dataset modify_tasks ያስተካክሉ
የተጣሉ ፍሬሞች ራሳቸውን ይደብቃሉ

ኢንኮደሩ ለእያንዳንዱ ካሜራ የተወሰነ ወረፋ ይይዛል፣ በነባሪነት 30 ፍሬሞች። መከታተል በማይችልበት ጊዜ፣ ፍሬሞች ከመታገድ ይልቅ ይጣላሉ: ቀረጻ ይቀጥላል እና ምንም አይበላሽም። Encoder queue full for {camera}, dropped N frame(s) የሚል መልእክት እና በእያንዳንዱ ካሜራ የተጣሉ ፍሬሞች ጠቅላላ ቁጥር በትዕይንቱ መጨረሻ ላይ ያገኛሉ። የለሮቦት ገደብ: ወደ 5 በመቶ የሚጠጉ የጎደሉ ፍሬሞች ስርዓቱ ከመጠን በላይ መጫኑን ያመለክታሉ፣ 2 በመቶ የሚጠበቀው የመነሻ ጭነት ነው። የመፍትሄ ሃሳቦች በቅደም ተከተል: --display_data=false, --dataset.encoder_threads መቀነስ, vcodec=h264, ዥረት ማጥፋት።

አንድ ማስጠንቀቂያ: የዥረት-ኢንኮዲንግ መመሪያ ሰንጠረዥ ነባሪውን እንደ True, ዋናው ላይ ያለው የዳታክላስ ግን streaming_encoding: bool = False. ሰነዶች እና ኮድ አይስማሙም፣ ስለዚህ በግልጽ ያዋቅሩት፤ ለሮቦት ባንዲራው ሲጠፋ በጀመረ ቁጥር የሚመክረውን ፍንጭ ይመዘግባል።

ጂፒዩ ከመከራየትዎ በፊት የውሂብ ስብስቡን ያረጋግጡ

ከሰነዶቹ የተገኘው የመቀበያ ሙከራ: የቪዲዮውን ቆይታ ከCLI ከዘገበው የትዕይንት ቆይታ ጋር ያወዳድሩ፣ እና የረድፎች ብዛት ከfps ጊዜ ቆይታ ጋር እኩል መሆኑን ያረጋግጡ። በእያንዳንዱ ትዕይንት እንጂ በጠቅላላው አይደለም።

python
from lerobot.datasets import LeRobotDataset

ds = LeRobotDataset("your-user/so100_pick_cube_20260823_141530")
print("fps:", ds.fps, "frames:", ds.num_frames)

# In v3.0 the per-episode records live in meta/episodes/ as chunked parquet:
# lengths, tasks and offsets into the shared parquet and mp4 shards.
# They load through the datasets stack, so this is a datasets.Dataset --
# use .column_names and integer indexing, not pandas .columns / .head().
eps = ds.meta.episodes
print(eps.column_names)
print(eps[0])

# Global feature statistics, including per-joint min and max.
# A joint whose min equals its max never moved. A joint sitting at a
# hard limit for most of the run is the one that will stall the policy.
print(ds.meta.stats["observation.state"])
የፍሬም ፍጥነት (fps) እና የቆይታ ጊዜ (duration) ከሚጠበቀው እጅግ የራቀ ክፍል (episode) ለመሰረዝ እንጂ ለማሰልጠን ተስማሚ አይደለም።

ከዚያ ይመልከቱት። lerobot-dataset-viz በRerun ወይም Foxglove ውስጥ የካሜራ እይታዎች አጠገብ የመገጣጠሚያ ምልክቶችን (joint traces) በማሳየት አንድን ክፍል ፍሬም በፍሬም ይደግማል። የተቀያየሩ ካሜራዎች እና የቀዘቀዙ ፍሬሞች በአስር ሰከንዶች ውስጥ ይታያሉ። ሰዎች ይህንን ደረጃ ይዘላሉ።

bash
# Replay one episode with camera views and joint traces
lerobot-dataset-viz \
    --repo-id your-user/so100_pick_cube_20260823_141530 \
    --episode-index 0

# Foxglove instead, for a seekable, scrubbable timeline
lerobot-dataset-viz \
    --repo-id your-user/so100_pick_cube_20260823_141530 \
    --episode-index 0 \
    --display-mode foxglove

# Drop the episodes that did not survive review
lerobot-edit-dataset \
    --repo_id your-user/so100_pick_cube_20260823_141530 \
    --new_repo_id your-user/so100_pick_cube_clean \
    --operation.type delete_episodes \
    --operation.episode_indices "[3, 17, 41]"
lerobot-edit-dataset በተጨማሪም መከፋፈል (split)፣ ማዋሃድ (merge)፣ ባህሪን ማስወገድ (remove_feature)፣ ተግባራትን ማሻሻል (modify_tasks) እና ስታቲስቲክስን እንደገና ማስላት (stats recomputation) ያከናውናል። በልግስና ይሰርዙ፡ አንድ መጥፎ ክፍል አንድ ክፍል ያስከፍላል፤ ማቆየት ግን በእሱ ላይ የሰለጠነውን እያንዳንዱን ሩጫ ያስከፍላል።
የAY-Robots የውሂብ ስብስብ ማውጫ የህዝብ LeRobot የውሂብ ስብስቦችን ከክፍል ብዛት እና ቅርጸቶች ጋር ይዘረዝራል።
ተመጣጣኝ የውሂብ ስብስቦች እንዴት እንደሚመዘኑ እና እንደሚሰየሙ።

v2.1 ወይም v3.0: ከመቅረጽዎ በፊት ይወስኑ

v2.1 ለእያንዳንዱ ክፍል አንድ ፓርኬት እና አንድ MP4 ይጽፍ ነበር። v3.0 ብዙ ክፍሎችን ወደ ተጋሩ ሻርዶች ያዋህዳል እና ድንበሮችን ከሜታዳታ እንደገና ይገነባል፣ ስለዚህ info.json እንደ data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet ክፍል ቁጥር ከመያዝ ይልቅ የመንገድ አብነቶችን ይይዛል። የዚህ ዋናው ምክንያት ጥቂት፣ ትላልቅ ፋይሎች መኖራቸው ነው፡ ፈጣን ማስጀመሪያ እና በትልቅ ደረጃ አነስተኛ የፋይል ስርዓት ግፊት።

LeRobot v2.1LeRobot v3.0
አቀማመጥለእያንዳንዱ ክፍል አንድ ፓርኬት እና አንድ MP4በእያንዳንዱ ሻርድ ብዙ ክፍሎች
የክፍል ሜታዳታJSONL ፋይሎችበ meta/episodes/ ስር የተከፋፈለ ፓርኬት፣ በ datasets stack በኩል
ከ Hub መልቀቅአይአዎ፣ በ StreamingLeRobotDataset በኩል
በ lerobot 0.6.1 የተጻፈአይአዎ፣ ዛሬ የሚያገኙት
በ GR00T N1.7 እና N1.5 የሚነበብአዎአይ፣ ወደ ታች መቀየር አለበት
ዛሬ መቅረጽ፣ ነገ GR00T ማሰልጠን

lerobot 0.6.1 v3.0 ይጽፋል፣ ነገር ግን GR00T N1.7 እና N1.5 v2.0 ወይም v2.1 ያነባሉ እና በእሱ ላይ ይበላሻሉ። የጉዞውን አቅጣጫ ልብ ይበሉ፡ src/lerobot/scripts/ convert_dataset_v21_to_v30.py ይዟል እንጂ ወደ ሌላ አቅጣጫ የሚሄድ ምንም ነገር የለም። ከክፍለ ጊዜው በፊት ይህንን ይፍቱ። መፍትሄ፡ የውሂብ ስብስብ እንደ v3 ውድቅ ተደርጓል

bash
# Upgrade an older v2.1 dataset to v3.0
python -m lerobot.scripts.convert_dataset_v21_to_v30 \
    --repo-id=your-user/so100_pick_cube

# By default it pushes the converted dataset back to the hub and tags it v3.0.
# To convert a local copy and keep it off the hub:
python -m lerobot.scripts.convert_dataset_v21_to_v30 \
    --repo-id=your-user/so100_pick_cube \
    --root=/path/to/dataset/directory \
    --push-to-hub=false
ለ50 ክፍሎች ፈጣን ነው። መጠን የተለየ ሥራ ነው: የሌሮቦት ወደብ መመሪያ፣ ጥሬ DROIDን ወደ v3.0 ለማስገባት፣ ከ7+ ቀናት የአካባቢ ሂደት እና ወደ 400 ጊባ በጀት ያወጣል።

ወደ አንድ አይነት የውሂብ ስብስብ የሚወስዱ ሁለት መንገዶች

ከላይ ያለው ሁሉ፣ በእራስዎ ማሽን ላይ: የዩኤስቢ ዝርዝርን፣ የffmpeg ግንባታን፣ ኢንኮደር ማስተካከያን እና የመለኪያ ፋይሎችን እርስዎ ይቆጣጠራሉ። የቧንቧ መስመርን ለመረዳት፣ ያልተለመደ የካሜራ መሳሪያ ለማስኬድ ወይም መረጃን በአካባቢው ለማስቀመጥ ትክክለኛው መንገድ።

ይህ መንገድ የሚያስከፍለው

ጊዜ: ለእያንዳንዱ ክንድ ለመገጣጠም አንድ ምሽት፣ አስቸጋሪ የመጀመሪያ መለኪያ፣ እና ካሜራ በተሳሳተ ማስገቢያ ውስጥ ስለነበረ የሚጥሉት የመጀመሪያ ክፍለ ጊዜ።

የሌሮቦት የውሂብ ስብስቦችን የቧንቧ መስመር እራስዎ ሳያገናኙ ይመዝግቡ

የAY-Robots ዴስክቶፕ ደንበኛ ክፍሎችን፣ የካሜራ ዥረቶችን እና የመገጣጠሚያ ሁኔታዎችን በሌሮቦት ቅርጸት ከቴሌኦፕሬሽን ክፍለ ጊዜ ይመዘግባል፣ ከዚያም የውሂብ ስብስቡን ለአሰልጣኙ ያስረክባል።

የዴስክቶፕ ደንበኛውን ያግኙ

ከውሂብ ስብስብ ወደ ፖሊሲ

ሃምሳ ንጹህ ክፍሎች እዚህ የሚሰራውን እያንዳንዱን ይመገባሉ። በእርስዎ ተግባር ላይ ብቻ ከባዶ ያሰለጥናል፣ በግምት 80 M መለኪያዎች በአንድ የድርጊት እርምጃ 20 ms ያህል፣ ከፈጣን እንቅስቃሴ ጋር ምቹ ከሆኑት አምስቱ ውስጥ ብቸኛው ነው። በ24 ጂቢ ካርድ ላይ ወደ 450 M መለኪያዎች አለው። ወደ 3 B መለኪያዎች ያለው መሰረታዊ ሞዴል ሲሆን ወደ 40 M መለኪያዎች ይነካል፣ A100 ወይም H100 ያስፈልገዋል፣ እና ያንን v2.1 የውሂብ ስብስብ ይፈልጋል።

በመቀጠል፣ ለጥምረትዎ መመሪያው፡ ፣ ወይም ፤ ለመጀመሪያ ጊዜ ለመስራት፣ አጭር ነው። ፖሊሲው በቤንች ላይ ሲሰራ ነገር ግን ጠረጴዛውን እንዳንቀሳቀሱት ሲበላሽ፣ ያ የውሂብ ችግር ነው፡ እና በልዩነት ላይ በጥልቀት ይሄዳሉ።

ለመጀመሪያ ጊዜ ለሚሰራ ፖሊሲ በእርግጥ ስንት ክፍሎች ያስፈልጉኛል?

ለSmolVLA ሰላሳ፣ ለACT፣ Pi0.5፣ GR00T N1.5 እና N1.7 ሃምሳ፣ የAY-Robots አሰልጣኞች የሚያስገድዱት ዝቅተኛው። የLeRobot መመሪያ ለመጀመሪያ ተግባር ቢያንስ 50፣ ለእያንዳንዱ ነገር ቦታ ደግሞ 10 ያህል ይመክራል። የውሂብ-መጠን ስራ አጠቃላይነት ከማሳያ ብዛት ይልቅ ከአካባቢዎች እና ከነገሮች ጋር እንደሚመጣጠን አረጋግጧል፣ ስለዚህ የአንድ ትዕይንት መቶ ቀረጻ በአምስት ቦታዎች ላይ ከሃምሳ የከፋ ነው።

መሪ ክንድ ያስፈልገኛል ወይስ በቁልፍ ሰሌዳ መቆጣጠር እችላለሁ?

lerobot የቁልፍ ሰሌዳ እና የጨዋታ ሰሌዳ ቴሌኦፕሬተሮችን ይልካል፣ ስለዚህ መሪ ክንድ በጥብቅ አያስፈልግም፣ ግን በጣም ተመራጭ ነው፡ መሪ-ተከታይ በተቀዳው ድርጊት መጋጠሚያ ስምምነት ውስጥ ቀጣይነት ያለው የመገጣጠሚያ አቅጣጫዎችን ይሰጣል፣ የቁልፍ ሰሌዳ ግብዓት ግን ፖሊሲው እንደ መንቀጥቀጥ የሚማረውን ደረጃ በደረጃ እንቅስቃሴ ያመነጫል። የቁልፍ ሰሌዳ ቴሌኦፕሬሽን ዓለም አቀፍ የቁልፍ ባክኤንድም ያስፈልገዋል፣ ስለዚህ በWayland እና headless ላይ አይሰራም።

በRaspberry Pi ወይም በትንሽ ሚኒ ፒሲ ላይ መቅዳት እችላለሁ?

አዎ፣ በማስተካከል (tuning)። የዥረት-ኢንኮዲንግ መመሪያው ዘመናዊ 4-ኮር ማሽኖችን እና Raspberry Pi 5ን የሚሸፍን ዝቅተኛ-ሀብት ቅንፍ አለው፣ እና ሁለት ካሜራዎችን በ640x480 እና 30 fps በሚጠይቀው-አንዳንድ-ማስተካከያ አምድ ውስጥ ያስቀምጣል። ምክሩ፡ ኢንኮደሩ ከቀረጻው ዑደት ጋር እንዳይወዳደር ያቁሙ፣ በ --dataset.rgb_encoder.vcodec=h264 እና --dataset.streaming_encoding=false። ሁለት ካሜራዎችን በ640x480 በሰከንድ ወደ 55 ሚሊዮን ፒክሰሎች እና ሁለት በ1920x1080 ወደ 373 ሚሊዮን ያህል ይገምታል።

የቀዳሁት የውሂብ ስብስብ በእርግጥ ጤናማ መሆኑን እንዴት አውቃለሁ?

ሶስት ቀላል ፍተሻዎች። የእያንዳንዱን ክፍል የቪዲዮ ቆይታ CLI ከዘገበው ቆይታ ጋር ያነጻጽሩ እና የረድፍ ብዛት ከfps ጊዜያት ጋር እኩል መሆኑን ያረጋግጡ፣ በአጠቃላይ ሳይሆን ለእያንዳንዱ ክፍል፤ ያ lerobot's encoding guide የሚሰጠው የመቀበያ ፈተና ነው። ds.meta.statsን ያንብቡ፣ ዝቅተኛው ከከፍተኛው ጋር እኩል የሆነ መገጣጠሚያ በጭራሽ አልተንቀሳቀሰም። ከዚያም ሁለት ወይም ሶስት ክፍሎችን በlerobot-dataset-viz ውስጥ መልሰው ያጫውቱ፣ የተቀያየሩ እይታዎች እና የቀዘቀዙ ፍሬሞች የሚታዩበት ብቸኛው መንገድ። በተጣሉ ፍሬሞች ላይ መመሪያው መስመሩን በግምት 5 በመቶ የጎደለ ይስላል፤ ወደ 2 በመቶ የሚሆነው የተለመደ ጊዜያዊ ጭነት ነው፣ ብዙውን ጊዜ ገና ሲጀመር።

የማሰልጠኛ ስራዬ የውሂብ ስብስቡን እንደ v3.0 ውድቅ አደረገው። አሁን ምን?

GR00T N1.7 እና N1.5 LeRobot v2.0 ወይም v2.1ን ያነባሉ እና በv3.0 ላይ ይበላሻሉ፣ ይህም lerobot 0.6.1 የሚቀዳው ነው። ከማሰልጠንዎ በፊት ቅርጸቱን ያረጋግጡ፣ ወይም v3.0ን በአፍ መፍቻ ቋንቋ የሚያነብ ፖሊሲ ይጠቀሙ፡ Pi0.5፣ SmolVLA ወይም ACT። lerobot v2.1 ወደ v3.0 መቀየሪያ ይልካል እና በተቃራኒው ምንም የለም።

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started