मुख्य कंटेंट तक स्किप करें

नेटवर्कटेबल्स API

लाइमलाइट OS में एक नेटवर्कटेबल्स 4 क्लाइंट है। यह सेटिंग्स UI में कॉन्फ़िगर किए गए टीम नंबर / ID के आधार पर FRC रोबोट्स पर चल रहे नेटवर्कटेबल्स 4 सर्वर से स्वचालित रूप से कनेक्ट होता है।

सभी डेटा एक टेबल में प्रकाशित किया जाता है जो डिवाइस नाम से मेल खाता है (उदाहरण के लिए "limelight")। यदि आपके कैमरे को एक होस्टनेम / उपनाम असाइन किया गया है, तो टेबल का नाम पूरे लाइमलाइट नाम से मेल खाएगा (उदाहरण के लिए "limelight-top")।

LimelightLib WPIJava और LimelightLib WPICPP नेटवर्कटेबल्स के माध्यम से लाइमलाइट डिवाइसों के साथ इंटरैक्ट करते हैं।

मूल लक्ष्यीकरण डेटा

निम्नलिखित कोड का उपयोग करें:

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मिलान-समयांकन आंकड़ों के लिए कई मान वाली सरणी: [targetValid, targetCount, targetLatency, captureLatency, tx, ty, txnc, tync, ta, tid, targetClassIndexDetector, targetClassIndexClassifier, targetLongSidePixels, targetShortSidePixels, targetHorizontalExtentPixels, targetVerticalExtentPixels, targetSkewDegrees]
getpipeintकैमरे का सही सक्रिय पाइपलाइन इंडेक्स (0 .. 9)
getpipetypestringपाइपलाइन प्रकार उदा. "pipe_color"
jsonstringलक्ष्यीकरण परिणामों का पूर्ण JSON डंप। 'आउटपुट' टैब में प्रति-पाइपलाइन सक्षम किया जाना चाहिए
tclassstringप्राथमिक न्यूरल डिटेक्टर परिणाम या न्यूरल वर्गीकरण परिणाम का वर्ग नाम
tcdoubleArrayक्रॉसहेयर क्षेत्र (3x3 पिक्सेल क्षेत्र) के नीचे औसत HSV रंग को NumberArray के रूप में प्राप्त करें
hbdoubleहार्टबीट मान। प्रति फ्रेम एक बार बढ़ता है, 2 अरब पर रीसेट होता है
hwdoubleArrayHW मेट्रिक्स [fps, cpu तापमान, ram उपयोग, तापमान]
crosshairsdoubleArray2D क्रॉसहेयर [cx0, cy0, cx1, cy1]
tcclassstringवर्गीकरण पाइपलाइन के गणना किए गए वर्ग का नाम
tdclassstringडिटेक्टर पाइपलाइन के प्राथमिक पहचान का नाम

AprilTag और 3D डेटा

निम्नलिखित कोड का उपयोग करें:

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फील्ड-स्पेस में रोबोट ट्रांसफॉर्म (मेगाटैग2)। स्थानांतरण (X,Y,Z) मीटर में, रोटेशन (रोल, पिच, यॉ) डिग्री में, कुल विलंबता (cl+tl), टैग गणना, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग क्षेत्र (छवि का प्रतिशत)
botpose_orb_wpibluedoubleArrayफील्ड-स्पेस में रोबोट ट्रांसफॉर्म (मेगाटैग2) (नीला ड्राइवरस्टेशन WPILIB मूल)। स्थानांतरण (X,Y,Z) मीटर में, रोटेशन (रोल, पिच, यॉ) डिग्री में, कुल विलंबता (cl+tl), टैग गणना, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग क्षेत्र (छवि का प्रतिशत)
botpose_orb_wpireddoubleArrayफील्ड-स्पेस में रोबोट ट्रांसफॉर्म (मेगाटैग2) (लाल ड्राइवरस्टेशन WPILIB मूल)। स्थानांतरण (X,Y,Z) मीटर में, रोटेशन (रोल, पिच, यॉ) डिग्री में, कुल विलंबता (cl+tl), टैग गणना, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग क्षेत्र (छवि का प्रतिशत)
camerapose_targetspacedoubleArrayप्राथमिक दृश्य में AprilTag के निर्देशांक प्रणाली में कैमरे का 3D ट्रांसफॉर्म (सरणी (6)) [tx, ty, tz, पिच, यॉ, रोल] (मीटर, डिग्री)
targetpose_cameraspacedoubleArrayकैमरे के निर्देशांक प्रणाली में प्राथमिक दृश्य में AprilTag का 3D ट्रांसफॉर्म (सरणी (6)) [tx, ty, tz, पिच, यॉ, रोल] (मीटर, डिग्री)
targetpose_robotspacedoubleArrayरोबोट के निर्देशांक प्रणाली में प्राथमिक दृश्य में AprilTag का 3D ट्रांसफॉर्म (सरणी (6)) [tx, ty, tz, पिच, यॉ, रोल] (मीटर, डिग्री)
botpose_targetspacedoubleArrayप्राथमिक दृश्य में AprilTag के निर्देशांक प्रणाली में रोबोट का 3D ट्रांसफॉर्म (सरणी (6)) [tx, ty, tz, पिच, यॉ, रोल] (मीटर, डिग्री)
camerapose_robotspacedoubleArrayरोबोट के निर्देशांक प्रणाली में कैमरे का 3D ट्रांसफॉर्म (सरणी (6))
tidintप्राथमिक दृश्य में AprilTag की ID
camerapose_robotspace_setdoubleArrayरोबोट के निर्देशांक प्रणाली में कैमरे की स्थिति सेट करें।
priorityidinttx/ty लक्ष्यीकरण के लिए आवश्यक ID सेट करें। अन्य लक्ष्यों को अनदेखा करें। स्थानीयकरण को प्रभावित नहीं करता
robot_orientation_setdoubleArrayरोबोट अभिविन्यास और कोणीय वेग डिग्री और डिग्री प्रति सेकंड में सेट करें [यॉ, यॉरेट, पिच, पिचरेट, रोल, रोलरेट]
fiducial_id_filters_setdoubleArrayस्थानीयकरण के लिए वैध फिड्यूशियल आईडी को ओवरराइड करें (सरणी)
fiducial_offset_setdoubleArray3D पॉइंट ऑफ इंटरेस्ट ऑफसेट सेट करें [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मानक - यदि लाइमलाइट से वेबकैम जुड़ा है तो साइड-बाय-साइड स्ट्रीम
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);

Python

Python स्क्रिप्ट्स मनमाने इनबाउंड और आउटबाउंड डेटा की अनुमति देती हैं।

llpythonPython स्क्रिप्ट्स द्वारा भेजा गया NumberArray। यह रोबोट कोड के भीतर सुलभ है।
llrobotरोबोट द्वारा भेजा गया NumberArray। यह Python 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बारकोड डेटा की स्ट्रिंग सरणी