NetworkTables API
Limelight OS में NetworkTables 4 Client की सुविधा है। यह FRC Robots पर चल रहे NetworkTables 4 Server से Settings UI में कॉन्फ़िगर किए गए Team Number / ID के आधार पर स्वचालित रूप से कनेक्ट होता है।
सभी डेटा एक ऐसी तालिका में प्रकाशित किया जाता है जो डिवाइस नाम से मेल खाती है (जैसे "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 | मैच्ड-टाइमस्टैम्प आंकड़ों के लिए कई मान वाला एरे: [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));
इस डेटा को प्राप्त करने के लिए:
key | type | description |
---|---|---|
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, pitch, yaw, roll] (मीटर, डिग्री) |
targetpose_cameraspace | doubleArray | कैमरे के कोऑर्डिनेट सिस्टम में प्राइमरी इन-व्यू AprilTag का 3D ट्रांसफॉर्म (एरे (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री) |
targetpose_robotspace | doubleArray | रोबोट के कोऑर्डिनेट सिस्टम में प्राइमरी इन-व्यू AprilTag का 3D ट्रांसफॉर्म (एरे (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री) |
botpose_targetspace | doubleArray | प्राइमरी इन-व्यू AprilTag के कोऑर्डिनेट सिस्टम में रोबोट का 3D ट्रांसफॉर्म (एरे (6)) [tx, ty, tz, pitch, yaw, roll] (मीटर, डिग्री) |
camerapose_robotspace | doubleArray | रोबोट के कोऑर्डिनेट सिस्टम में कैमरे का 3D ट्रांसफॉर्म (एरे (6)) |
tid | int | प्राइमरी इन-व्यू AprilTag का ID |
stddevs | doubleArray | मेगाटै ग स्टैंडर्ड डेविएशन [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_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) |
throttle_set | (int) हम अनुशंसा करते हैं कि इसे अक्षम होने पर 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 | description |
---|---|---|
imumode_set | int | IMU मोड सेट करें। 0 - बाहरी IMU का उपयोग करें, 1 - बाहरी IMU का उपयोग करें, आंतरिक IMU को सीड करें, 2 - आंतरिक का उपयोग करें, 3 - MT1 सहायता वाले कन्वर्जेंस के साथ आंतरिक का उपयोग करें, 4 - बाहरी IMU सहायता वाले कन्वर्जेंस के साथ आंतरिक IMU का उपयोग करें |
imuassistalpha_set | double | कॉम्प्लीमेंटरी फिल्टर अल्फा / स्ट्रेंथ। उच्च मान आंतरिक IMU को सहायता स्रोत पर तेजी से कन्वर्ज होने का कारण बनेगा। डिफॉल्ट एक कम मान 0.001 पर सेट है क्योंकि हम अब पहले की तुलना में आंतरिक IMU पर अधिक भरोसा करते हैं। सहायता मोड आंतरिक IMU क ो चुने गए सहायता स्रोत की ओर बहुत धीरे से "खींचने" के लिए बनाए गए हैं। |
Python
Python स्क्रिप्ट्स मनमाने इनबाउंड और आउटबाउंड डेटा की अनुमति देते हैं।
llpython | Python स्क्रिप्ट्स द्वारा भेजा गया NumberArray। यह रोबोट कोड के भीतर पहुंच योग्य है। |
llrobot | रोबोट द्वारा भेजा गया NumberArray। यह Python SnapScripts के भीतर पहुंच योग्य है। |
कच्चा डेटा
कोने:
कोने के निर्देशांक स्ट्रीम करने के लिए "Output" टैब में "send contours" सक्षम करें:
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.....] |
कच्चे डिटेक्शन्स:
सभी वैध (अनफिल्टर्ड) न्यूरल डिटेक्शन परिणाम प्राप्त करें
rawdetections | [id, txnc, tync, ta, corner0x, corner0y, corner1x, corner1y, corner2x, corner2y, corner3x, corner3y, id2.....] |
कच्चे बारकोड्स:
सभी वैध (अनफिल्टर्ड) बारकोड परिणाम प्राप्त करें
rawbarcodes | बारकोड डेटा का स्ट्रिंग ऐरे |