דלג לתוכן הראשי

התחלה מהירה עם Limelight 3A

מפרט חומרה

  • טביעת רגל: 2.839in x 1.894in (72.11mm x 48.11mm)
  • עובי: 0.661in (16.80mm)
  • משקל: 0.20 lb
  • הרכבה: 4x חורי #10 THRU, 4x M3, 6x חורי הרכבה מוברגים M4
  • כניסת מתח: 4.1V-5.75V דרך USB
  • צריכת חשמל מקסימלית: 4W
  • חיישן: OV5647 צבע Rolling Shutter (640x480 @ 90FPS)
  • ללא תאורת LED מובנית
  • שדה ראייה: H:54.5° V:42°
  • חיבור USB-C בלבד (ללא פורט RJ45)
  • נורית סטטוס: ירוק (זיהוי מטרה)
  • מותאם לתאימות FTC

יכולות תוכנה (Limelight OS)

  • ראייה ממוחשבת בביצועים גבוהים מוכנה לשימוש. לא נדרש ניסיון.
  • ממשק משתמש מבוסס דפדפן לתצורת צינורות ראייה
  • תמיכה ב-FTC (אינטגרציית Java ישירה) ו-FRC (ממשק NetworkTables)
  • חשיפה, רווח חיישן, רזולוציה וקצב פריימים ניתנים להגדרה
  • הגדרת 10 צינורות ראייה הניתנים להחלפה חמה:
    • צינורות Python מותאמים אישית עם OpenCV 4.10, numpy ועוד
    • מעקב AprilTag דו-ממדי ותלת-ממדי ולוקליזציית רובוט
      • לוקליזציה תלת-ממדית מלאה (GPS רובוט) עם MegaTag1
      • לוקליזציה תלת-ממדית מלאה בדיוק גבוה יותר (GPS רובוט) עם מיזוג חיישן IMU חיצוני עם MegaTag2
      • 20fps @ 1280x960 (הקטנה פי 2), 50fps @ 640x480 (הקטנה פי 2)
      • ויזואליזציה תלת-ממדית מלאה בממשק האינטרנט
    • צינורות זיהוי כתמי צבע ב-90FPS
    • צינורות זיהוי אובייקטים עצביים (הסקה על CPU בלבד)
    • צינורות סיווג תמונות עצביים (הסקה על CPU בלבד)
    • צינורות מעקב ברקוד
  • ממשק כיול Intrinsics מובנה עם Charuco
  • הזרמת MJPEG מובנית בהשהיה נמוכה

1. הרכבת Limelight 3A

הרכבה מוברגת (מומלץ)

  • השתמשו בלפחות 2 ברגי M3 או M4 להרכבת ה-LL3A שלכם על ערוץ Rev או GoBilda באמצעות חורי ההרכבה המוברגים
  • ניתן גם להשתמש בסרט VHB או אזיקונים לקיבוע ה-Limelight שלכם

הרכבה עם חורים

  • השתמשו בברגי #10-32 או #10-24 באורך 1 1/4" עם אומים נעילה
  • לחלופין, השתמשו בברגי M4 באורך 28mm עם אומים נעילה
שרטוט Limelight 3A

2. חיווט Limelight 3A

כשאתם מוכנים להשתמש ב-Limelight על הרובוט שלכם:

עבור FTC

  • חברו כבל USBC ל-USBA מה-Limelight 3A שלכם לפורט USB 3.0 של ה-Control Hub
  • התחברו ל-Control Hub שלכם על ידי חיבור לפורט USB 3.0 (פורט כחול)

עבור FRC

  • חברו את ה-Limelight 3A שלכם לפורט USB של ה-roboRIO
  • השתמשו בכבל USB-C ל-USB-A

Limelight 3A אינו תומך ב-Google Coral. עדיין ניתן להשתמש בצינורות זיהוי וסיווג עצביים על ידי הגדרת מנוע הריצה של הרשת העצבית ל-"CPU".

