תוכן עניינים:

CribSense: צג תינוקות נטול מגע, מבוסס וידאו: 9 שלבים (עם תמונות)
CribSense: צג תינוקות נטול מגע, מבוסס וידאו: 9 שלבים (עם תמונות)

וִידֵאוֹ: CribSense: צג תינוקות נטול מגע, מבוסס וידאו: 9 שלבים (עם תמונות)

וִידֵאוֹ: CribSense: צג תינוקות נטול מגע, מבוסס וידאו: 9 שלבים (עם תמונות)
וִידֵאוֹ: אל תיגע לבחורה באיפור בחייםםם !!!! don't do that !!! 2024, דֵצֶמבֶּר
Anonim
CribSense: צג תינוקות נטול מגע, מבוסס וידאו
CribSense: צג תינוקות נטול מגע, מבוסס וידאו
CribSense: צג תינוקות נטול מגע, מבוסס וידאו
CribSense: צג תינוקות נטול מגע, מבוסס וידאו

CribSense הוא מוניטור לתינוקות ללא מגע הווידיאו שאתה יכול להכין בעצמך מבלי לשבור את הכסף

CribSense הוא יישום C ++ של הגדלת הווידיאו המיועדת להפעלה ב- Raspberry Pi 3 דגם B. במהלך סוף שבוע, תוכל להתקין צג תינוקות משלך המעלה אזעקה אם תינוקך מפסיק לזוז. כבונוס, כל התוכנה ניתנת לשימוש בחינם למטרות לא מסחריות וניתנת להרחבה בקלות.

ניתן למצוא את המאגר המלא המכיל קבצי מקור ותיעוד בכתובת

למרות שאנו חושבים ש- CribSense די מהנה, חשוב לזכור כי זהו למעשה לא מכשיר בטיחות מוסמך וחסין טיפש. כלומר, הוא צריך להיות מוגדר כראוי ובעל סביבה מבוקרת היטב על מנת לעבוד. לדוגמה, אם הוא לא מכויל היטב ו/או שהסביבה בסרטון אינה תורמת להגדלת וידאו, ייתכן שלא תוכל להשתמש בה. עשינו את זה כפרויקט מהנה כדי לראות עד כמה תוכלי להריץ תוכנות כבדות מחשבים כמו הגדלת וידיאו על חומרה מוגבלת מחשוב כמו Raspberry Pi. כל מוצר אמיתי ידרוש הרבה יותר בדיקות ממה שעשינו. אז, אם אתה משתמש בפרויקט זה, קח את זה למה שהוא: חקירה קצרה של הגדלת הווידאו על פי.

מה שאתה תצטרך:

Raspberry Pi + מצלמה + כלי תצורה:

  • פטל פי 3 דגם ב '
  • ספק כוח 5V 2.5A מיקרו USB
  • מודול מצלמת Raspberry Pi NoIR V2
  • כרטיס MicroSD (השתמשנו בכרטיס 10 Class 16GB)
  • כבל גמיש למצלמת פטל פי (12 אינץ ')
  • רמקולים עם כניסת 3.5 מ"מ
  • צג HDMI
  • מקלדת USB
  • עכבר USB
  • [אופציונלי] כיור קירור פטל פטל (אם אתה מודאג מחום, תוכל להדביק אחת כזו על ה- Pi שלך)

מעגל LED IR לפעולת תאורה חלשה:

  • [3x] דיודות 1N4001
  • התנגדות 1 אוהם, 1W
  • 1W IR LED
  • 2 חוטים לחיבור ה- LED לפי
  • מלחם

שִׁלדָה:

  • גישה למדפסת תלת מימד (נפח בנייה מינימלי = 9.9 אינץ 'x 7.8 אינץ' x 5.9 אינץ ') להדפסת המארז שלנו. עם זאת, אל תהסס לבנות משלך.
  • דבק (כל סוג דבק יעבוד, אך דבק חם מומלץ לאב טיפוס).

שלב 1: דרישות מוקדמות

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

שלב 2: התקנת תוכנת CribSense

CribSense תלוי ב- autoconf, libtool, OpenCV ו- libcanberra, כמו גם בכלי תוכנה נפוצים.

  • autoconf ו- libtool משמשים להגדרה אוטומטית של קבצים מייצרים ולבניית סקריפטים עבור CribSense בפלטפורמות רבות (כמו Linux, OSX ו- Raspberry Pi).
  • OpenCV היא חבילת חזון מחשב עוצמתית המשמשת לעיבוד תמונות ומהווה את הבסיס לקוד הגדלת הווידאו וזיהוי התנועה. יש לו תמיכה מצוינת, קל לשימוש ובעל ביצועים טובים.
  • libcanberra היא ספרייה פשוטה להשמעת צלילי אירועים. הוא משמש להפעלת צליל האזעקה עבור CribSense.

בקר בדפים האישיים שלהם כדי לקבל פרטים מלאים.

התקן אותם על ידי פתיחת מסוף ב- Pi שלך והפעלתו:

sudo apt-get install git build-essential autoconf libtool libopencv-dev libcanberra-dev

בשלב הבא עליך להגדיר את מנהל ההתקן של המצלמה לטעינה אוטומטית על ידי הוספת bcm2835-v4l2 ל- `/etc/modules-load.d/modules.conf`. Modules.conf שלך אמור להיראות כך:

# /etc /modules: מודולי ליבה לטעון בזמן האתחול.

# # הקובץ מכיל את שמות מודולי הליבה שיש לטעון # בזמן האתחול, אחד לכל שורה. התעלמות משורות המתחילות ב- "#". i2c-dev bcm2835-v4l2

לאחר עריכת הקובץ, עליך לאתחל את ה- Pi שלך. מנהל התקן זה משמש את CribSense כדי למשוך מסגרות ישירות ממצלמת NoIR.

לאחר מכן, תוכל לשכפל את המאגר על ידי הפעלת:

שיבוט git

לאחר מכן, היכנס למאגר ובנה את התוכנה על ידי הפעלה

cd CribSense

./autogen.sh --prefix =/usr --sysconfdir =/etc-disibable-debug עשה sudo הפוך להתקין sudo systemctl daemon-reload

מזל טוב, התקנת את כל התוכנות הדרושות!

תְצוּרָה

CribSense ניתנת להתאמה אישית באמצעות קובץ תצורה INI פשוט. לאחר הפעלת 'בצע התקנה', קובץ התצורה ממוקם בכתובת /etc/cribsense/config.ini. אתה יכול להציג ולערוך פרמטרים אלה על ידי הפעלה

sudo nano /etc/cribsense/config.ini

הסבר קצר על כל פרמטר ניתן בתצורת ברירת המחדל, אך פרטים נוספים זמינים בכתובת https://lukehsiao.github.io/CribSense/setup/config/. נדון גם בכיול ותצורה בסוף מדריך זה.

הפעלת CribSense

CribSense תוכנן לפעול בעת ההפעלה באמצעות שירות systemd. בזמן שאתה מחובר ל- Raspberry Pi שלך באמצעות המקלדת והעכבר, עליך לוודא שפרמטרי התצורה פועלים עבור העריסה שלך. ייתכן שתצטרך לכוון מחדש את הפרמטרים האלה אם תזיז אותו.

בזמן שאתה מכוון את הפרמטרים, תוכל להריץ cribsense כרצונו משורת הפקודה על ידי הפעלה

cribsense --config /etc/cribsense/config.ini

ברגע שאתה מרוצה, תוכל להפעיל הפעלה אוטומטית על ידי הפעלה

sudo systemctl אפשר cribsense

אתה יכול לעצור את הריצה של cribsense באופן אוטומטי על ידי הפעלה

sudo systemctl השבת cribsense

סקירת תוכנה

תוכנת CribSense היא הלב והנשמה של הפרויקט הזה. ראינו כמה מההדגמות הגדולות של הגדלת הווידאו מ- MIT, ורצינו לנסות להריץ אלגוריתם דומה ב- Raspberry Pi. זה דרש יותר ממהירות פי 10 מהעבודה של tbl3rd על יישום C ++ שלו של הגדלת הווידאו כדי לרוץ בזמן אמת על ה- Pi. האופטימיזציות הנדרשות הנחו את עיצוב התוכנה שלנו.

ברמה גבוהה, CribSense עוברת שוב ושוב דרך מכונת מצב תוכנה. ראשית, הוא מחלק כל מסגרת וידיאו בגודל 640x480 בגווני אפור לשלושה חלקים אופקיים (640x160) ליישוב מטמון טוב יותר. לאחר מכן הוא מגדיל כל להקה בשרשור נפרד, ועוקב אחר התנועה הנראית במסגרת. לאחר מעקב אחר תנועה במשך מספר שניות, הוא קובע את אזור התנועה העיקרי וחותך אליו את המסגרת. זה מקטין את מספר הפיקסלים הכולל שהאלגוריתם צריך לעבד. לאחר מכן, CribSense עוקב אחר כמות התנועה בזרם החתוך ומשמיע אזעקה אם לא נתפסת תנועה במשך פרק זמן שניתן להגדיר. מעת לעת, CribSense תפתח את התצוגה שוב כדי לעקוב אחר המסגרת המלאה במקרה שהתינוק זז וחתוך מחדש באזור התנועה העיקרי החדש.

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

אופטימיזציות כמו multithreading, חיתוך מסתגל ואופטימיזציות מהדרים העניקו לנו בערך 3x, 3x ו- 1.2x מהירות, בהתאמה. זה איפשר לנו להשיג את המהירות פי 10 הנדרשת כדי להריץ בזמן אמת על ה- Pi.

ניתן למצוא את הפרטים המלאים בדף ארכיטקטורת התוכנה של מאגר CribSense.

אם אתה מעוניין בהגדלת וידאו, בקר בדף MIT.

שלב 3: הכנת החומרה שלך: חבר את המצלמה שלך

הכנת החומרה שלך: חבר את המצלמה שלך
הכנת החומרה שלך: חבר את המצלמה שלך

ראשית, עליך להחליף את הכבל בגודל 6 אינץ 'המצורף למצלמה עם כבל 12 אינץ'. לשם כך, תוכל פשוט לעקוב אחר הדרכה זו כיצד להחליף את כבל המצלמה.

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

תוכלו להבחין שיש לנו כבל בגודל 24 אינץ 'בתמונות שלנו. זה היה ארוך מדי. הכבל בגודל 12 אינץ' ברשימת החומרים הוא באורך הרבה יותר סביר.

שלב 4: הכנת החומרה שלך: IR LED

הכנת החומרה שלך: IR LED
הכנת החומרה שלך: IR LED
הכנת החומרה שלך: IR LED
הכנת החומרה שלך: IR LED
הכנת החומרה שלך: IR LED
הכנת החומרה שלך: IR LED

CribSense קל יחסית לבנייה, והוא מורכב ברובו מחלקים זמינים מסחרית. כפי שניתן לראות באיור לעיל, ישנם 5 רכיבי חומרה עיקריים, מתוכם 2 בלבד. דף זה יסביר כיצד לבנות את מעגל ה- LED LED, והעמוד הבא יעסוק כיצד לבנות את השלדה.

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

על מנת לספק תאורה נאותה בלילה, אנו משתמשים ב- LED IR, שאינו נראה לעין האנושית אך גלוי למצלמת NoIR. נורית ה- IR אינה צורכת הרבה כוח בהשוואה ל- Raspberry Pi, לכן אנו משאירים את ה- IR LED מופעל למען הפשטות.

בגרסאות קודמות של ה- Pi, תפוקת הזרם המרבית של סיכות אלה הייתה 50mA. ה- Raspberry Pi B+ הגדיל את זה ל 500mA. עם זאת, אנו פשוט משתמשים בסיכות החשמל של 5V לפשטות, שיכולה לספק עד 1.5A. המתח קדימה של נורית ה- IR הוא בערך 1.7 ~ 1.9V בהתאם למדידות שלנו. למרות שנורית ה- IR יכולה למשוך 500mA מבלי לפגוע בעצמה, אנו מפחיתים את הזרם לכ -200mA כדי להפחית את החום ואת צריכת החשמל הכוללת. תוצאות ניסוי מראות גם כי נורית ה- IR בהירה מספיק עם 200mA של זרם כניסה. כדי לגשר על הפער בין 5V ל- 1.9V, אנו משתמשים בשלוש דיודות 1N4001 ונגד 1 אוהם בסדרה עם נורית ה- IR. ירידת המתח מעל החוט, הדיודות והנגד היא בערך 0.2V, 0.9V (לכל אחד) ו- 0.2V, בהתאמה. לפיכך, המתח מעל נורית ה- IR הוא 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V. פיזור החום מעל הנורית הוא 0.18W ו- 0.2W מעל הנגד, והכל בתוך הדירוג המקסימלי שלהם.

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

בעת הלחמה לחוטים, וודא שאורך החוטים הוא לפחות 12 סנטימטרים ובעלי כותרות סיכות שיכולות להחליק מעל ה- GPIO של ה- Pi.

שלב 5: הכנת החומרה שלך: מארז

הכנת החומרה שלך: שלדה
הכנת החומרה שלך: שלדה
הכנת החומרה שלך: שלדה
הכנת החומרה שלך: שלדה
הכנת החומרה שלך: שלדה
הכנת החומרה שלך: שלדה

קבצי מקור:

  • מקרה STL
  • קייס מייקרבוט
  • כריכה STL
  • כריכה Makerbot

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

  • קשרי כבל
  • מנעול כפול 3M
  • סקוטש
  • קלטת

אם יש לך גישה ל- MakerBot Replicator (הדור החמישי), אתה יכול פשוט להוריד את קובצי.makerbot למארז ולכסות אותו על ה- MakerBot Replicator ולהדפיס אותו. לוקח בערך 6 שעות להדפיס את המארז ו -3 שעות להדפיס את הכריכה. אם אתה משתמש במדפסת תלת מימד מסוג אחר, אנא המשך לקרוא.

נדרש נפח בנייה מינימלי של 9.9 "(L) x 7.8" (W) x 5.9 "(H) להדפסת CribSense. אם אין לך גישה למדפסת תלת -ממד עם נפח build זה, תוכל להשתמש בהדפסה תלת -ממדית מקוונת. שירות (כגון Shapeways או Sculpteo) להדפסת CribSense. רזולוציית ההדפסה המינימלית היא 0.015 ". אם אתה משתמש במדפסת תלת מימד מסוג ייצור נימים מותכים, פירוש הדבר שקוטר הזרבובית שלך צריך להיות 0.015 אינץ 'או קטן יותר. מדפסות עם רזולוציות הדפסה נמוכות יותר (קוטר זרבובית גדולות יותר) עשויות לפעול, אך יתכן ש- Raspberry Pi לא יתאים לשלדה. אנו ממליצים על PLA (חומצה פוליאקטית) כחומר ההדפסה המועדף. פלסטיק אחר עשוי לעבוד, אך ייתכן ש- Raspberry Pi לא יתאים למקרה אם מקדם ההתרחבות התרמית של הפלסטיק הנבחר גדול מזה של PLA. אם למדפסת התלת -ממד שלך יש צלחת בנייה מחוממת, כבה את החימום לפני שתמשיך.

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

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

שלב 6: הכנת החומרה שלך: הרכבה

הכנת החומרה שלך: הרכבה
הכנת החומרה שלך: הרכבה
הכנת החומרה שלך: הרכבה
הכנת החומרה שלך: הרכבה
הכנת החומרה שלך: הרכבה
הכנת החומרה שלך: הרכבה
הכנת החומרה שלך: הרכבה
הכנת החומרה שלך: הרכבה

לאחר שהכל חומרה מוכנה, תוכל להתחיל בהרכבה. ניתן להשתמש בכל דבק בתהליך זה, אך אנו ממליצים על דבק חם משתי סיבות עיקריות. דבק חם מתייבש במהירות, כך שאינך צריך לחכות זמן רב עד שהדבק יתייבש. בנוסף, דבק חם ניתן להסרה אם אתה עושה טעות. כדי להסיר דבק חם מיובש, יש להשרות את הדבק החם באלכוהול שפשוף (איזופרופיל). אנו ממליצים על ריכוז של 90% ומעלה, אך ריכוז של 70% עדיין יפעל. השריית הדבק החם המיובש באלכוהול איזופרופיל תחליש את הקשר בין הדבק למשטח הבסיס, ותאפשר לך לקלף את הדבק בצורה נקייה. כאשר משרים את הדבק באלכוהול איזופרופיל, יש לכבות את ה- Raspberry Pi ולנתק אותו מהחשמל. הקפד לתת לכל דבר להתייבש לפני החלת דבק חם מחדש והפעלת ה- Raspberry Pi.

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

  1. הכנס את ה- Raspberry Pi למארז. יהיה עליך להגמיש אותו מעט בכדי להיכנס ליציאת השמע, אך ברגע שהיא נכנסת, שקע השמע ישמור אותה במקומה. ברגע שהוא יהיה במקומו, ודא כי עדיין ניתן לגשת לכל היציאות (למשל, ניתן לחבר את כבל החשמל).
  2. לאחר מכן, השתמש בדבק חם כדי להדביק את הפי למקומו ולחבר את המצלמה אל הפי. ישנם גם חורי בורג אם אתה מעדיף להשתמש בהם.
  3. כעת, הדבק את הנורית והמצלמה לכריכה הקדמית (בתמונה). התחל בהדבקה חמה של מצלמת ה- NoIR לחור המצלמה. ודא שהמצלמה צמודה ומקושרת עם השלדה. אל תשתמש יותר מדי דבק; אחרת, לא תוכל להתאים את המצלמה למארז הראשי. הקפד להפעיל את ה- Pi והסתכל על המצלמה ('raspistill -v', למשל) כדי לוודא שהיא זווית היטב ויש לה שדה ראייה טוב. אם לא, הסר את הדבק החם והנח אותו מחדש.
  4. לאחר מכן הדבק את נורית ה- IR לחור בצוואר המכסה. הצוואר בזווית של 45 מעלות לצד הארת הצד של העריסה, מה שמביא ליותר צללים במצבי תאורה נמוכה. זה מוסיף יותר ניגודיות לתמונה, מה שמקל על זיהוי תנועה.
  5. חבר את חוטי LED ה- IR לסיכות הכותרת של ה- Raspberry Pi כפי שמוצג בתמונה הסכמטית.
  6. ארזו את הכבלים לתוך המארז באופן שאינו מקמט או מאמץ אותם. בסופו של דבר קיפלנו את סגנון אקורדיון הכבלים מכיוון שכבל הגמישה של המצלמה שלנו היה ארוך מדי.
  7. כשהכל תחוב, דבק חם סביב הקצוות שבהם שתי החלקים נפגשים, ואוטם אותם במקומם.

שלב 7: כיול

Image
Image
כִּיוּל
כִּיוּל

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

להלן דוגמא של קובץ התצורה:

[io]; תצורת קלט/פלט

; קלט = path_to_file; קובץ קלט לשימוש input_fps = 15; fps של קלט (40 מקסימום, 15 מומלץ אם משתמשים במצלמה) full_fps = 4.5; fps שבו ניתן לעבד מסגרות מלאות crop_fps = 15; fps שבו ניתן לעבד מסגרות קצוצות מצלמה = 0; מצלמה לשימוש ברוחב = 640; רוחב גובה סרטון הקלט = 480; גובה סרטון הקלט time_to_alarm = 10; כמה שניות לחכות ללא תנועה לפני אזעקה. [חיתוך]; חיתוך הגדרות חיתוך אדפטיבי = נכון; אם לחתוך frames_to_settle = 10; # מסגרות להמתנה לאחר האיפוס לפני עיבוד roi_update_interval = 800; # מסגרות בין חישוב החזר ROI roi_window = 50; # מסגרות למעקב לפני בחירת החזר ההשקעה [תנועה]; הגדרות זיהוי תנועה erode_dim = 4; ממד הגרעין השחוק dilate_dim = 60; ממד הגרעין המורחב diff_threshold = 8; יש צורך בהבדל שרירי הבטן לפני זיהוי משך השינוי = 1; # מסגרות לשמירה על תנועה לפני סימון pixel_threshold = 5; # פיקסלים שחייבים להיות שונים כדי לסמן אותם בתנועה show_diff = false; להציג את ההבדל בין 3 מסגרות [הגדלה]; הגדרות הגדלת הווידאו מגבירות = 25; ההגברה % הרצויה חתך נמוך = 0.5; התדירות הנמוכה של פס הרצועה. חתך גבוה = 1.0; התדירות הגבוהה של פס הרצועה. סף = 50; סף השלב כאחוזים של pi. show_magnification = false; הצג את מסגרות הפלט של כל הגדלה [debug] print_times = false; הדפס זמני ניתוח

כיול האלגוריתם הוא מאמץ איטרטיבי, ללא פתרון מדויק. אנו מעודדים אותך להתנסות בערכים שונים, בשילובם עם תכונות ניפוי הבאגים, כדי למצוא את שילוב הפרמטרים המתאימים ביותר לסביבתך. לפני שתתחיל בכיול, ודא כי show_diff ו- show_magnification מוגדרים כ- true.

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

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

אם אתה מפעיל את CribSense עם show_diff = true ואתה מבחין שיותר מדי מפלט הצובר לבן, או שחלק בלתי קשור לחלוטין של הסרטון מזוהה כתנועה (למשל מנורה מהבהבת), הגדל את erode_dim עד שרק החלק של הסרטון המתאים לתינוק שלך הוא החלק הלבן הגדול ביותר. האיור הראשון מציג דוגמה שבה ממד השחיקה נמוך מדי לכמות התנועה במסגרת, ואילו הבאה מציגה מסגרת מכוילת היטב.

לאחר שהדבר מכויל, וודא ש- pixel_threshold מוגדר לערך כזה ש- "תנועת פיקסל" מדווחת רק על ערכי השיא של תנועת הפיקסלים, ולא על כולם (כלומר עליך לנתק את הרעש). באופן אידיאלי, תראה פלט כזה במסוף שלך, שבו יש דפוס תקופתי ברור המתאים לתנועה:

[מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 1.219812 הרץ

[מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 1.219812 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 1.219812 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 1.219812 הרץ [מידע] תנועת פיקסל: 44 [מידע] אומדן תנועה: 1.219812 הרץ [מידע] תנועה של פיקסל: 0 [מידע] אומדן תנועה: 1.219812 הרץ [מידע] תנועת פיקסל: 161 [מידע] אומדן תנועה: 1.219812 הרץ [מידע] תנועת פיקסל: 121 [מידע] הערכת תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 86 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועה של פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועה של פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] פיקסל מובם ent: 0 [מידע] הערכת תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] הערכת תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועה של פיקסל: 0 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועה של פיקסל: 97 [מידע] אומדן תנועה: 0.841416 הרץ [מידע] תנועת פיקסל: 74 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] פיקסל תנועה: 0 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועה של פיקסל: 60 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 48 [מידע] תנועה הערכה: 0.839298 הרץ [מידע] תנועת פיקסל: 38 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 29 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 28 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 22 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועה של פיקסל: 0 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.839298 הרץ [מידע] תנועת פיקסל: 0 [מידע] אומדן תנועה: 0.839298 הרץ

אם הפלט שלך נראה יותר כך:

[מידע] תנועת פיקסל: 921 [מידע] אומדן תנועה: 1.352046 הרץ

[מידע] תנועה של פיקסל: 736 [מידע] אומדן תנועה: 1.352046 הרץ [מידע] תנועה של פיקסל: 666 [מידע] אומדן תנועה: 1.352046 הרץ [מידע] תנועה של פיקסל: 663 [מידע] אומדן תנועה: 1.352046 הרץ [מידע] תנועת פיקסל: 1196 [מידע] אומדן תנועה: 1.352046 הרץ [מידע] תנועת פיקסל: 1235 [מידע] אומדן תנועה: 1.352046 הרץ [מידע] תנועת פיקסל: 1187 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 1115 [מידע] הערכת תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 959 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 744 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 611 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 468 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועה של פיקסל: 371 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 307 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 270 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 234 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 197 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 179 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 164 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 239 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 733 [מידע] אומדן תנועה: 1.456389 הרץ [מידע] תנועת פיקסל: 686 [מידע] אומדן תנועה: 1.229389 הרץ [מידע] תנועה של פיקסל: 667 [מידע] אומדן תנועה: 1.229389 הרץ [מידע] תנועת פיקסלים: 607 [מידע] אומדן תנועה: 1.229389 הרץ [מידע] תנועת פיקסל: 544 [מידע] אומדן תנועה: 1.229389 הרץ [מידע] תנועה של פיקסל: 499 [מידע] אומדן תנועה: 1.229389 הרץ [מידע] תנועת פיקסל: 434 [מידע] אומדן תנועה: 1.229389 הרץ [מידע] תנועת פיקסל: 396 [מידע] אומדן תנועה: 1.229389 הרץ [מידע] תנועת פיקסל: 375 [מידע] אומדן תנועה: 1.229389 הרץ [מידע] תנועת פיקסל: 389 [מידע] אומדן תנועה: 1.229389 הרץ [מידע] תנועת פיקסל: 305 [מידע] אומדן תנועה: 1.312346 הרץ [מידע] תנועת פיקסל: 269 [מידע] אומדן תנועה: 1.312346 הרץ [מידע] תנועת פיקסלים: 1382 [מידע] תנועה E stimate: 1.312346 הרץ [מידע] תנועת פיקסל: 1086 [מידע] אומדן תנועה: 1.312346 הרץ [מידע] תנועת פיקסל: 1049 [מידע] אומדן תנועה: 1.312346 הרץ [מידע] תנועת פיקסל: 811 [מידע] אומדן תנועה: 1.312346 הרץ [מידע] תנועת פיקסל: 601 [מידע] אומדן תנועה: 1.312346 הרץ [מידע] תנועת פיקסל: 456 [מידע] אומדן תנועה: 1.312346 הרץ

התאם את pixel_threshold ו- diff_threshold עד שיראו רק פסגות ותנועת הפיקסלים היא 0 אחרת.

שלב 8: הפגנה

Image
Image

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

כאשר אתה ממקם את CribSense מעל העריסה, יהיה עליך לייעל את המרחק בין התינוק למצלמה. באופן אידיאלי, חזה התינוק שלך ימלא פחות מ -1/3 מהמסגרת. הילד לא צריך להיות רחוק מדי, אחרת הסרטון ברזולוציה נמוכה יתקשה למצוא מספיק פרטים כדי להגדיל אותו. אם המצלמה קרובה מדי, ייתכן שהמצלמה לא תוכל לראות את ילדך אם הם מתגלגלים או זזים מהמסגרת. באופן דומה, אם הילד נמצא מתחת לשמיכה "אוהלית", כאשר יש מעט מגע בין השמיכה לחזה של הילד, יתכן שיהיה קשה לזהות תנועה. תחבקי אותם היטב!

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

עם עוד עבודה, אנו חושבים שמישהו יכול לשפר את התוכנה שלנו כך שכיול הוא תהליך חלק הרבה יותר. בעתיד, ניתן להוסיף גם תכונות נוספות כמו הודעות דחיפה.

שלב 9: פתרון בעיות

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

להלן מספר טיפים לפתרון בעיות שאספנו בעת יצירת CribSense.

שום אזעקה לא מתנגנת

  • הרמקולים שלך עובדים?
  • האם תוכל לנגן צלילים אחרים מה- Pi מחוץ לאזעקת CribSense?
  • אם הפי שלך מנסה לנגן אודיו דרך HDMI ולא יציאת השמע? בדוק את דף תצורת האודיו של Raspberry Pi כדי לוודא שבחרת את הפלט הנכון.
  • האם תוכנת CribSense מזהה תנועה? אם CribSense פועל ברקע, תוכל לבדוק עם journalctl -f במסוף.
  • אם CribSense מרגיש הרבה תנועה, ייתכן שיהיה עליך לכייל את CribSense.

נורית ה- IR אינה פועלת

  • האם אתה יכול לראות צבע אדום קלוש כאשר אתה מסתכל על נורית ה- IR? טבעת אדומה חלשה צריכה להיות גלויה כאשר הנורית דולקת.
  • בדוק את הקוטביות של החיבורים. אם +5V ו- GND הפוכים, זה לא יעבוד.
  • חבר את הנורית לחשמל עם מגבלת מתח/זרם 5V/0.5A. בדרך כלל הוא צריך לצרוך 0.2A ב 5V. אם זה לא קורה, ייתכן שהנורית שלך תקלה.

CribSense מזהה תנועה למרות שאין תינוק

  • האם כיולת את CribSense כראוי?
  • זכור, CribSense רק מחפש שינויים בערכי הפיקסלים

    • האם יש צללים הנעים בתוך המסגרת?
    • האם יש תאורה מהבהבת או משתנה?
    • האם CribSense מותקן על משטח יציב (כלומר משהו שלא ירעוד אם אנשים הולכים על ידו)?
    • האם ישנם מקורות תנועה אחרים במסגרת (מראות הלוכדות השתקפויות וכו ')?

CribSense אינו מזהה תנועה למרות שיש תנועה

  • האם כיולת את CribSense כראוי?
  • האם יש משהו שמפריע למצלמה?
  • האם אתה בכלל יכול להתחבר למצלמה מ- Raspberry Pi? בדוק על ידי הפעלת raspistill -v במסוף כדי לפתוח את המצלמה ב- Pi למשך מספר שניות.
  • אם אתה מסתכל על מצב sudo systemctl cribsense, האם CribSense אכן פועל?
  • האם התינוק שלך מתחת לשמיכה ש"אוהלת "כלפי מעלה כך שהיא לא יוצרת קשר עם הילד? אם יש פערי אוויר משמעותיים בין השמיכה לילד, השמיכה עלולה להסוות את התנועה.
  • האם אתה יכול לראות את התנועה אם אתה מגביר את הסרטון יותר?
  • האם אתה יכול לראות את התנועה אם אתה מכוון את הפסקת התדרים הנמוכה והגבוהה?
  • אם זה קורה באור חלש בלבד, האם וודאת שהכיול שלך פועל באור חלש?

CribSense לא בונה

האם התקנת את כל התלות?

אני לא יכול להריץ cribsense משורת הפקודה

  • האם כתבת בטעות משהו בעת שהפעלת./autogen.sh --prefix =/usr --sysconfdir =/etc-disibable-debug במהלך בניית התוכנה שלך?
  • האם קיים cribsense ב- /usr /bin?
  • איזה נתיב מסופק אם אתה מפעיל "איזה cribsense"?

מוּמלָץ: