قفاز جوكياو اللمسي

جمع البيانات

قم بتسجيل ضغط التلامس جنبًا إلى جنب مع حالة مفصل الروبوت وفيديو الكاميرا. يضيف القفاز طريقة لمسية تلتقطها كم هو صعب يضغط قابض الروبوت - وهي معلومات غير مرئية للرؤية وحدها.

ما يضيفه القفاز إلى مجموعة البيانات الخاصة بك تلتقط مجموعات بيانات التشغيل عن بعد القياسية المواضع المشتركة والسرعات وصور الكاميرا. تؤدي إضافة قفاز Juqiao إلى تسجيل خريطة ضغط مكونة من 64 عقدة بتردد 200 هرتز توضح التوزيع المكاني لقوة الاتصال أثناء كل قبضة. ويمكن للسياسات المدربة على هذه البيانات أن تتعلم كيفية تعديل قوة القبضة، وهو أمر بالغ الأهمية بالنسبة للأشياء الهشة أو القابلة للتشوه.
إعداد الأجهزة

اتصالات النظام

قم بتوصيل جميع الأجهزة قبل بدء تشغيل أي برنامج. القفاز متصل بسلك USB بشكل صارم - ولا يوجد وضع لاسلكي.

ذراع الروبوت + اليد

Orca Hand (مستحسن) أو أي مؤثر نهائي آخر. يتم توصيله عبر محول Feetech USB أو CAN، اعتمادًا على الذراع.

/dev/ttyUSB0 or CAN0

قفاز جوكياو

USB-C لاستضافة جهاز الكمبيوتر. يظهر كمسلسل CDC-ACM. كابل 1.5 متر؛ استخدم امتداد USB إذا لزم الأمر من أجل حرية الحركة.

/dev/ttyACM0

كاميرا المعصم

كاميرا USB أو GigE مثبتة على معصم الروبوت، مما يوفر رؤية تتمحور حول الكائن للتدريب.

/dev/video0 or GigE IP

الكاميرا العلوية

كاميرا مساحة العمل الثابتة لسياق المشهد. قم بالاقتران مع كاميرا المعصم لمجموعات البيانات متعددة العرض.

/dev/video2 or GigE IP

جهاز التشغيل عن بعد

ذراع القائد (SO-101 / OpenArm Leader)، أو وحدة تحكم VR، أو SpaceMouse الذي يقود الروبوت التابع.

منفذ القائد/HID
تسجيل سير العمل

التسجيل خطوة بخطوة

1

ارفع ذراع الروبوت ويده

قم بتشغيل برنامج تشغيل الذراع (وبرنامج تشغيل Orca Hand إن أمكن) في أطراف منفصلة. تحقق من نشر الحالات المشتركة قبل المتابعة.

# Terminal 1: Robot arm (example: OpenArm) ros2 إطلاق منفذ openarm_ros2 openarm.launch.py:=/dev/ttyUSB0 # Terminal 2: Orca Hand (if using Orca Hand end-effector) إطلاق ros2 منفذ orca_ros2 orca_hand.launch.py:=/dev/ttyUSB1 # Verify موضوع ros2 هرتز /joint_states # Should be ~100 Hz الموضوع ros2 هرتز /orca_hand/joint_states # Should be ~100 Hz
2

بدء تشغيل برنامج تشغيل Juqiao Glove

قم بتشغيل عقدة القفاز ROS2. تحقق من تدفق البيانات بتردد 200 هرتز قبل البدء في أي جلسة تسجيل.

# Terminal 3: Juqiao Glove إطلاق ros2 منفذ juqiao_glove_ros2 glove.launch.py:=/dev/ttyACM0 # Verify pressure data is live الموضوع ros2 هرتز /juqiao_glove/tactile_array # Should be ~200 Hz موضوع ros2 echo /juqiao_glove/grasp_region # Should print region strings
3

إطلاق الكاميرات

بدء عقد الكاميرا لوجهات النظر المعصم والعلوية. تأكد من نشر موضوعات الصور بمعدل الإطارات المستهدف (عادةً 30 إطارًا في الثانية).

# Wrist camera (USB) ros2 قم بتشغيل usb_cam usb_cam_node_exe --ros-args -p video_device:=/dev/video0 -p معدل الإطارات:=30.0 # Overhead camera (GigE example) إطلاق ros2 كاميرا_ros2 gige_camera.launch.py ​​IP:=192.168.1.100 # Verify الموضوع ros2 هرتز /wrist_camera/image_raw الموضوع ros2 هرتز /overhead_camera/image_raw
4

تحقق من مزامنة كافة التدفقات

يستخدم قائمة موضوعات ros2 للتأكد من وجود كافة المواضيع المطلوبة. تحقق من الطوابع الزمنية في حدود 20 مللي ثانية عبر الطرائق قبل تسجيل أي حلقات.

قائمة مواضيع ros2 | grep -E "مفصل|ملموس|صورة|فهم" # Expected topics: # /joint_states (arm, ~100 Hz) # /orca_hand/joint_states (hand, ~100 Hz) # /juqiao_glove/tactile_array (glove, ~200 Hz) # /juqiao_glove/grasp_region (glove, ~200 Hz) # /wrist_camera/image_raw (camera, 30 Hz) # /overhead_camera/image_raw (camera, 30 Hz)
5

قم بتسجيل مجموعة بيانات باستخدام LeRobot

استخدم البرنامج النصي لتسجيل LeRobot. ال --موضوع اللمس تضيف العلامة تدفق ضغط القفاز كعمود مجموعة بيانات إلى جانب الحالات والصور المشتركة.

# Record 50 episodes; press Enter to start each, Space to stop بايثون -m lerobot.scripts.record \ --robot-path lerobot/configs/robot/orca_hand.yaml \ --إطارًا في الثانية 30 \ --repo-id $HUGGINGFACE_USER/orca_grasp_tactile \ --tags "قفازات juqiao، اللمس، التلاعب" \ --وقت الإحماء-2 \ --زمن الحلقة 30 \ --إعادة ضبط الوقت-s 5 \ --عدد الحلقات 50 \ --الدفع إلى المحور \ --tactile-topic /juqiao_glove/tactile_array \ --tactile-key tactile_pressures
لا يوجد علم LeRobot --tactile-topic حتى الآن؟ استخدم غلاف المسجل متعدد الوسائط SVRC الذي يتعامل مع المزامنة ومخطط مجموعة البيانات تلقائيًا: نقطة تثبيت مركز الروبوتات[مسجل]
6

مراجعة الحلقات قبل الدفع

أعد تشغيل كل حلقة باستخدام تراكب الخريطة الحرارية للتحقق من جودة البيانات الملموسة قبل الالتزام بـ HuggingFace Hub.

# Replay and overlay heatmap on video بايثون -m roboticscenter.scripts.review_episode \ --مسار مجموعة البيانات ./data/orca_grasp_tactile \ --فهرس الحلقة 0 \ --تراكب اللمس \ --tactile-key tactile_pressures # Discard bad episodes بايثون -م lerobot.scripts.delete_episodes \ --مسار مجموعة البيانات ./data/orca_grasp_tactile \ --الحلقات 3 7 12 # episode indices to discard
7

ادفع إلى HuggingFace Hub

قم بتحميل مجموعة البيانات التي تم التحقق من صحتها. يتم إنشاء بطاقة مجموعة البيانات تلقائيًا بأوصاف الطريقة بما في ذلك اللمس.

