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

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 डिवाइसों के साथ इंटरैक्ट करते हैं।

बेसिक टार्गेटिंग डेटा

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

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

यह डेटा प्राप्त करने के लिए:

keytypeविवरण
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पाइपलाइन की लेटेंसी योगदान (ms)। कुल लेटेंसी प्राप्त करने के लिए "cl" में जोड़ें।
cldoubleकैप्चर पाइपलाइन लेटेंसी (ms)। सेंसर की मध्य पंक्ति के एक्सपोज़र के अंत से ट्रैकिंग पाइपलाइन की शुरुआत तक का समय।
t2ddoubleमैच्ड-टाइमस्टैम्प स्टैटिस्टिक्स के लिए कई मान वाला Array: [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 डंप। 'output' टैब में प्रति-पाइपलाइन सक्षम होना चाहिए
tclassstringप्राथमिक न्यूरल डिटेक्टर परिणाम या न्यूरल क्लासिफायर परिणाम का क्लास नाम
tcdoubleArrayक्रॉसहेयर क्षेत्र (3x3 पिक्सेल क्षेत्र) के नीचे औसत HSV रंग NumberArray के रूप में प्राप्त करें
hbdoubleहार्टबीट मान। प्रति फ्रेम एक बार बढ़ता है, 2 बिलियन पर रीसेट होता है
hwdoubleArrayHW मेट्रिक्स [fps, cpu temp, ram usage, temp]
crosshairsdoubleArray2D क्रॉसहेयर [cx0, cy0, cx1, cy1]
tcclassstringक्लासिफायर पाइपलाइन की गणना की गई क्लास का नाम
tdclassstringडिटेक्टर पाइपलाइन की प्राथमिक डिटेक्शन का नाम

AprilTag और 3D डेटा

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

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

यह डेटा प्राप्त करने के लिए:

keytypeविवरण
botposedoubleArrayफील्ड-स्पेस में रोबोट ट्रांसफॉर्म। Translation (X,Y,Z) मीटर में Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत)
botpose_wpibluedoubleArrayफील्ड-स्पेस में रोबोट ट्रांसफॉर्म (blue driverstation WPILIB origin)। Translation (X,Y,Z) मीटर में Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत)
botpose_wpireddoubleArrayफील्ड-स्पेस में रोबोट ट्रांसफॉर्म (red driverstation WPILIB origin)। Translation (X,Y,Z) मीटर में, Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत)
botpose_orbdoubleArrayफील्ड-स्पेस में रोबोट ट्रांसफॉर्म (Megatag2)। Translation (X,Y,Z) मीटर में Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत)
botpose_orb_wpibluedoubleArrayफील्ड-स्पेस में रोबोट ट्रांसफॉर्म (Megatag2) (blue driverstation WPILIB origin)। Translation (X,Y,Z) मीटर में Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत)
botpose_orb_wpireddoubleArrayफील्ड-स्पेस में रोबोट ट्रांसफॉर्म (Megatag2) (red driverstation WPILIB origin)। Translation (X,Y,Z) मीटर में, Rotation(Roll,Pitch,Yaw) डिग्री में, कुल लेटेंसी (cl+tl), टैग काउंट, टैग स्पैन, कैमरे से औसत टैग दूरी, औसत टैग एरिया (इमेज का प्रतिशत)
camerapose_targetspacedoubleArrayप्राथमिक दृश्य में AprilTag के कोऑर्डिनेट सिस्टम में कैमरे का 3D ट्रांसफॉर्म (array (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री)
targetpose_cameraspacedoubleArrayकैमरे के कोऑर्डिनेट सिस्टम में प्राथमिक दृश्य में AprilTag का 3D ट्रांसफॉर्म (array (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री)
targetpose_robotspacedoubleArrayरोबोट के कोऑर्डिनेट सिस्टम में प्राथमिक दृश्य में AprilTag का 3D ट्रांसफॉर्म (array (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री)
botpose_targetspacedoubleArrayप्राथमिक दृश्य में AprilTag के कोऑर्डिनेट सिस्टम में रोबोट का 3D ट्रांसफॉर्म (array (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री)
camerapose_robotspacedoubleArrayरोबोट के कोऑर्डिनेट सिस्टम में कैमरे का 3D ट्रांसफॉर्म (array (6))
tidintप्राथमिक दृश्य में AprilTag की ID
stddevsdoubleArrayMegaTag स्टैंडर्ड डेविएशन [MT1x, MT1y, MT1z, MT1roll, MT1pitch, MT1Yaw, MT2x, MT2y, MT2z, MT2roll, MT2pitch, MT2yaw]
camerapose_robotspace_setdoubleArrayरोबोट के कोऑर्डिनेट सिस्टम में कैमरे की पोज़ सेट करें।
priorityidinttx/ty टार्गेटिंग के लिए आवश्यक ID सेट करें। अन्य टार्गेट को अनदेखा करें। लोकलाइज़ेशन को प्रभावित नहीं करता
robot_orientation_setdoubleArrayरोबोट ओरिएंटेशन और कोणीय वेग डिग्री और डिग्री प्रति सेकंड में सेट करें[yaw,yawrate,pitch,pitchrate,roll,rollrate]
fiducial_id_filters_setdoubleArrayलोकलाइज़ेशन के लिए वैध fiducial ids को ओवरराइड करें (array)
fiducial_offset_setdoubleArray3D Point of Interest ऑफसेट सेट करें [x,y,z]

कैमरा कंट्रोल्स

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

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

यह डेटा सेट करने के लिए:

ledModeLimelight की LED स्थिति सेट करता है
[0]वर्तमान पाइपलाइन में सेट LED Mode का उपयोग करें
[1]जबरन बंद
[2]जबरन ब्लिंक
[3]जबरन चालू
pipelineLimelight की वर्तमान पाइपलाइन सेट करता है
0 .. 9पाइपलाइन 0..9 चुनें
streamLimelight का स्ट्रीमिंग मोड सेट करता है
0स्टैंडर्ड - यदि Limelight से वेबकैम जुड़ा है तो साइड-बाय-साइड स्ट्रीम
1PiP Main - सेकेंडरी कैमरा स्ट्रीम प्राइमरी कैमरा स्ट्रीम के निचले-दाएं कोने में रखी जाती है
2PiP 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 पर सेट करें। तापमान वृद्धि को कम करने के लिए प्रोसेस किए गए फ्रेम के बीच स्किप करने के लिए फ्रेम की संख्या सेट करता है। स्किप किए गए फ्रेम के दौरान आउटपुट शून्य नहीं होते।
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);

IMU कंट्रोल्स

keytypeविवरण
imumode_setintimumode सेट करें। 0 - external imu का उपयोग करें, 1 - external imu का उपयोग करें, internal imu को सीड करें, 2 - internal का उपयोग करें, 3 - MT1 असिस्टेड कन्वर्जेंस के साथ internal का उपयोग करें, 4 - external IMU असिस्टेड कन्वर्जेंस के साथ internal IMU का उपयोग करें
imuassistalpha_setdoubleकॉम्प्लीमेंटरी फ़िल्टर alpha / स्ट्रेंथ। उच्च मान internal imu को असिस्ट सोर्स पर अधिक तेज़ी से कन्वर्ज करने का कारण बनेंगे। डिफ़ॉल्ट कम मान 0.001 पर सेट है क्योंकि अब हम internal IMU पर पहले से अधिक भरोसा करते हैं। असिस्ट मोड internal imu को चुने गए असिस्ट सोर्स की ओर बहुत धीरे से "खींचने" के लिए बनाए गए हैं।

Python

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

llpythonPython स्क्रिप्ट्स द्वारा भेजा गया 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