NetworkTables API
Limelight OS में NetworkTables 4 Client की सुविधा है। यह Settings UI में कॉन्फ़िगर की गई Team Number / ID के आधार पर FRC Robots पर चल रहे NetworkTables 4 Server से स्वचालित रूप से कनेक्ट होता है।
सभी डेटा एक टेबल में प्रकाशित होता है जो डिवाइस के नाम से मेल खाता है (जैसे "limelight")। यदि आपके कैमरे को hostname / nickname असाइन किया गया है, तो टेबल का नाम पूर्ण limelight नाम से मेल खाएगा (जैसे "limelight-top")।
LimelightLib WPIJava और LimelightLib WPICPP NetworkTables के माध्यम से Limelight डिवाइसों के साथ इंटरैक्ट करते हैं।
बेसिक टार्गेटिंग डेटा
निम्नलिखित कोड का उपयोग करें:
- 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>');
यह डेटा प्राप्त करने के लिए:
| key | type | विवरण |
|---|---|---|
| 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 | पाइपलाइन की लेटेंसी योगदान (ms)। कुल लेटेंसी प्राप्त करने के लिए "cl" में जोड़ें। |
| cl | double | कैप्चर पाइपलाइन लेटेंसी (ms)। सेंसर की मध्य पंक्ति के एक्सपोज़र के अ ंत से ट्रैकिंग पाइपलाइन की शुरुआत तक का समय। |
| t2d | double | मैच्ड-टाइमस्टैम्प स्टैटिस्टिक्स के लिए कई मान वाला Array: [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 डंप। 'output' टैब में प्रति-पाइपलाइन सक्षम होना चाहिए |
| tclass | string | प्राथमिक न्यूरल डिटेक्टर परिणाम या न्यूरल क्लासिफायर परिणाम का क्लास नाम |
| tc | doubleArray | क्रॉसहेयर क्षेत्र (3x3 पिक्सेल क्षेत्र) के नीचे औसत HSV रंग NumberArray के रूप में प्राप्त करें |
| hb | double | हार्टबीट मान। प्रति फ्रेम एक बार बढ़ता है, 2 बिलियन पर रीसेट होता है |
| hw | doubleArray | HW मेट्रिक्स [fps, cpu temp, ram usage, temp] |
| 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));
यह डेटा प्राप्त करने के लिए:
| key | type | विवरण |
|---|---|---|
| botpose | doubleArray | फील्ड-स्पेस में रोबोट ट्रांसफॉर्म। Translation (X,Y,Z) मीटर में Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत) |
| botpose_wpiblue | doubleArray | फील्ड-स्पेस में रोबोट ट्रांसफॉर्म (blue driverstation WPILIB origin)। Translation (X,Y,Z) मीटर में Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत) |
| botpose_wpired | doubleArray | फील्ड-स्पेस में रोबोट ट्रांसफॉर्म (red driverstation WPILIB origin)। Translation (X,Y,Z) मीटर में, Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत) |
| botpose_orb | doubleArray | फील्ड-स्पेस में रोबोट ट्रांसफॉर्म (Megatag2)। Translation (X,Y,Z) मीटर में Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत) |
| botpose_orb_wpiblue | doubleArray | फील्ड-स्पेस में रोबोट ट्रांसफॉर्म (Megatag2) (blue driverstation WPILIB origin)। Translation (X,Y,Z) मीटर में Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत) |
| botpose_orb_wpired | doubleArray | फील्ड-स्पेस में रोबोट ट्रांसफॉर्म (Megatag2) (red driverstation WPILIB origin) । Translation (X,Y,Z) मीटर में, Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत) |
| camerapose_targetspace | doubleArray | प्राथमिक दृश्य में AprilTag के कोऑर्डिनेट सिस्टम में कैमरे का 3D ट्रांसफॉर्म (array (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री) |
| targetpose_cameraspace | doubleArray | कैमरे के कोऑर्डिनेट सिस्टम में प्राथमिक दृश्य में AprilTag का 3D ट्रांसफॉर्म (array (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री) |
| targetpose_robotspace | doubleArray | रोबोट के कोऑर्डिनेट सिस्टम में प्राथमिक दृश्य में AprilTag का 3D ट्रांसफॉर्म (array (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री) |
| botpose_targetspace | doubleArray | प्राथमिक दृश्य में AprilTag के कोऑर्डिनेट सिस्टम में रोबोट का 3D ट्रांसफॉर्म (array (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री) |
| camerapose_robotspace | doubleArray | रोबोट के कोऑर्डिनेट सिस्टम में कैमरे का 3D ट्रांसफॉर्म (array (6)) |
| tid | int | प्राथमिक दृश्य में AprilTag की ID |
| stddevs | doubleArray | MegaTag स्टैंडर्ड डेविएशन [MT1x, MT1y, MT1z, MT1roll, MT1pitch, MT1Yaw, MT2x, MT2y, MT2z, MT2roll, MT2pitch, MT2yaw] |
| camerapose_robotspace_set | doubleArray | रोबोट के कोऑर्डिनेट सिस्टम में कैमरे की पोज़ सेट करें। |
| priorityid | int | tx/ty टार्गेटिंग के लिए आवश्यक ID सेट करें। अन्य टार्गेट को अनदेखा करें। लोकलाइज़ेशन को प्रभावित नहीं करता |
| robot_orientation_set | doubleArray | रोबोट ओरिएंटेशन और कोणीय वेग डिग्री और डिग्री प्रति सेकंड में सेट करें[yaw,yawrate,pitch,pitchrate,roll,rollrate] |
| fiducial_id_filters_set | doubleArray | लोकलाइज़ेशन के लिए वैध fiducial ids को ओवरराइड करें (array) |
| fiducial_offset_set | doubleArray | 3D Point of Interest ऑफसेट सेट करें [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 | Limelight की LED स्थिति सेट करता है |
|---|---|
| [0] | वर्तमान पाइपलाइन में सेट LED Mode का उपयोग करें |
| [1] | जबरन बंद |
| [2] | जबरन ब्लिंक |
| [3] | जबरन चालू |
| pipeline | Limelight की वर्तमान पाइपलाइन सेट करता है |
|---|---|
| 0 .. 9 | पाइपलाइन 0..9 चुनें |
| stream | Limelight का स्ट्रीमिंग मोड सेट करता है |
|---|---|
| 0 | स्टैंडर्ड - यदि Limelight से वेबकैम जुड़ा है तो साइड-बाय-साइड स्ट्रीम |
| 1 | PiP Main - सेकेंडरी कैमरा स्ट्रीम प्राइमरी कैमरा स्ट्रीम के निचले-दाएं कोने में रखी जाती है |
| 2 | PiP Secondary - प्राइमरी कैमरा स्ट्रीम सेकेंडरी कैमरा स्ट्रीम के निचले-दाएं कोने में रखी जाती है |
| crop | (Array) क्रॉप रेक्टेंगल सेट करता है। पाइपलाइन को वेब इंटरफेस में डिफ़ॉल्ट क्रॉप रेक्टेंगल का उपयोग करना चाहिए। Array में बिल्कुल 4 एंट्री होनी चाहिए। |
|---|---|
| [0] | X0 - क्रॉप रेक्टेंगल का Min या Max X मान (-1 से 1) |
| [1] | X1 - क्रॉप रेक्टेंगल का Min या Max X मान (-1 से 1) |
| [2] | Y0 - क्रॉप रेक्टेंगल का Min या Max Y मान (-1 से 1) |
| [3] | Y1 - क्रॉप रेक्टेंगल का Min या Max Y मान (-1 से 1) |
| throttle_set | (int) हम अनुशंसा करते हैं कि इसे disabled होने पर 100-200 पर सेट करें। तापमान वृद्धि को कम करने के लिए प्रोसेस किए गए फ्रेम के बीच स्किप करने के लिए फ्रेम की संख्या सेट करता है। स्किप किए गए फ्रेम के दौरान आउटपुट शून्य नहीं होते। |
|---|
- 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
IMU कंट्रोल्स
| key | type | विवरण |
|---|---|---|
| imumode_set | int | imumode सेट करें। 0 - external imu का उपयोग करें, 1 - external imu का उपयोग करें, internal imu को सीड करें, 2 - internal का उपयोग करें, 3 - MT1 असिस्टेड कन्वर्जेंस के साथ internal का उपयोग करें, 4 - external IMU असिस्टेड कन्वर्जेंस के साथ internal IMU का उपयोग करें |
| imuassistalpha_set | double | कॉम्प्लीमेंटरी फ़िल्टर alpha / स्ट्रेंथ। उच्च मान internal imu को असिस्ट सोर्स पर अधिक तेज़ी से कन्वर्ज करने का कारण बनेंगे। डिफ़ॉल्ट कम मान 0.001 पर सेट है क्योंकि अब हम internal IMU पर पहले से अधिक भरोसा करते हैं। असिस्ट मोड internal imu को चुने गए असिस्ट सोर्स की ओर बहुत धीरे से "खींचने" के लिए बनाए गए हैं। |
Python
Python स्क्रिप्ट्स मनमाने इनबाउंड और आउटबाउंड डेटा की अनुमति देती हैं।
| llpython | Python स्क्रिप्ट्स द्वारा भेजा गया NumberArray। यह रोबोट कोड के भीतर एक्सेसिबल है। |
| llrobot | रोबोट द्वारा भेजा गया NumberArray। यह python SnapScripts के भीतर एक्सेसिबल है। |
रॉ डेटा
कॉर्नर्स:
कॉर्नर कोऑर्डिनेट्स स्ट्रीम करने के लिए "Output" टैब में "send contours" सक्षम करें:
| tcornxy | कॉर्नर कोऑर्डिनेट्स का Number array [x0,y0,x1,y1......] |
रॉ टार्गेट्स:
Limelight NetworkTables पर तीन रॉ कंटूर पोस्ट करता है जो आपके ग्रुपिंग मोड से प्रभावित नहीं होते। यानी, वे आपके पाइपलाइन पैरामीटर्स के साथ फ़िल्टर किए जाते हैं, लेकिन कभी ग्रुप नहीं किए जाते। X और Y डिग्री के बजाय नॉर्मलाइज़्ड स्क्रीन स्पेस (-1 से 1) में लौटाए जाते हैं।
| rawtargets | [txnc,tync,ta,txnc2,tync2,ta2....] |
रॉ Fiducials:
सभी वैध (अनफ़ि ल्टर्ड) fiducials प्राप्त करें
| rawfiducials | [id, txnc, tync, ta, distToCamera, distToRobot, ambiguity, id2.....] |
रॉ डिटेक्शन्स:
सभी वैध (अनफ़िल्टर्ड) न्यूरल डिटेक्शन परिणाम प्राप्त करें
| rawdetections | [id, txnc, tync, ta, corner0x, corner0y, corner1x, corner1y, corner2x, corner2y, corner3x, corner3y, id2.....] |
रॉ बारकोड्स:
सभी वैध (अनफ़िल्टर्ड) बारकोड परिणाम प्राप्त करें
| rawbarcodes | बारकोड डेटा का string array |