Huggingface-cli تسجيل الدخول # first time only بايثون -م lerobot.scripts.push_dataset \ --مسار مجموعة البيانات ./data/orca_grasp_tactile \ --repo-id $HUGGINGFACE_USER/orca_grasp_tactile # Verify upload بايثون -ج" من مجموعات البيانات قم باستيراد Load_dataset ds = Load_dataset('$HUGGINGFACE_USER/orca_grasp_tactile', Split='train') طباعة (ds.column_names) طباعة (ds.features['tactile_pressures']) "
مرجع

مخطط مجموعة البيانات

يحتوي كل إطار في مجموعة البيانات على الأعمدة التالية. يتم تخزين جميع المصفوفات كأعمدة باركيه float32؛ الصور كتسلسلات فيديو MP4.

عمودالشكل / النوعوصف
مراقبة.حالة تعويم32[6] مواضع مفصل ذراع الروبوت (راديان). الفهرس 6 هو فتحة القابض في حالة استخدام ذراع 6-DOF.
مراقبة.hand_state تعويم32[17] مواضع مفصل يد Orca (الراديان)، 17 DOF. حذف إذا لم يكن هناك يد حاذقة. تم تصنيفها حسب الاسم المشترك في البيانات التعريفية.
الملاحظة.tactile_pressures تعويم32[64] Juqiao Glove الضغط الطبيعي لكل عقدة، من 0.0 (بدون اتصال) إلى 1.0 (النطاق الكامل). تم تقليل حجمها بمقدار 200 هرتز لتتناسب مع معدل إطارات الروبوت.
الملاحظة.tactile_pressures_raw يونت16[64] قيم ADC الأولية ذات 16 بت. الحفاظ على إعادة التطبيع بعد إعادة المعايرة. خياري؛ تجاهل تقليل حجم مجموعة البيانات.
مراقبة.grasp_region شارع منطقة الاتصال النشطة الإرشادية: "نخل", "إبهام", "فِهرِس", "وسط", "جرس", "الخنصر"، أو "" (لا يوجد اتصال).
Observation.images.wrist uint8[ح، ث، 3] إطار RGB لكاميرا المعصم بمعدل 30 إطارًا في الثانية، ومخزن كتسلسل فيديو MP4.
Observation.images.overhead uint8[ح، ث، 3] إطار RGB للكاميرا العلوية بمعدل 30 إطارًا في الثانية.
فعل تعويم 32 [6 أو 23] استهدف مواضع المفصل للذراع (6) واليد اختياريًا (17). يعتمد الشكل على ما إذا كانت اليد الماهرة موجودة أم لا.
language_instruction شارع وصف المهمة، على سبيل المثال. "التقط البيضة دون أن تكسرها". تمكين التدريب على السياسات المشروطة باللغة.
الحلقة_index كثافة العمليات رقم الحلقة ضمن مجموعة البيانات.
frame_index كثافة العمليات رقم الإطار داخل الحلقة (0-مفهرس).
الطابع الزمني float64 مرت ثواني منذ بداية الحلقة.

الاختزال عن طريق اللمس

يتدفق القفاز بسرعة 200 هرتز. يعمل الروبوت والكاميرات عادةً بتردد 30-100 هرتز. يقوم المُسجل بمحاذاة الإطارات باستخدام مطابقة الطابع الزمني لأقرب جار. للحفاظ على التدفق اللمسي الكامل بتردد 200 هرتز كمصفوفة منفصلة:

# Store full-rate tactile as a variable-length array per frame بايثون -m roboticscenter.scripts.record \ --وضع اللمس full_rate # default is "matched" (one per robot frame) # This produces a ragged column: observation.tactile_sequence # shape per row: float32[N, 64] where N varies (typically 6-7 frames at 200Hz/30fps)
جودة

قائمة التحقق من جودة الحلقة