3. גישה לממשק האינטרנט

לאחר חיבור ה-Limelight 3A למחשב שלכם דרך USB:

  1. המתינו עד שנורית הסטטוס הירוקה תהפוך פעילה (כ-15-20 שניות)
  2. השתמשו באחת מהשיטות הבאות לגישה לממשק האינטרנט:
    • שיטה 1: פתחו את אפליקציית Limelight Hardware Manager, סרקו אחר Limelights, ולחצו לחיצה כפולה על ה-Limelight 3A שלכם כשהוא מופיע
    • שיטה 2: פתחו דפדפן אינטרנט ונווטו ל-http://limelight.local:5801

לאחר ההתחברות, תהיה לכם גישה ל:

  • לשונית הגדרות - הגדרת מספר קבוצה, שם מארח והגדרות מערכת אחרות
  • לשוניות צינורות ראייה - הגדרה וכיוון צינורות עיבוד הראייה שלכם
  • לשונית מצלמה וכוונת - התאמת הגדרות מצלמה ופרמטרי כוונת
  • לשונית ויזואליזציה תלת-ממדית - צפייה בזיהוי AprilTag ולוקליזציה בזמן אמת

כל התצורה נעשית דרך ממשק אינטרנט זה. שינויים נשמרים אוטומטית ל-Limelight שלכם.

4. עדכון LimelightOS

info

Limelights נשלחים עם תמונה מותקנת מראש. כנראה שתוכלו לדלג על שלב זה לעת עתה.

הוראות עדכון (Windows)
warning

שמרו את הצינורות שלכם לפני עדכון LimelightOS. הם יימחקו במהלך העדכון.

  • הורידו את מנהלי ההתקן העדכניים ל-USB, תמונת Limelight OS וכלי Balena Flash מדף ההורדות
  • הפעילו מחדש את המחשב לאחר התקנת מנהלי ההתקן
  • החזיקו את כפתור התצורה הכחול על ה-Limelight שלכם
  • בזמן ההחזקה, חברו כבל USB->USB-C מהמחשב הנייד ל-Limelight שלכם (ה-Limelight יידלק אוטומטית)
  • לאחר שחיברתם את ה-LL למחשב הנייד, תוכלו לשחרר את כפתור התצורה הכחול
  • ה-Limelight שלכם נמצא כעת במצב צריבה, והנוריות שלו לא יהבהבו
  • הריצו את "Balena Etcher" כמנהל מערכת
  • ייתכן שייקח עד 20 שניות למחשב לזהות את המצלמה
  • בחרו את תמונת ה-.zip העדכנית ביותר בתיקיית ההורדות שלכם
  • בחרו התקן "Compute Module" בתפריט "Drives"
  • לחצו על "Flash"
  • לאחר סיום הצריבה, נתקו את כבל ה-USB מה-Limelight שלכם
הוראות עדכון (מתקדם) (macOS & Linux)
warning

שמרו את הצינורות שלכם לפני עדכון LimelightOS. הם יימחקו במהלך העדכון.

note

אנחנו עובדים על פישוט דרמטי של תהליך העדכון ב-macOS ו-Linux

  • הורידו את תמונת Limelight OS וכלי Balena Flash מדף ההורדות
  • בנו את מנהל התקן USB Boot בעצמכם:
brew install libusb
brew install pkg-config
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
make
cd mass-storage-gadget64
sudo ../rpiboot -d .
# כל עוד rpiboot רץ, המצלמה שלכם תזוהה כראוי ב-macOS ו-Linux
# אתם צריכים להריץ rpiboot בכל פעם שאתם רוצים לצרוב.
  • החזיקו את כפתור התצורה הכחול על ה-Limelight שלכם
  • בזמן ההחזקה, חברו כבל USB->USB-C מהמחשב הנייד ל-Limelight שלכם (ה-Limelight יידלק אוטומטית)
  • לאחר שחיברתם את ה-LL למחשב הנייד, תוכלו לשחרר את כפתור התצורה הכחול
  • ה-Limelight שלכם נמצא כעת במצב צריבה, והנוריות שלו לא יהבהבו
  • הריצו את "Balena Etcher"
  • ייתכן שייקח עד 20 שניות למחשב לזהות את המצלמה
  • בחרו את תמונת ה-.zip העדכנית ביותר בתיקיית ההורדות שלכם
  • בחרו התקן "Compute Module" בתפריט "Drives"
  • לחצו על "Flash"
  • לאחר סיום הצריבה, נתקו את כבל ה-USB מה-Limelight שלכם

5. תהליך ההגדרה

