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

הערכת מרחק

שימוש במצלמה בזווית קבועה

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

ראו את התרשים למטה. בהקשר זה, כל המשתנים ידועים: גובה המטרה (h2) ידוע כי זו תכונה של המגרש. גובה המצלמה שלכם מעל הרצפה (h1) ידוע וזווית ההתקנה שלה ידועה (a1). ה-Limelight (או מערכת הראייה שלכם) יכול לספר לכם את זווית ה-y למטרה (a2).

הערכת מרחק

אנחנו יכולים לפתור עבור d באמצעות המשוואה הבאה:

tan(a1+a2) = (h2-h1) / d

"d = (h2-h1) / tan(a1+a2)"

פונקציית ה-"tan" בדרך כלל מצפה לקלט הנמדד ברדיאנים. כדי להמיר מדידת זווית ממעלות לרדיאנים, הכפילו ב-(3.14159/180.0). ראו את דוגמת הקוד המלאה למטה.

    NetworkTable table = NetworkTableInstance.getDefault().getTable("limelight");
NetworkTableEntry ty = table.getEntry("ty");
double targetOffsetAngle_Vertical = ty.getDouble(0.0);

// כמה מעלות אחורה ה-limelight שלכם מסובב מאנכי מושלם?
double limelightMountAngleDegrees = 25.0;

// מרחק ממרכז עדשת ה-Limelight לרצפה
double limelightLensHeightInches = 20.0;

// מרחק מהמטרה לרצפה
double goalHeightInches = 60.0;

double angleToGoalDegrees = limelightMountAngleDegrees + targetOffsetAngle_Vertical;
double angleToGoalRadians = angleToGoalDegrees * (3.14159 / 180.0);

// חישוב מרחק
double distanceFromLimelightToGoalInches = (goalHeightInches - limelightLensHeightInches) / Math.tan(angleToGoalRadians);

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

אם אתם מתקשים להבין מהי הזווית a1, תוכלו גם להשתמש במשוואה לעיל כדי לפתור עבור a1. פשוט הציבו את הרובוט שלכם במרחק ידוע (מדידה מעדשת המצלמה שלכם) ופתרו את אותה משוואה עבור a1.

במקרה שבו המטרה שלכם נמצאת כמעט באותו גובה כמו המצלמה שלכם, טכניקה זו אינה שימושית.

שימוש בשטח להערכת מרחק

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