واجهة برمجة تطبيقات NetworkTables
يتميز نظام تشغيل Limelight بعميل NetworkTables 4. يتصل تلقائيًا بخادم NetworkTables 4 الذي يعمل على روبوتات FRC بناءً على رقم الفريق / المعرف المكون في واجهة مستخدم الإعدادات.
يتم نشر جميع البيانات في جدول يطابق اسم الجهاز (مثل "limelight"). إذا تم تعيين اسم مضيف / لقب لكاميرتك، فسيطابق اسم الجدول الاسم الكامل لـ Limelight (مثل "limelight-top").
تتفاعل LimelightLib WPIJava و LimelightLib WPICPP مع أجهزة Limelight عبر NetworkTables.
بيانات الاستهداف الأساسية
استخدم الكود التالي:
- Java
- LabView
- C++
- Python
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDouble(0);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->GetNumber("<variablename>",0.0);
NetworkTables.getTable("limelight").getNumber('<variablename>');
لاسترجاع هذه البيانات:
المفتاح | النوع | الوصف |
---|---|---|
tv | int | 1 إذا كان هناك هدف صالح. 0 إذا لم يكن هناك أهداف صالحة |
tx | double | الإزاحة الأفقية من العلامة المتقاطعة إلى الهدف (LL1: -27 درجة إلى 27 درجة / LL2: -29.8 إلى 29.8 درجة) |
ty | double | الإزاحة الرأسية من العلامة المتقاطعة إلى الهدف (LL1: -20.5 درجة إلى 20.5 درجة / LL2: -24.85 إلى 24.85 درجة) |
txnc | double | الإزاحة الأفقية من البكسل الرئيسي إلى الهدف (بالدرجات) |
tync | double | الإزاحة الرأسية من البكسل الرئيسي إلى الهدف (بالدرجات) |
ta | double | مساحة الهدف (0% من الصورة إلى 100% من الصورة) |
tl | double | مساهمة تأخير خط الأنابيب (بالملي ثانية). أضف إلى "cl" للحصول على إجمالي التأخير. |
cl | double | تأخير التقاط خط الأنابيب (بالملي ثانية). الوقت بين نهاية تعريض الصف الأوسط للمستشعر وبداية خط أنابيب التتبع. |
t2d | double | مصفوفة تحتوي على عدة قيم لإحصائيات الطوابع الزمنية المتطابقة: [صلاحية الهدف، عدد الأهداف، تأخير الهدف، تأخير الالتقاط، tx، ty، txnc، tync، ta، tid، مؤشر فئة الهدف للكاشف، مؤشر فئة الهدف للمصنف، بكسلات الجانب الطويل للهدف، بكسلات الجانب القصير للهدف، بكسلات الامتداد الأفقي للهدف، بكسلات الامتداد الرأسي للهدف، درجة انحراف الهدف] |
getpipe | int | مؤشر خط الأنابيب النشط الحقيقي للكاميرا (0 .. 9) |
getpipetype | string | نوع خط الأنابيب مثل "pipe_color" |
json | string | تفريغ JSON كامل لنتائج الاستهداف. يجب تمكينه لكل خط أنابيب في علامة التبويب 'الإخراج' |
tclass | string | اسم فئة نتيجة الكاشف العصبي الأساسي أو نتيجة المصنف العصبي |
tc | doubleArray | الحصول على متوسط لون HSV تحت منطقة العلامة المتقاطعة (منطقة 3×3 بكسل) كمصفوفة أرقام |
hb | double | قيمة نبض القلب. تزداد مرة واحدة لكل إطار، تعيد التعيين عند 2 مليار |
hw | doubleArray | مقاييس الأجهزة [fps، درجة حرارة وحدة المعالجة المركزية، استخدام الذاكرة العشوائية، درجة الحرارة] |
crosshairs | doubleArray | العلامات المتقاطعة ثنائية الأبعاد [cx0، cy0، cx1، cy1] |
tcclass | string | اسم الفئة المحسوبة لخط أنابيب التصنيف |
tdclass | string | اسم الكشف الأساسي لخط أنابيب الكاشف |
AprilTag وبيانات ثلاثية الأبعاد
استخدم الكود التالي:
- Java
- C++
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDoubleArray(new double[6]);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->GetNumberArray("<variablename>",std::vector<double>(6));
لاسترجاع هذه البيانات:
المفتاح | النوع | الوصف |
---|---|---|
botpose | doubleArray | تحويل الروبوت في فضاء الملعب. الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة) |
botpose_wpiblue | doubleArray | تحويل الروبوت في فضاء الملعب (أصل WPILIB لمحطة القيادة الزرقاء). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة) |
botpose_wpired | doubleArray | تحويل الروبوت في فضاء الملعب (أصل WPILIB لمحطة القيادة الحمراء). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة) |
botpose_orb | doubleArray | تحويل الروبوت في فضاء الملعب (Megatag2). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة) |
botpose_orb_wpiblue | doubleArray | تحويل الروبوت في فضاء الملعب (Megatag2) (أصل WPILIB لمحطة القيادة الزرقاء). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة) |
botpose_orb_wpired | doubleArray | تحويل الروبوت في فضاء الملعب (Megatag2) (أ صل WPILIB لمحطة القيادة الحمراء). الإزاحة (X,Y,Z) بالأمتار، الدوران (الانحدار، الميل، الانعراج) بالدرجات، إجمالي زمن الاستجابة (cl+tl)، عدد العلامات، امتداد العلامات، متوسط مسافة العلامات من الكاميرا، متوسط مساحة العلامات (نسبة مئوية من الصورة) |
camerapose_targetspace | doubleArray | التحويل ثلاثي الأبعاد للكاميرا في نظام إحداثيات AprilTag الرئيسي المرئي (مصفوفة (6)) [tx, ty, tz, الميل، الانعراج، الانحدار] (بالأمتار والدرجات) |
targetpose_cameraspace | doubleArray | التحويل ثلاثي الأبعاد لـ AprilTag الرئيسي المرئي في نظام إحداثيات الكاميرا (مصفوفة (6)) [tx, ty, tz, الميل، الانعراج، الانحدار] (بالأمتار والدرجات) |
targetpose_robotspace | doubleArray | التحويل ثلاثي الأبعاد لـ AprilTag الرئيسي المرئي في نظام إحداثيات الروبوت (مصفوفة (6)) [tx, ty, tz, الميل، الانعراج، الانحدار] (بالأمتار والدرجات) |
botpose_targetspace | doubleArray | التحويل ثلاثي الأبعاد للروبوت في نظام إحداثيات AprilTag الرئيسي المرئي (مصفوفة (6)) [tx, ty, tz, الميل، الانعراج، الانحدار] (بالأمتار والدرجات) |
camerapose_robotspace | doubleArray | التحويل ثلاثي الأبعاد للكاميرا في نظام إحداثيات الروبوت (مصفوفة (6)) |
tid | int | معرف AprilTag الرئيسي المرئي |
camerapose_robotspace_set | doubleArray | تعيين وضع الكاميرا في نظام إحداثيات الروبوت. |
priorityid | int | تعيين المعرف المطلوب لاستهداف tx/ty. تجاهل الأهداف الأخرى. لا يؤثر على تحديد الموقع |
robot_orientation_set | doubleArray | تعيين اتجاه الروبوت والسرعات الزاوية بالدرجات والدرجات في الثانية [الانعراج، معدل الانعراج، الميل، معدل الميل، الانحدار، معدل الانحدار] |
fiducial_id_filters_set | doubleArray | تجاوز معرفات fiducial الصالحة لتحديد الموقع (مصفوفة) |
fiducial_offset_set | doubleArray | تعيين إزاحة نقطة الاهتمام ثلاثية الأبعاد [x,y,z] |
التحكم في الكاميرا
استخدم الكود التالي:
- Java
- LabView
- C++
- Python
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").setNumber(<value>);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->PutNumber("<variablename>",<value>);
NetworkTables.getTable("limelight").putNumber('<variablename>',<value>)
لتعيين هذه البيانات:
ledMode | يحدد حالة مصباح LED للايم لايت |
---|---|
[0] | استخدام وضع LED المحدد في خط الأنابيب الحالي |
[1] | إجبار الإيقاف |
[2] | إجبار الوميض |
[3] | إجبار التشغيل |
pipeline | يحدد خط الأنابيب الحالي للايم لايت |
---|---|
0 .. 9 | اختيار خط الأنابيب 0..9 |
stream | يحدد وضع البث للايم لايت |
---|---|
0 | قياسي - بث جنبًا إلى جنب إذا كا نت كاميرا ويب متصلة بـ Limelight |
1 | PiP رئيسي - يتم وضع بث الكاميرا الثانوية في الزاوية السفلية اليمنى من بث الكاميرا الأساسية |
2 | PiP ثانوي - يتم وضع بث الكاميرا الأساسية في الزاوية السفلية اليمنى من بث الكاميرا الثانوية |
crop | (مصفوفة) يحدد مستطيل القص. يجب أن يستخدم خط الأنابيب مستطيل القص الافتراضي في واجهة الويب. يجب أن تحتوي المصفوفة على 4 إدخالات بالضبط. |
---|---|
[0] | X0 - الحد الأدنى أو الأقصى لقيمة X لمستطيل القص (-1 إلى 1) |
[1] | X1 - الحد الأدنى أو الأقصى لقيمة X لمستطيل القص (-1 إلى 1) |
[2] | Y0 - الحد الأدنى أو الأقصى لقيمة Y لمستطيل القص (-1 إلى 1) |
[3] | Y1 - الحد الأدنى أو الأقصى لقيمة Y لمستطيل القص (-1 إلى 1) |
- Java
- C++
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);
wip
بايثون
تسمح نصوص بايثون بتبادل البيانات الواردة والصادرة بشكل اختياري.
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 | مصفوفة نصية لبيانات الرموز الشريطية |