שאלות נפוצות#
מהם ההבדלים בין ה-CMUcam1 ל-CMUcam2?#
מבוא#
ה-CMUcam2 כולל את כל הפונקציונליות של ה-CMUcam1 בצורה משופרת והרבה יותר. להלן אנו מתארים בקצרה את הפונקציונליות החדשה ואת ההבדלים. ייתכן שתרצו גם להסתכל על התשובה לשאלה כיצד להחליט האם לרכוש CMUcam1 או CMUcam2.
סקירת חומרה#
יש שני הבדלי חומרה עיקריים החשובים, ה-CMUcam2 משתמש במעבד שונה מה-CMUcam1 וה-CMUcam2 משלב שבב באפר מסגרת בעוד שה-CMUcam1 אינו משלב.
ה-CMUcam2 משתמש במעבד SX52 וה-CMUcam1 משתמש ב-מעבד SX28, שניהם מסדרת מעבדי SX של Ubicom. בשני המקרים המעבד פועל בתדר 75 MHz כך שאין הבדל במהירות המעבד או בכוח החישוב. היתרונות של מעבד ה-SX52 הם שיש לו יותר RAM (262 לעומת 136 בתים), יותר ROM (4096 לעומת 2048 מילים), ויותר פיני I/O. יותר RAM ו-ROM אפשרו לנו לכתוב קוד מורכב יותר שאיפשר לנו לשלב יותר פונקציונליות ב-CMUcam2. המספר הגדול יותר של פיני I/O אפשר שנשארו לנו יותר פינים לפונקציות אחרות – כמו יותר סרוו-מנועים, יותר מגשרי תצורה וכו«.
ההבדל הגדול בין שתי המערכות הוא שה-CMUcam2 כולל את שבב באפר המסגרת AL422B של AverLogic בעוד שה-CMUcam1 אינו כולל. זה מאפשר לחומרת ה-CMUcam2 ללכוד במהירות מסגרת שלמה יחידה ולאחסן אותה בזיכרון באפר המסגרת. יש לזה מספר יתרונות:
עיבוד מורכב יותר. ב-CMUcam1 המעבד היה צריך לעבד את זרם נתוני הפיקסלים תוך כדי תנועה כפי שהוא מופק על ידי מודול המצלמה. תכנון זה סייע להפחית את המורכבות והעלות של חומרת המערכת. עם זאת, הוא הגביל את מורכבות העיבוד מכיוון שהיה צריך לבצעו בזמן אמת בין פיקסלים או בין שורות תמונה. מכיוון שהמעבד ב-CMUcam2 ניגש לנתוני פיקסלים ממאגר הפריימים בקצב שלו, הוא יכול לבצע עיבוד מורכב יותר לכל פיקסל.
עיבוד מהיר יותר. הצד השני של אי-הצורך להישאר מסונכרן עם זרם הפיקסלים של מודול המצלמה הוא שהמעבד אינו צריך להמתין למודול המצלמה כשהוא זקוק לנתוני פיקסלים. ביטול זמן המתנה זה משמעו שמעבד ה-CMUcam2 יכול למעשה לעבד פריים מהר יותר ממה שה-CMUcam1 יכולה, אף על פי שהמעבד אינו חזק יותר.
פעולות מרובות לכל פריים. מכיוון שהתמונה השמורה במאגר הפריימים אינה משתנה, ה-CMUcam2 יכולה לבצע פעולות מרובות על פריים יחיד. כך למשל, ניתן לזהות תנועה, לחשב סטטיסטיקת אזורים, ולעקוב אחר מספר צבעים, הכול על פריים יחיד.
פריקות פריים טובות יותר. מכיוון שה-CMUcam1 הייתה צריכה לסנכרן את נתוני פריקת הפריים המשודרים עם זרם הנתונים של מודול המצלמה, היא יכלה לשלוח רק עמודת נתונים אחת לכל פריים מצלמה. משמעות הדבר הייתה שחלקים שונים של התמונה נלכדו בזמנים שונים, כך שעצמים הנעים במהירות היו נמרחים על פני פריקות הפריים של ה-CMUcam1. מכיוון שה-CMUcam2 משדרת את התמונה מהנתונים הקבועים במאגר הפריימים, זו אינה בעיה עוד.
טיפול טוב יותר בקצבי באוד נמוכים יותר. קיומו של מאגר פריימים משמעו גם שהתזמון של הנתונים המשודרים על ידי ה-CMUcam2 יכול להיות מנותק לחלוטין מהתזמון של הנתונים הנקראים ממודול המצלמה. משמעות הדבר היא שנתוני CMUcam2 מפריקות פריים וממצבי שורת ביטמאפ אינם משתנים כאשר קצב הבאוד של התקשורת משתנה; ה-CMUcam2 תשדר את אותם נתוני פריים או ביטמאפ למעבד המארח ללא תלות בקצב הבאוד. עם זאת, מספר הפריימים המעובדים לשנייה עדיין עשוי להשתנות עם קצבי באוד איטיים יותר מכיוון שהיא עדיין צריכה בסופו של דבר לסיים לשלוח את כל הנתונים מפריים אחד לפני שניתן לעבד את הבאים אחריו.
הפעלה טובה יותר של מודול המצלמה. כדי שהמעבד ב-CMUcam1 יוכל להישאר מסונכרן עם זרם הנתונים ממודול המצלמה, היה צורך להאט את קצב הפריימים של מודול המצלמה ל-17 fps. מאגר הפריימים שבו משתמשת ה-CMUcam2 מאפשר לנו להפעיל את מודול המצלמה במהירות הפריימים המלאה. יתרון אחד של זה הוא שכיוון החשיפה האוטומטי ואיזון הלבן של המצלמה יכולים לפעול מהר יותר מכיוון שהם יכולים לבצע רק כיוון יחיד לכל פריים וכעת יש יותר פריימים לשנייה. היתרון השני הוא שפלט הווידאו האנלוגי בשחור-לבן (שפועל רק כאשר המודול פועל בקצב הפריימים המלא) ניתן לשימוש בזמן שה-CMUcam2 מעבדת נתוני תמונה, מה שלא היה המצב עם ה-CMUcam1.
סקירת פונקציונליות#
ה-CMUcam2 מממש את כל הפונקציונליות של ה-CMUcam1 וגם מוסיף הרבה פונקציונליות חדשה. להלן סיכום.
מעקב צבע. ה-CMUcam2 מיישמת מעקב צבע בדיוק כפי שעשתה ה-CMUcam1. כמו ב-CMUcam1, מיושם מצב שורת ביטמאפ אופציונלי המשדר ביטמאפ של הפיקסלים הנעקבים. יש גם כמה שיפורים. קיים מצב שורה אופציונלי חדש המספק סטטיסטיקה של הפיקסלים הנעקבים לכל שורה, כולל המיקום הממוצע, המינימלי והמקסימלי של הפיקסלים הנעקבים. זה שימושי מאוד למעקב אחר קו. קיים גם מצב אופציונלי חדש שבו ניתן להפוך את הפרשנות של גבולות המעקב. במצב זה פיקסלים מחוץ לגבולות המעקב נחשבים ”טובים“. זה שימושי למעקב אחר עצם על רקע הומוגני – חשבו על אפקטים מיוחדים של מסך כחול. זה גם שימושי לזיהוי קצוות כאשר הפרשי פיקסלים (המתוארים למטה) מופעלים. אפשרות סינון הרעש שופרה גם היא כדי לאפשר כיוון של כמות הסינון למצבים רועשים.
סטטיסטיקת תמונה. ה-CMUcam2 מיישמת את חישוב הממוצע וסטטיסטיקת השונות של אזורי תמונה בדיוק כפי שעשתה ה-CMUcam1. כמו ב-CMUcam1, מיושם מצב שורה אופציונלי המשדר את הממוצע של כל שורה בתמונה. קיים גם מצב שורה משופר חדש הכולל באופן אופציונלי מידע שונות על בסיס שורה אחר שורה.
זיהוי תנועה. חדשות לחלוטין ב-CMUcam2 הן פקודות זיהוי תנועה (הפרשי פריימים). ניתן להשתמש בפקודות אלה כדי להורות ל-CMUcam2 ללכוד גרסה ברזולוציה נמוכה של התמונה הנוכחית ולהשוות אותה ברציפות לתמונות נכנסות חדשות. חבילות מה-CMUcam2 מדווחות אם חלק כלשהו של התמונה משתנה ביותר מכמות מוגדרת, מה שעשוי להצביע על תנועה. חבילות אלה יכולות לתאר את המרכז וההיקף של גושי התמונה שהשתנו או לספק ביטמאפ של אילו גושי תמונה השתנו. מצב זה יכול גם להיות משולב עם הפרשי פיקסלים (המתוארים למטה) כדי להפוך את זיהוי התנועה לעמיד יותר בפני שינויים בתאורה.
היסטוגרמות. חדשות לחלוטין ב-CMUcam2 הן פקודות חישוב היסטוגרמה. ניתן להשתמש בפקודות אלה כדי ללכוד היסטוגרמה חד-ממדית של ערוץ צבע יחיד ברזולוציה של עד 28 תאים. היסטוגרמות מספקות מידע שימושי המסכם את מראה התמונה. בעזרת תכנות נוסף במעבד המארח ניתן להשתמש במידע זה כדי לסייע בזיהוי מכשולים, עצמים ספציפיים או מיקומים.
חלונות תמונה. ה-CMUcam2 מיישמת את היכולת להגביל את העיבוד לאזור קטן (תת-חלון) של התמונה המלאה בדיוק כפי שעשתה ה-CMUcam1. ב-CMUcam2 פונקציה זו שימושית אף יותר מכיוון שניתן להשתמש בה כדי לבחון מקרוב תת-חלונות של תמונה יחידה השמורה במאגר הפריימים. כמו כן, ניתן להשתמש בהקטנת גודל החלון האנכי כדי להגדיל מאוד את מספר הפריימים המעובדים לשנייה על ידי הקטנה ניכרת של מספר הפיקסלים שצריכים להיות מעובדים על ידי ה-CMUcam2.
התאמה אישית של חבילת פלט. ה-CMUcam2 מיישמת התאמה אישית גמישה בהרבה של חבילות מאשר ה-CMUcam1. קיימות פקודות המאפשרות למשתמש להתאים אישית כל חבילה הנוצרת על ידי כל פקודה כך שתחזיר רק את הערכים הנחוצים ליישום מסוים. הדבר יכול להפחית מאוד את כמות הנתונים המשודרים אל המעבד המארח והמעובדים על ידו במצבים רבים.
הפרשי פיקסלים. חדש לחלוטין ב-CMUcam2 הוא מצב הפרשי פיקסלים אופציונלי. במצב הפרשי פיקסלים הפיקסלים עוברים עיבוד מקדים לפני שהם מועברים לשאר קוד ה-CMUcam2. שלב עיבוד מקדים זה שולח ערכי פיקסלים חדשים לשאר הקוד, שהם ההפרש בין ערך הפיקסל הנוכחי לקודם לו. ביסודו של דבר, מה שזה עושה הוא סינון של הכול מלבד קצוות אנכיים בתמונה. זוהי פעולה עוצמתית מאוד, ובעזרת תכנות נוסף במעבד המארח, ניתן להשתמש בה כדי לסייע בזיהוי מכשולים ובמעקב אחר קו.
דגימה מטה. חדש לחלוטין ב-CMUcam2 הוא מצב דגימה מטה אופציונלי. במצב דגימה מטה תוכנת ה-CMUcam2 מקטינה את רזולוציית תמונת המצלמה לפני עיבודה. היתרון בכך הוא שיש הרבה פחות פיקסלים לעבד ולשדר. מכיוון שהדבר נעשה בתוכנה, דגימה מטה גורמת רק לעלייה קטנה מאוד במהירות העיבוד. התועלת הגדולה היא בהפחתת כמות הנתונים המשודרים. במקרה של פריקת פריים תמונה, דגימה מטה יכולה בקלות להקטין את גודל הנתונים ובכך להקטין את זמן השידור בפי 2 או 4 או יותר. באופן דומה, כאשר משתמשים במצבי שורת ביטמאפ, ניתן להקטין מאוד את גודל תמונת הביטמאפ, ובכך להפחית את כמות הנתונים שמעבד מארח צריך לקבל ולעבד.
בקרת סרוו. ה-CMUcam1 המקורית תמכה בסרוו יחיד בלבד, וסרוו זה פעל כראוי רק בקצבי באוד מסוימים וכאשר ה-CMUcam1 הייתה במצב הזרמה. ה-CMUcam2 תומכת בעד חמישה סרוואים. קוד בקר הסרוו ב-CMUcam2 מיושם כתהליך רקע כך שיציאות הסרוו תמיד נשארות יציבות, וניתן להשתמש בו כפי שהיה נעשה שימוש בכל בקר סרוו אחר. בנוסף, ניתן להגדיר את ה-CMUcam2 לשלוט אוטומטית בסרוואי pan ו-tilt. במצב זה ה-CMUcam2 תעדכן את מיקומי הסרוו בכל פעם שהיא מקבלת פקודה לחשב נתוני מעקב צבע.
חיסכון בחשמל. חדשים לחלוטין ב-CMUcam2 הם מצבי חיסכון בחשמל. ביישומים מסוימים אין צורך שה-CMUcam2 תעבד נתוני תמונה ברציפות. במקרים אלה ניתן להורות ל-CMUcam2 להיכנס למגוון מצבי כיבוי (או שינה). שום פקודות מעקב או בקרת סרוו לא יתרחשו כאשר ה-CMUcam2 נמצאת באחד ממצבים אלה. שליחת פקודה טורית פשוטה מעירה את המצלמה בחזרה תוך אלפיות שנייה בודדות.
מה ההבדל בין שימוש במודול OV6620 לבין OV7620 עם ה-CMUcam2?#
מבוא#
מבחינת יכולות, חיישן OV7620 הוא חיישן ברזולוציה גבוהה יותר (664x492 מיקומי חיישן גולמיים) מחיישן OV6620 (356x292 מיקומי חיישן גולמיים). אך לעובדה זו יש מעט מאוד קשר לסוגיות המתעוררות בעת בחינת איזה מחיישנים אלה מתאים ביותר ליישום שלך של ה-CMUcam2. להלן רשימה של שיקולים.
רזולוציה#
בעוד שנכון שחיישן OV7620 הוא חיישן ברזולוציה גבוהה יותר מ-OV6620, עקב גודל הזיכרון הקבוע של מאגר הפריימים של ה-CMUcam2, ה-CMUcam2 תומכת רק ברזולוציה יחידה של 160x239 עבור חיישן OV7620. ה-CMUcam2 תומכת במצב רזולוציה נמוכה של 88x143 ובמצב רזולוציה גבוהה של 176x255 עבור חיישן OV6620. אז באמצעות ה-OV6620 במצב רזולוציה גבוהה ניתן למעשה להשיג פעולה ברזולוציה גבוהה יותר ממצב הרזולוציה היחידה הזמין עבור חיישן OV7620.
קצב פריימים#
בעיה נוספת הקשורה לרזולוציה היא קצב הפריימים המרבי בעת עיבוד רציף של זרם תמונות. ככל שהרזולוציה נמוכה יותר, כך פחות פיקסלים צריכים להיות מעובדים וכך גבוה יותר קצב הפריימים הניתן להשגה. אף על פי שניתן להשיג עלייה בקצב הפריימים על ידי שינוי קצב הדגימה מטה וגודל החלון הווירטואלי, למספר הפיקסלים בפועל שמפיק החיישן יש השפעה גדולה בהרבה. בשל כך, ה-CMUcam2 יכולה להשיג קצב פריימים גבוה בהרבה כאשר ה-OV6620 מופעל במצב הרזולוציה הנמוכה שלו מאשר מצב הרזולוציה היחידה הזמין עבור ה-OV7620.
פלט וידאו אנלוגי#
הבדל נוסף בין שני החיישנים הוא הפורמט של פלט הווידאו האנלוגי של שני החיישנים. חיישן OV6620 מפיק בפורמט PAL אנלוגי וחיישן OV7620 מפיק בפורמט NTSC אנלוגי. בשני המקרים הפלט הוא בשחור-לבן.
חשוב לציין שברוב השימושים ב-CMUcam2 הפלט האנלוגי לא ישמש. ביישום טיפוסי תוצאות עיבוד התמונה או הפיקסלים הגולמיים משודרים דיגיטלית דרך היציאה הטורית למחשב המארח או למיקרו-בקר ולכן זו אינה בעיה. עם זאת, אם וידאו שחור-לבן חי חשוב, אזי ייתכן שתרצה לקחת בחשבון את הפורמט של פלט הווידאו האנלוגי.
סיכום#
ההמלצה שלנו היא שמודול ה-OV6620 הוא הבחירה הטובה ביותר כמעט לכל היישומים, במיוחד בהתחשב בעלותו הנמוכה יותר ובזמן העיבוד המהיר יותר שניתן להשיג עם מודול זה. ביישומים הנדירים שבהם נדרש פלט וידאו אנלוגי מונוכרומטי NTSC, ייתכן שתרצו לשקול את ה-OV7620.
האם ישנן בעיות ידועות בגרסאות הקושחה הנוכחיות של CMUcam2?#
כן. בשחרור 1.00 הפקודה ”RM“ (Raw Mode) לא עבדה כראוי. שחרור 1.01 מתקן בעיה זו.
הקושחה ב-CMUcam2 ניתנת לשדרוג, אך נדרש מתכנת SX-Key (או תואם) כדי לעשות זאת. קבצי ה-”hex“ עבור תמונות ה-ROM זמינים בדף ה-הורדות.