انتقل إلى المحتوى الرئيسي

واجهة برمجة تطبيقات NetworkTables

يتميز نظام تشغيل Limelight بعميل NetworkTables 4. يتصل تلقائيًا بخادم NetworkTables 4 الذي يعمل على روبوتات FRC بناءً على رقم الفريق / المعرف المكون في واجهة مستخدم الإعدادات.

يتم نشر جميع البيانات في جدول يطابق اسم الجهاز (مثل "limelight"). إذا تم تعيين اسم مضيف / لقب لكاميرتك، فسيطابق اسم الجدول الاسم الكامل لـ Limelight (مثل "limelight-top").

تتفاعل LimelightLib WPIJava و LimelightLib WPICPP مع أجهزة Limelight عبر NetworkTables.

بيانات الاستهداف الأساسية

استخدم الكود التالي:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDouble(0);

لاسترجاع هذه البيانات:

المفتاحالنوعالوصف
tvint1 إذا كان هناك هدف صالح. 0 إذا لم يكن هناك أهداف صالحة
txdoubleالإزاحة الأفقية من العلامة المتقاطعة إلى الهدف (LL1: -27 درجة إلى 27 درجة / LL2: -29.8 إلى 29.8 درجة)
tydoubleالإزاحة الرأسية من العلامة المتقاطعة إلى الهدف (LL1: -20.5 درجة إلى 20.5 درجة / LL2: -24.85 إلى 24.85 درجة)
txncdoubleالإزاحة الأفقية من البكسل الرئيسي إلى الهدف (بالدرجات)
tyncdoubleالإزاحة الرأسية من البكسل الرئيسي إلى الهدف (بالدرجات)
tadoubleمساحة الهدف (0% من الصورة إلى 100% من الصورة)
tldoubleمساهمة تأخير خط الأنابيب (بالملي ثانية). أضف إلى "cl" للحصول على إجمالي التأخير.
cldoubleتأخير التقاط خط الأنابيب (بالملي ثانية). الوقت بين نهاية تعريض الصف الأوسط للمستشعر وبداية خط أنابيب التتبع.
t2ddoubleمصفوفة تحتوي على عدة قيم لإحصائيات الطوابع الزمنية المتطابقة: [صلاحية الهدف، عدد الأهداف، تأخير الهدف، تأخير الالتقاط، tx، ty، txnc، tync، ta، tid، مؤشر فئة الهدف للكاشف، مؤشر فئة الهدف للمصنف، بكسلات الجانب الطويل للهدف، بكسلات الجانب القصير للهدف، بكسلات الامتداد الأفقي للهدف، بكسلات الامتداد الرأسي للهدف، درجة انحراف الهدف]
getpipeintمؤشر خط الأنابيب النشط الحقيقي للكاميرا (0 .. 9)
getpipetypestringنوع خط الأنابيب مثل "pipe_color"
jsonstringتفريغ JSON كامل لنتائج الاستهداف. يجب تمكينه لكل خط أنابيب في علامة التبويب 'الإخراج'
tclassstringاسم فئة نتيجة الكاشف العصبي الأساسي أو نتيجة المصنف العصبي
tcdoubleArrayالحصول على متوسط لون HSV تحت منطقة العلامة المتقاطعة (منطقة 3×3 بكسل) كمصفوفة أرقام
hbdoubleقيمة نبض القلب. تزداد مرة واحدة لكل إطار، تعيد التعيين عند 2 مليار
hwdoubleArrayمقاييس الأجهزة [fps، درجة حرارة وحدة المعالجة المركزية، استخدام الذاكرة العشوائية، درجة الحرارة]
crosshairsdoubleArrayالعلامات المتقاطعة ثنائية الأبعاد [cx0، cy0، cx1، cy1]
tcclassstringاسم الفئة المحسوبة لخط أنابيب التصنيف
tdclassstringاسم الكشف الأساسي لخط أنابيب الكاشف

AprilTag وبيانات ثلاثية الأبعاد

استخدم الكود التالي:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDoubleArray(new double[6]);

لاسترجاع هذه البيانات:

المفتاحالنوعالوصف
botposedoubleArrayتحويل الروبوت في فضاء الملعب. الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة)
botpose_wpibluedoubleArrayتحويل الروبوت في فضاء الملعب (أصل WPILIB لمحطة القيادة الزرقاء). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة)
botpose_wpireddoubleArrayتحويل الروبوت في فضاء الملعب (أصل WPILIB لمحطة القيادة الحمراء). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة)
botpose_orbdoubleArrayتحويل الروبوت في فضاء الملعب (Megatag2). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة)
botpose_orb_wpibluedoubleArrayتحويل الروبوت في فضاء الملعب (Megatag2) (أصل WPILIB لمحطة القيادة الزرقاء). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة)
botpose_orb_wpireddoubleArrayتحويل الروبوت في فضاء الملعب (Megatag2) (أصل WPILIB لمحطة القيادة الحمراء). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة)
camerapose_targetspacedoubleArrayالتحويل ثلاثي الأبعاد للكاميرا في نظام إحداثيات AprilTag الرئيسي المرئي (مصفوفة (6)) [tx, ty, tz, الميل، الانعراج، الانحدار] (بالأمتار والدرجات)
targetpose_cameraspacedoubleArrayالتحويل ثلاثي الأبعاد لـ AprilTag الرئيسي المرئي في نظام إحداثيات الكاميرا (مصفوفة (6)) [tx, ty, tz, الميل، الانعراج، الانحدار] (بالأمتار والدرجات)
targetpose_robotspacedoubleArrayالتحويل ثلاثي الأبعاد لـ AprilTag الرئيسي المرئي في نظام إحداثيات الروبوت (مصفوفة (6)) [tx, ty, tz, الميل، الانعراج، الانحدار] (بالأمتار والدرجات)
botpose_targetspacedoubleArrayالتحويل ثلاثي الأبعاد للروبوت في نظام إحداثيات AprilTag الرئيسي المرئي (مصفوفة (6)) [tx, ty, tz, الميل، الانعراج، الانحدار] (بالأمتار والدرجات)
camerapose_robotspacedoubleArrayالتحويل ثلاثي الأبعاد للكاميرا في نظام إحداثيات الروبوت (مصفوفة (6))
tidintمعرف AprilTag الرئيسي المرئي
camerapose_robotspace_setdoubleArrayتعيين وضع الكاميرا في نظام إحداثيات الروبوت.
priorityidintتعيين المعرف المطلوب لاستهداف tx/ty. تجاهل الأهداف الأخرى. لا يؤثر على تحديد الموقع
robot_orientation_setdoubleArrayتعيين اتجاه الروبوت والسرعات الزاوية بالدرجات والدرجات في الثانية [الانعراج، معدل الانعراج، الميل، معدل الميل، الانحدار، معدل الانحدار]
fiducial_id_filters_setdoubleArrayتجاوز معرفات fiducial الصالحة لتحديد الموقع (مصفوفة)
fiducial_offset_setdoubleArrayتعيين إزاحة نقطة الاهتمام ثلاثية الأبعاد [x,y,z]

التحكم في الكاميرا

استخدم الكود التالي:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").setNumber(<value>);

لتعيين هذه البيانات:

ledModeيحدد حالة مصباح LED للايم لايت
[0]استخدام وضع LED المحدد في خط الأنابيب الحالي
[1]إجبار الإيقاف
[2]إجبار الوميض
[3]إجبار التشغيل
pipelineيحدد خط الأنابيب الحالي للايم لايت
0 .. 9اختيار خط الأنابيب 0..9
streamيحدد وضع البث للايم لايت
0قياسي - بث جنبًا إلى جنب إذا كانت كاميرا ويب متصلة بـ Limelight
1PiP رئيسي - يتم وضع بث الكاميرا الثانوية في الزاوية السفلية اليمنى من بث الكاميرا الأساسية
2PiP ثانوي - يتم وضع بث الكاميرا الأساسية في الزاوية السفلية اليمنى من بث الكاميرا الثانوية
crop(مصفوفة) يحدد مستطيل القص. يجب أن يستخدم خط الأنابيب مستطيل القص الافتراضي في واجهة الويب. يجب أن تحتوي المصفوفة على 4 إدخالات بالضبط.
[0]X0 - الحد الأدنى أو الأقصى لقيمة X لمستطيل القص (-1 إلى 1)
[1]X1 - الحد الأدنى أو الأقصى لقيمة X لمستطيل القص (-1 إلى 1)
[2]Y0 - الحد الأدنى أو الأقصى لقيمة Y لمستطيل القص (-1 إلى 1)
[3]Y1 - الحد الأدنى أو الأقصى لقيمة Y لمستطيل القص (-1 إلى 1)
double[] cropValues = new double[4];
cropValues[0] = -1.0;
cropValues[1] = 1.0;
cropValues[2] = -1.0;
cropValues[3] = 1.0;
NetworkTableInstance.getDefault().getTable("limelight").getEntry("crop").setDoubleArray(cropValues);

بايثون

تسمح نصوص بايثون بتبادل البيانات الواردة والصادرة بشكل اختياري.

llpythonمصفوفة أرقام يتم إرسالها بواسطة نصوص بايثون. يمكن الوصول إليها داخل كود الروبوت.
llrobotمصفوفة أرقام يتم إرسالها بواسطة الروبوت. يمكن الوصول إليها داخل نصوص SnapScripts في بايثون.

البيانات الخام

الزوايا:

قم بتمكين "إرسال الحدود" في علامة التبويب "الإخراج" لبث إحداثيات الزوايا:

tcornxyمصفوفة أرقام لإحداثيات الزوايا [x0,y0,x1,y1......]

الأهداف الخام:

يقوم Limelight بنشر ثلاثة حدود خام إلى NetworkTables غير متأثرة بوضع التجميع الخاص بك. أي أنها تتم تصفيتها باستخدام معلمات خط الأنابيب الخاص بك، ولكن لا يتم تجميعها أبدًا. يتم إرجاع X و Y في مساحة الشاشة المعيارية (-1 إلى 1) بدلاً من الدرجات.

rawtargets[txnc,tync,ta,txnc2,tync2,ta2....]

العلامات المرجعية الخام:

احصل على جميع العلامات المرجعية الصالحة (غير المفلترة)

rawfiducials [id, txnc, tync, ta, distToCamera, distToRobot, ambiguity, id2.....]

الاكتشافات الخام:

احصل على جميع نتائج الاكتشاف العصبي الصالحة (غير المفلترة)

rawfiducials [id, txnc, tync, ta, corner0x, corner0y, corner1x, corner1y, corner2x, corner2y, corner3x, corner3y, id2.....]

الرموز الشريطية الخام:

احصل على جميع نتائج الرموز الشريطية الصالحة (غير المفلترة)

rawbarcodesمصفوفة نصية لبيانات الرموز الشريطية