עבור FTC

  1. חברו את ה-Limelight למחשב הנייד שלכם עם כבל USB
  2. גשו לממשק האינטרנט כמתואר בסעיף 3
  3. עברו ללשונית הגדרות והגדירו את מספר הקבוצה שלכם, ואז לחצו על "Restart Vision Client"
  4. הגדירו את הצינורות שלכם כרצונכם (AprilTag, רשתות עצביות, Python מותאם אישית וכו')
  5. כשאתם מוכנים לתחרות, חברו את ה-Limelight 3A שלכם לפורט USB 3.0 של ה-Control Hub
  6. באפליקציית FTC DriverStation, לחצו על "Configure Robot"
  7. אם אין לכם תצורה פעילה, ייתכן שתצטרכו ליצור חדשה
  8. לחצו על כפתור "scan"
  9. אתם אמורים לראות "Ethernet Device" מופיע
  10. תוכלו לערוך את שם ההתקן הזה ל-"limelight" לבהירות
  11. כעת תוכלו לאתחל אובייקט Limelight3A בקוד שלכם באמצעות ה-hardware map

עבור FRC

  1. חברו את ה-Limelight 3A למחשב הנייד שלכם, המתינו לפעילות נורית הסטטוס
  2. גשו לממשק האינטרנט כמתואר בסעיף 3
  3. בלשונית הגדרות, הגדירו את מספר הקבוצה שלכם ולחצו על "Restart Vision Client"
  1. הגדירו את הצינורות שלכם כרצונכם
  2. כשאתם מוכנים, חברו את ה-Limelight 3A שלכם לפורט USB של ה-roboRIO
  3. פתחו את לוח הבקרה המועדף עליכם כדי לוודא שה-3A שלכם שולח נתונים ל-NetworkTables של ה-roboRIO
  4. הוסיפו העברת פורטים כדי לאפשר עריכת צינורות בזמן אמת בזמן חיבור לרשת הרובוט שלכם:
// (robotIP):5801 יצביע כעת על זרם ממשק האינטרנט של Limelight3A (id 0):
// (robotIP):5800 יצביע כעת על זרם הווידאו של Limelight3A (id 0):
PortForwarder.getInstance().add(5801, "172.29.0.1", 5801);
PortForwarder.getInstance().add(5802, "172.29.0.1", 5802);
PortForwarder.getInstance().add(5803, "172.29.0.1", 5803);
PortForwarder.getInstance().add(5804, "172.29.0.1", 5804);
PortForwarder.getInstance().add(5805, "172.29.0.1", 5805);
PortForwarder.getInstance().add(5806, "172.29.0.1", 5806);
PortForwarder.getInstance().add(5807, "172.29.0.1", 5807);
PortForwarder.getInstance().add(5808, "172.29.0.1", 5808);
PortForwarder.getInstance().add(5809, "172.29.0.1", 5809);

// (robotIP):5811 יצביע כעת על זרם ממשק האינטרנט של Limelight3A (id 1):
// (robotIP):5810 יצביע כעת על זרם הווידאו של Limelight3A (id 1):
PortForwarder.getInstance().add(5811, "172.29.1.1", 5801);
PortForwarder.getInstance().add(5812, "172.29.1.1", 5802);
PortForwarder.getInstance().add(5813, "172.29.1.1", 5803);
PortForwarder.getInstance().add(5814, "172.29.1.1", 5804);
PortForwarder.getInstance().add(5815, "172.29.1.1", 5805);
PortForwarder.getInstance().add(5816, "172.29.1.1", 5806);
PortForwarder.getInstance().add(5817, "172.29.1.1", 5807);
PortForwarder.getInstance().add(5818, "172.29.1.1", 5808);
PortForwarder.getInstance().add(5819, "172.29.1.1", 5809);

6. סוגי צינורות זמינים

ה-Limelight 3A מציע את אותן תכונות עיבוד ראייה כמו דגמי Limelight אחרים:

  • מעקב AprilTag ולוקליזציית רובוט
  • מעקב כתמי צבע
  • זיהוי אובייקטים ברשת עצבית (CPU בלבד)
  • סיווג ברשת עצבית
  • מעקב ברקוד
  • צינורות Python מותאמים אישית

כל 3A נשלח עם מפת שדה Into The Deep מובנית עבור FTC.

7. תכנות FTC

דוגמת FTC בסיסית: דוגמת FTC

רוב היישומים דורשים פחות מ-10 שורות קוד:

public class Teleop extends LinearOpMode {

private Limelight3A limelight;

@Override
public void runOpMode() throws InterruptedException
{
limelight = hardwareMap.get(Limelight3A.class, "limelight");

telemetry.setMsTransmissionInterval(11);

limelight.pipelineSwitch(0);

/*
* מתחיל לדגום נתונים.
*/
limelight.start();

while (opModeIsActive()) {
LLResult result = limelight.getLatestResult();
if (result != null) {
if (result.isValid()) {
Pose3D botpose = result.getBotpose();
telemetry.addData("tx", result.getTx());
telemetry.addData("ty", result.getTy());
telemetry.addData("Botpose", botpose.toString());
}
}
}
}
}

לדיוק לוקליזציה תלת-ממדית מקסימלי, קראו ל-updateRobotOrientation() והשתמשו ב-getBotPose_MT2():

while (opModeIsActive()) {
YawPitchRollAngles orientation = imu.getRobotYawPitchRollAngles();
limelight.updateRobotOrientation(orientation.getYaw(AngleUnit.DEGREES));
LLResult result = limelight.getLatestResult();
if (result != null) {
if (result.isValid()) {
Pose3D botpose = result.getBotpose_MT2();
// השתמשו בנתוני botpose
}
}
}

למידע נוסף, ראו את דף תכנות FTC

8. פתרון בעיות

מחווני נורית סטטוס

  • נורית ירוקה: מהבהבת לאט (אין מטרות), מהבהבת מהר (מטרות זוהו)

שאלות נפוצות

  • למה ה-Limelight שלי מרגיש כל כך חם? כדי שה-Limelight ירוץ קריר ככל האפשר, הוא בהכרח צריך להרגיש חם ככל האפשר/בטוח למגע. המארז שלו הוא גוף קירור מוליך מאוד שעוזר לשמור על המעבד בטמפרטורה קרירה סבירה.

  • למה התמונה נראית כל כך גרעינית? כדי למזער השהיה, מספר פילטרים שנמצאים בדרך כלל במצלמות מסחריות מדולגים. הזרם גם דחוס כדי למזער קצב סיביות. בגרסה 2024.10.1, שינינו את ערכי איזון הצבע המוגדרים כברירת מחדל כדי שהתמונות ייראו טבעיות ותוססות יותר לעין האנושית.

  • מה Limelight מציע מעבר ל-OpenCV על ה-Control Hub? אלגוריתם לוקליזציה מרובה תגיות מוכן לשימוש, ללא קוד, עם מיזוג חיישן IMU של הרובוט, רשתות עצביות ועוד.