قم بمراجعة كل حلقة وفقًا لهذه المعايير قبل تضمينها في مجموعة البيانات الخاصة بك. ومن الممكن أن تؤدي حادثة واحدة سيئة إلى تقديم أنماط ملموسة زائفة تؤدي إلى تدهور التدريب على السياسات.

  • التدفق اللمسي مستمر — ولا توجد فجوات في الإطار يؤكد frame.sequence زيادات دون تخطي. تظهر قطرات الإطار كقيم متكررة في عمود اللمس.
  • خط الأساس عند الراحة قريب من الصفر (<0.03) عند بداية الحلقة (قبل أي اتصال)، يجب أن تقرأ عقدة الضغط الأقصى أقل من 0.03. يشير الانجراف فوق 0.05 في حالة الراحة إلى أن القفاز يحتاج إلى إعادة معايرة.
  • تتوافق أحداث الاتصال مع الفهم المرئي في الفيديو إعادة مع --تراكب اللمس. يجب أن تتزامن ارتفاعات الضغط (العقدة القصوى > 0.4) مع إغلاق القابض المرئي في كاميرا المعصم.
  • منطقة الإمساك متسقة خلال مرحلة الاتصال فهم_منطقة يجب أن يستقر على منطقة واحدة أو منطقتين خلال كل قبضة (على سبيل المثال. "نخل" + "فِهرِس"). تشير المناطق المتغيرة بسرعة إلى عدم محاذاة القفاز أو وجود إشارة صاخبة.
  • زمن وصول القفاز < 20 مللي ثانية بالنسبة لحالة الروبوت قارن بداية الحدث الملموس بارتفاع سرعة القابض. الكمون > 20 مللي ثانية يشير إلى ازدحام لوحة وصل USB - قم بتوصيل القفاز مباشرة بمنفذ USB مضيف.
  • يتوافق تعليم اللغة مع المهمة الموضحة بالنسبة لمجموعات البيانات مكيفة اللغة، تأكد من أن التعليمات التي تم إدخالها في بداية الحلقة تصف بدقة ما أظهره المشغل بالفعل.
  • لا يوجد تداخل في الكابل مع حركة الروبوت يجب ألا يعيق كبل USB بطول 1.5 متر حركات يد المشغل أو يسحب القفاز أثناء الحلقة. استخدم مشبك إدارة الكابلات على الساعد.
التدريب على السياسات

التدريب على الملاحظات اللمسية

عادةً ما تشهد السياسات التي تستهلك المدخلات اللمسية تحسنًا بنسبة 15-30% في المهام الحساسة للاتصال (التعامل مع الأشياء الهشة، وإدخال الأوتاد، وطي القماش) مقارنةً بخطوط الأساس الخاصة بالرؤية فقط.

# ACT policy with tactile observations (SVRC fork adds tactile encoder) بايثون -م lerobot.scripts.train \ --dataset-repo-id $HUGGINGFACE_USER/orca_grasp_tactile \ --قانون السياسة \ --policy.observation_keys \ "الملاحظة. الصور. المعصم" \ "الملاحظة.الصور.العلوية" \ "حالة الملاحظة" \ "الملاحظة.hand_state" \ "الملاحظة.الضغط اللمسي" \ --output-dir مخرجات/act_tactile # The tactile encoder maps float32[64] → latent via a small MLP # No special architecture changes required for ACT or Diffusion Policy
# Diffusion Policy with tactile (identical --observation_keys, different policy flag) بايثون -م lerobot.scripts.train \ --dataset-repo-id $HUGGINGFACE_USER/orca_grasp_tactile \ --نشر السياسات \ --policy.observation_keys \ "الملاحظة. الصور. المعصم" \ "حالة الملاحظة" \ "الملاحظة.الضغط اللمسي" \ --output-dir مخرجات/diffusion_tactile
نصيحة: استئصال اللمس في وقت التقييم يمر الملاحظة.الضغوط_اللمسية = الأصفار(64) أثناء الاستدلال لقياس مدى اعتماد السياسة على اللمس مقابل الرؤية. يحدد هذا ما إذا كانت مهمتك تتطلب اللمس أو ما إذا كانت الرؤية كافية.