नेटवर्कटेबल्स API
लाइमलाइट OS में एक नेटवर्कटेबल्स 4 क्लाइंट है। यह सेटिंग्स UI में कॉन्फ़िगर किए गए टीम नंबर / ID के आधार पर FRC रोबोट्स पर चल रहे नेटवर्कटेबल्स 4 सर्वर से स्वचालित रूप से कनेक्ट होता है।
सभी डेटा एक टेबल में प्रकाशित किया जाता है जो डिवाइस नाम से मेल खाता है (उदाहरण के लिए "limelight")। यदि आपके कैमरे को एक होस्टनेम / उपनाम असाइन किया गया है, तो टेबल का नाम पूरे लाइमलाइट नाम से मेल खाएगा (उदाहरण के लिए "limelight-top")।
LimelightLib WPIJava और LimelightLib WPICPP नेटवर्कटेबल्स के माध्यम से लाइमलाइट डिवाइसों के साथ इंटरैक्ट करते हैं।
मूल लक्ष्यीकरण डेटा
निम्नलिखित कोड का उपयोग करें:
- 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 | मिलान-समयांकन आंकड़ों के लिए कई मान वाली सरणी: [targetValid, targetCount, targetLatency, captureLatency, tx, ty, txnc, tync, ta, tid, targetClassIndexDetector, targetClassIndexClassifier, targetLongSidePixels, targetShortSidePixels, targetHorizontalExtentPixels, targetVerticalExtentPixels, targetSkewDegrees] |
getpipe | int | कैमरे का सही सक्रिय पाइपलाइन इंडेक्स (0 .. 9) |
getpipetype | string | पाइपलाइन प्रकार उदा. "pipe_color" |
json | string | लक्ष्यीकरण परिणामों का पूर्ण JSON डंप। 'आउटपुट' टैब में प्रति-पाइपलाइन सक्षम किया जाना चाहिए |
tclass | string | प्राथमिक न्यूरल डिटेक्टर परिणाम या न्यूरल वर्गीकरण परिणाम का वर्ग नाम |
tc | doubleArray | क्रॉसहेयर क्षेत्र (3x3 पिक्सेल क्षेत्र) के नीचे औसत HSV रंग को NumberArray के रूप में प्राप्त करें |
hb | double | हार्टबीट मान। प्रति फ्रेम एक बार बढ़ता है, 2 अरब पर रीसेट होता है |
hw | doubleArray | HW मेट्रिक्स [fps, cpu तापमान, ram उपयोग, तापमान] |
crosshairs | doubleArray | 2D क्रॉसहेयर [cx0, cy0, cx1, cy1] |
tcclass | string | वर्गीकरण पाइपलाइन के गणना किए गए वर्ग का नाम |
tdclass | string | डिटेक्टर पाइपलाइन के प्राथमिक पहचान का नाम |
AprilTag और 3D डेटा
निम्नलिखित कोड का उपयोग करें:
- 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 | फील्ड-स्पेस में रोबोट ट्रांसफॉर्म (मेगाटैग2)। स्थानांतरण (X,Y,Z) मीटर में, रोटेशन (रोल, पिच, यॉ) डिग्री में, कुल विलंबता (cl+tl), टैग गणना, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग क्षेत्र (छवि का प्रतिशत) |
botpose_orb_wpiblue | doubleArray | फील्ड-स्पेस में रोबोट ट्रांसफॉर्म (मेगाटैग2) (नीला ड्राइवरस्टेशन WPILIB मूल)। स्थानांतरण (X,Y,Z) मीटर में, रोटेशन (रोल, पिच, यॉ) डिग्री में, कुल विलंबता (cl+tl), टैग गणना, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग क्षेत्र (छवि का प्रतिशत) |
botpose_orb_wpired | doubleArray | फील्ड-स्पेस में रोबोट ट्रांसफॉर्म (मेगा टैग2) (लाल ड्राइवरस्टेशन WPILIB मूल)। स्थानांतरण (X,Y,Z) मीटर में, रोटेशन (रोल, पिच, यॉ) डिग्री में, कुल विलंबता (cl+tl), टैग गणना, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग क्षेत्र (छवि का प्रतिशत) |
camerapose_targetspace | doubleArray | प्राथमिक दृश्य में AprilTag के निर्देशांक प्रणाली में कैमरे का 3D ट्रांसफॉर्म (सरणी (6)) [tx, ty, tz, पिच, यॉ, रोल] (मीटर, डिग्री) |
targetpose_cameraspace | doubleArray | कैमरे के निर्देशांक प्रणाली में प्राथमिक दृश्य में AprilTag का 3D ट्रांसफॉर्म (सरणी (6)) [tx, ty, tz, पिच, यॉ, रोल] (मीटर, डिग्री) |
targetpose_robotspace | doubleArray | रोबोट के निर्देशांक प्रणाली में प्राथमिक दृश्य में AprilTag का 3D ट्रांसफॉर्म (सरणी (6)) [tx, ty, tz, पिच, यॉ, रोल] (मीटर, डिग्री) |
botpose_targetspace | doubleArray | प्राथमिक दृश्य में AprilTag के निर्देशांक प्रणाली में रोबोट का 3D ट्रांसफॉर्म (सरणी (6)) [tx, ty, tz, पिच, यॉ, रोल] (मीटर, डिग्री) |
camerapose_robotspace | doubleArray | रोबोट के निर्देशांक प्रणाली में कै मरे का 3D ट्रांसफॉर्म (सरणी (6)) |
tid | int | प्राथमिक दृश्य में AprilTag की ID |
camerapose_robotspace_set | doubleArray | रोबोट के निर्देशांक प्रणाली में कैमरे की स्थिति सेट करें। |
priorityid | int | tx/ty लक्ष्यीकरण के लिए आवश्यक ID सेट करें। अन्य लक्ष्यों को अनदेखा करें। स्थानीयकरण को प्रभावित नहीं करता |
robot_orientation_set | doubleArray | रोबोट अभिविन्यास और कोणीय वेग डिग्री और डिग्री प्रति सेकंड में सेट करें [यॉ, यॉरेट, पिच, पिचरेट, रोल, रोलरेट] |
fiducial_id_filters_set | doubleArray | स्थानीयकरण के लिए वैध फिड्यूशियल आईडी को ओवरराइड करें (सरणी) |
fiducial_offset_set | doubleArray | 3D पॉइंट ऑफ इंटरेस्ट ऑफसेट सेट करें [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 | मानक - यदि लाइमलाइट से वेबकैम जुड़ा है तो साइड-बाय-साइड स्ट्रीम |
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
Python
Python स्क्रिप्ट्स मनमाने इनबाउंड और आउटबाउंड डेटा की अनुमति देती हैं।
llpython | Python स्क्रिप्ट्स द्वारा भेजा गया 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 | बारकोड डेटा की स्ट्रिंग सरणी |