Sisällysluettelo:

CribSense: kontaktiton, videopohjainen vauvavalvonta: 9 vaihetta (kuvilla)
CribSense: kontaktiton, videopohjainen vauvavalvonta: 9 vaihetta (kuvilla)

Video: CribSense: kontaktiton, videopohjainen vauvavalvonta: 9 vaihetta (kuvilla)

Video: CribSense: kontaktiton, videopohjainen vauvavalvonta: 9 vaihetta (kuvilla)
Video: CribSenseSetup 2024, Marraskuu
Anonim
CribSense: kontaktiton, videopohjainen vauvavalvonta
CribSense: kontaktiton, videopohjainen vauvavalvonta
CribSense: kontaktiton, videopohjainen vauvavalvonta
CribSense: kontaktiton, videopohjainen vauvavalvonta

CribSense on videopohjainen kontaktiton vauvanvalvontalaite, jonka voit tehdä itse rikkomatta pankkia

CribSense on C ++ -toteutus videon suurennuksesta, joka on viritetty toimimaan Raspberry Pi 3 -mallissa B. Viikonloppuna voit asentaa oman pinnasängyn päällä olevan vauvamonitorin, joka herättää hälytyksen, jos vauva lakkaa liikkumasta. Bonuksena kaikki ohjelmistot ovat vapaasti käytettävissä ei-kaupallisiin tarkoituksiin ja ovat helposti laajennettavissa.

Koko lähdetiedostoja ja asiakirjoja sisältävä arkisto löytyy osoitteesta

Vaikka mielestämme CribSense on melko hauskaa, on tärkeää muistaa, että tämä ei ole itse asiassa sertifioitu, idioottivarma turvalaite. Toisin sanoen sen on oltava oikein määritetty ja siinä on oltava hyvin hallittu ympäristö toimiakseen. Jos sitä ei esimerkiksi ole kalibroitu hyvin ja/tai videon ympäristö ei edistä videon suurennusta, et ehkä voi käyttää sitä. Teimme tämän hauskana projektina nähdäksemme, kuinka hyvin voisimme käyttää raskaita tietokoneohjelmistoja, kuten videon suurennusta, käytettäväksi rajoitetulla laitteistolla, kuten Raspberry Pi. Mikä tahansa todellinen tuote vaatisi paljon enemmän testausta kuin olemme tehneet. Joten jos käytät tätä projektia, ota se sellaisena kuin se on: lyhyt kuvaus videon suurennuksesta Pi: llä.

Mitä tarvitset:

Raspberry Pi + kamera + määritystyökalut:

  • Raspberry Pi 3 Malli B
  • 5V 2.5A Micro USB -virtalähde
  • Raspberry Pi NoIR -kameramoduuli V2
  • MicroSD -kortti (käytimme 16 Gt: n luokan 10 korttia)
  • Joustava kaapeli Raspberry Pi -kameralle (12 ")
  • Kaiuttimet 3,5 mm: n tulolla
  • HDMI -näyttö
  • USB -näppäimistö
  • USB -hiiri
  • [valinnainen] Raspberry Pi -jäähdytyselementti (jos olet huolissasi lämmöstä, voit kiinnittää yhden näistä Pi -laitteeseesi)

IR-LED-piiri hämärässä käytössä:

  • [3x] 1N4001 -diodit
  • 1 ohmia, 1 W vastus
  • 1W IR -LED
  • 2 johtoa LEDin liittämiseen Pi: hen
  • Juotin

Alusta:

  • Pääset käyttämään 3D -tulostinta (vähimmäisrakennustilavuus = 9,9 "x 7,8" x 5,9 "H) rungon tulostamista varten. Voit kuitenkin rakentaa oman.
  • Liima (mikä tahansa liima toimii, mutta kuumaa liimaa suositellaan prototyyppien tekemiseen).

Vaihe 1: Edellytykset

Ennen kuin aloitat vaiheittaisen oppaamme, sinun olisi jo pitänyt asentaa uusin Raspbian-versio SD-kortillesi ja varmistaa, että Pi on toimiva. Sinun on myös otettava kameramoduuli käyttöön, ennen kuin voit käyttää kameraa.

Vaihe 2: CribSense -ohjelmiston asennus

CribSense riippuu autoconfista, libtoolista, OpenCV: stä ja libcanberrasta sekä tavallisista ohjelmistotyökaluista.

  • autoconfia ja libtoolia käytetään automaattisesti määrittämään makefiles ja luomaan komentosarjoja CribSense -ohjelmalle monilla alustoilla (kuten Linux, OSX ja Raspberry Pi).
  • OpenCV on tehokas tietokoneen visio -paketti, jota käytetään kuvankäsittelyyn, ja se on videon suurennus- ja liiketunnistuskoodin perusta. Siinä on suuri tuki, se on helppokäyttöinen ja sillä on hyvä suorituskyky.
  • libcanberra on yksinkertainen kirjasto tapahtumaäänien toistamiseen. Sitä käytetään CribSense -hälytysäänen toistamiseen.

Käy heidän yksittäisillä sivuillaan saadaksesi täydelliset tiedot.

Asenna nämä avaamalla päätelaite Pi -laitteellesi ja käynnistämällä:

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

Seuraavaksi sinun on asetettava kameran ohjain automaattiseen lataamiseen lisäämällä bcm2835-v4l2 tiedostoon "/etc/modules-load.d/modules.conf". Sinun modules.conf -tiedoston pitäisi näyttää tältä:

# /etc /modules: ytimen moduulit ladattavaksi käynnistyksen yhteydessä.

# # Tiedosto sisältää ytimen moduulien nimet, jotka pitäisi ladata # käynnistyksen yhteydessä, yksi per rivi. "#": Lla alkavat rivit ohitetaan. i2c-dev bcm2835-v4l2

Kun tiedosto on muokattu, sinun on käynnistettävä Pi uudelleen. CribSense käyttää tätä ohjainta suoraan kehysten vetämiseen NoIR -kamerasta.

Sitten voit kloonata arkiston suorittamalla:

git -klooni

Siirry seuraavaksi arkistoon ja rakenna ohjelmisto suorittamalla

cd CribSense

./autogen.sh --etuliite =/usr --sysconfdir =/etc --disable-debug make sudo make install sudo systemctl daemon-reload

Onnittelut, olet asentanut kaikki tarvittavat ohjelmistot!

Asetukset

CribSense on muokattavissa yksinkertaisen INI -määritystiedoston kautta. Make -asennuksen jälkeen määritystiedosto sijaitsee osoitteessa /etc/cribsense/config.ini. Voit tarkastella ja muokata näitä parametreja suorittamalla

sudo nano /etc/cribsense/config.ini

Jokaisesta parametrista annetaan lyhyt selitys oletusasetuksissa, mutta lisätietoja on osoitteessa https://lukehsiao.github.io/CribSense/setup/config/. Käsittelemme myös kalibrointia ja kokoonpanoa tämän oppaan lopussa.

Käynnissä CribSense

CribSense on suunniteltu toimimaan käynnistyksen yhteydessä käyttämällä systemd -palvelua. Kun olet yhteydessä Raspberry Pi -laitteeseen näppäimistöllä ja hiirellä, varmista, että kokoonpanoparametrit toimivat sängyn kanssa. Sinun on ehkä viritettävä nämä parametrit uudelleen, jos siirrät sitä.

Kun virität parametreja, voit suorittaa cribsense -komennon haluamallasi tavalla komentoriviltä suorittamalla

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

Kun olet tyytyväinen, voit ottaa automaattisen käynnistyksen käyttöön suorittamalla

sudo systemctl ottaa käyttöön sängyn

Voit lopettaa vauvansängyn käynnistämisen automaattisesti juoksemalla

sudo systemctl poistaa cribsense käytöstä

Ohjelmiston yleiskatsaus

CribSense -ohjelmisto on tämän projektin sydän ja sielu. Näimme joitain MIT: n upeista videon suurennuksen esittelyistä ja halusimme kokeilla samanlaista algoritmia Raspberry Pi: llä. Tämä vaati yli 10-kertaisen nopeutuksen tbl3rd: n työstä videon suurennuksen C ++ -toteutuksessa, jotta se voisi toimia reaaliajassa Pi: llä. Tarvittavat optimoinnit ohjasivat ohjelmiston suunnittelua.

Korkealla tasolla CribSense kiertää toistuvasti ohjelmiston tilakoneen läpi. Ensinnäkin se jakaa kukin 640x480, harmaasävyinen videokehys kolmeen vaakasuoraan osaan (640x160) välimuistin sijainnin parantamiseksi. Sitten se suurentaa jokaisen kaistan erillisessä säikeessä ja valvoo kehyksessä näkyvää liikettä. Kun liike on seurattu useita sekunteja, se määrittää ensisijaisen liikealueen ja rajaa kehyksen siihen. Tämä vähentää algoritmin käsiteltävien pikselien kokonaismäärää. Sitten CribSense valvoo rajatun virran liikemäärää ja antaa hälytyksen, jos liikettä ei havaita määritettävän ajan kuluessa. CribSense avaa säännöllisesti näkymänsä ja seuraa koko kehystä siltä varalta, että lapsi on siirtynyt ja rajata uudelleen uuden ensisijaisen liikealueen ympärille.

Videon suurennusta käytetään tehostamaan signaalin ja kohinasuhteen hienovaraisia liikkeitä, kuten vauvan hengitystä. Se ei ole välttämätöntä suurille liikkeille, mutta voi auttaa erittäin hienovaraisia liikkeitä. Huomaa, että toteutuksemme perustuu löyhästi MIT: n papereissa kuvattuun algoritmiin eikä toimi yhtä hyvin kuin niiden oma koodi.

Optimoinnit, kuten monisäikeinen, mukautuva rajaus ja kääntäjän optimointi, nopeuttivat meitä noin 3x, 3x ja 1,2x. Tämä antoi meille mahdollisuuden saavuttaa 10-kertainen nopeus, joka vaaditaan reaaliaikaisen Pi: n suorittamiseen.

Kaikki tiedot löytyvät CribSense -arkiston ohjelmistoarkkitehtuurisivulta.

Jos olet kiinnostunut videon suurennuksesta, käy MIT: n sivulla.

Vaihe 3: Laitteiston valmisteleminen: Kytke kamera

Laitteiston valmistelu: Liitä kamera
Laitteiston valmistelu: Liitä kamera

Vaihda ensin kameran mukana tullut 6 tuuman kaapeli 12 tuuman kaapeliin. Voit tehdä tämän yksinkertaisesti noudattamalla tätä opetusohjelmaa kameran kaapelin vaihtamisesta.

Yhteenvetona näet kameran takaosassa olevan työntö-/vetokielekkeen, jonka voit vetää ulos irrottaaksesi joustavan kaapelin. Vaihda lyhyt kaapeli pidempään ja työnnä kieleke takaisin sisään.

Huomaat, että kuvissamme on 24 tuuman kaapeli. Se oli liian pitkä. Materiaaliluettelon 12 tuuman kaapeli on paljon järkevämpi.

Vaihe 4: Laitteiston valmistelu: IR -LED

Laitteiston valmistelu: IR -LED
Laitteiston valmistelu: IR -LED
Laitteiston valmistelu: IR -LED
Laitteiston valmistelu: IR -LED
Laitteiston valmistelu: IR -LED
Laitteiston valmistelu: IR -LED

CribSense on suhteellisen helppo rakentaa, ja se koostuu suurelta osin kaupallisesti saatavista osista. Kuten yllä olevasta kuvasta näkyy, laitteistossa on viisi pääkomponenttia, joista vain kaksi on mittatilaustyönä valmistettuja. Tällä sivulla käydään läpi infrapuna -LED -piirin rakentaminen, ja seuraavalla sivulla käsitellään rungon rakentamista.

Tätä osaa varten sinun on hankittava juotin, johdot, diodit, IR -LED ja vastus. Rakennamme piirin, joka on esitetty toisessa kuvassa. Jos olet uusi juotos, tässä on mukava opas, joka saa sinut kiinni. Vaikka tässä oppaassa käsitellään reikien läpi juottamista, voit käyttää näitä perustekniikoita näiden komponenttien liittämiseen yhteen, kuten 3. kuvassa.

Riittävän valaistuksen aikaansaamiseksi yöllä käytämme IR -LEDiä, joka ei näy ihmissilmälle, mutta näkyy NoIR -kameralle. IR -LED ei kuluta paljon virtaa verrattuna Raspberry Pi -laitteeseen, joten IR -LED jätetään päälle yksinkertaisuuden vuoksi.

Aiemmissa Pi -versioissa näiden nastojen maksimivirta oli 50 mA. Raspberry Pi B+ lisäsi tämän 500 mA: ksi. Käytämme kuitenkin yksinkertaisuuden vuoksi vain 5 V: n pistokkeita, jotka voivat syöttää jopa 1,5 A. IR -LEDin etujännite on mittaustemme mukaan noin 1,7-1,9 V. Vaikka IR -LED voi vetää 500 mA vahingoittamatta itseään, pienennämme virran noin 200 mA: ksi lämmön ja kokonaisenergiankulutuksen vähentämiseksi. Kokeelliset tulokset osoittavat myös, että IR -LED on riittävän kirkas 200 mA: n tulovirralla. 5V: n ja 1,9 V: n välisen kuilun kaventamiseksi käytämme kolmea 1N4001 -diodia ja 1 ohmin vastusta sarjassa IR -LED -valon kanssa. Jännitehäviö langan, diodien ja vastuksen yli on noin 0,2 V, 0,9 V (kullekin) ja 0,2 V vastaavasti. Näin ollen jännite IR -LEDin yli on 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V. Lämmönpoisto LED -valon yli on 0,18 W ja 0,2 W vastuksen päällä, kaikki hyvin suurimmillaan.

Mutta emme ole vielä valmiita! Saadaksemme paremman istuvuuden 3D -tulostettuun runkoon, haluamme, että IR -LED -linssi työntyy rungostamme ja että piirilevy on reiän tasalla. Pieni valodiodi oikeassa alakulmassa tulee tiellä. Tämän korjaamiseksi poistamme juottimen ja käännämme sen levyn vastakkaiselle puolelle kahden viimeisen kuvan mukaisesti. Valodiodia ei tarvita, koska haluamme, että LED palaa aina. Yksinkertaisesti vaihtamalla se vastakkaiselle puolelle alkuperäinen LED -piiri ei muutu.

Kun juotat johtoihin, varmista, että johdot ovat vähintään 12 tuumaa pitkiä ja niissä on tapit, jotka voivat liukua Pi: n GPIO: iden yli.

Vaihe 5: Laitteiston valmistelu: Kotelo

Laitteiston valmistelu: Runko
Laitteiston valmistelu: Runko
Laitteiston valmistelu: Runko
Laitteiston valmistelu: Runko
Laitteiston valmistelu: Runko
Laitteiston valmistelu: Runko

Lähdetiedostot:

  • Kotelo STL
  • Case Makerbot
  • Kansi STL
  • Kansi Makerbot

Käytimme yksinkertaista 3D -tulostettua koteloa Pi: n, kameran ja LEDin tallentamiseen. Rungon käyttäminen on valinnaista, mutta suositeltavaa, jotta pienet lapset eivät kosketa alttiisiin sähköpiireihin. Jokainen pinnasänky on erilainen, joten runko ei sisällä kiinnityskulmaa. Useita asennusvaihtoehtoja voivat olla:

  • Nippusiteet
  • 3M Dual Lock
  • Velcro
  • Nauha

Jos sinulla on pääsy MakerBot -replikointilaitteeseen (5. sukupolvi), voit ladata.makerbot -tiedostot kotelolle ja kannelle MakerBot -replikatoriin ja tulostaa. Kotelon tulostaminen kestää noin 6 tuntia ja kannen tulostaminen 3 tuntia. Jos käytät erityyppistä 3D -tulostinta, jatka lukemista.

CribSensen tulostamiseen vaaditaan vähintään 9,9 "(L) x 7,8" (W) x 5,9 "(H) koontitilavuus. Jos sinulla ei ole pääsyä 3D -tulostimeen, jolla on tämä koontitilavuus, voit käyttää online -3D -tulostusta palvelu (kuten Shapeways tai Sculpteo) CribSensen tulostamiseen. Tulostuksen vähimmäistarkkuus on 0,015 ". Jos käytät sulatettua filamenttityyppistä 3D -tulostinta, suuttimen halkaisijan on oltava 0,015 "tai pienempi. Tulostimet, joiden tulostustarkkuus on pienempi (suuttimien suuret halkaisijat), voivat toimia, mutta Raspberry Pi ei ehkä sovi runkoon. Suosittelemme PLA: ta (polymaitohappoa) ensisijaiseksi tulostusmateriaaliksi. Muut muovit voivat toimia, mutta Raspberry Pi ei ehkä sovi koteloon, jos valitun muovin lämpölaajenemiskerroin on suurempi kuin PLA. Jos 3D -tulostimessasi on lämmitetty rakennuslevy, sammuta lämmitin ennen kuin jatkat.

Mallin suuntaaminen tulostimen rakennuslevylle on ratkaisevan tärkeää tulostuksen kannalta. Nämä mallit on suunniteltu huolellisesti, joten niitä ei tarvitse tulostaa tukimateriaalilla, mikä säästää muovia ja parantaa tulostuslaatua. Ennen kuin jatkat, lataa kotelon ja kannen 3D -tiedostot. Kun tulostat näitä malleja, CribSense -kaulan on oltava tasaisesti asennuslevyn päällä. Tämä varmistaa, että mallien kaikki ylityskulmat eivät ylitä 45 astetta, jolloin tukimateriaalia ei tarvita. Ohjeita 3D -mallien suuntaamiseen tulostimesi koontitilavuudessa on 3D -tulostimen mukana toimitetussa käyttöoppaassa. Esimerkkejä kotelon ja kannen rakenteen suunnasta on esitetty yllä.

Sen lisäksi, että CribSense -kaula on asetettu tasaiseksi rakennuslevyä vasten, saatat huomata, että malleja pyöritetään pystyakselin ympäri. Tämä voi olla tarpeen, jotta malli mahtuu 3D -tulostimesi koontitilavuuteen. Tämä kierto on valinnainen, jos koontitilavuutesi pituus on tarpeeksi pitkä CribSense -sovellukseen.

Vaihe 6: Laitteiston valmisteleminen: Kokoonpano

Laitteiston valmistelu: Kokoonpano
Laitteiston valmistelu: Kokoonpano
Laitteiston valmistelu: Kokoonpano
Laitteiston valmistelu: Kokoonpano
Laitteiston valmistelu: Kokoonpano
Laitteiston valmistelu: Kokoonpano
Laitteiston valmistelu: Kokoonpano
Laitteiston valmistelu: Kokoonpano

Kun kaikki laitteistot ovat valmiina, voit aloittaa kokoonpanon. Tässä prosessissa voidaan käyttää mitä tahansa liimaa, mutta suosittelemme kuumaliimaa kahdesta syystä. Kuuma liima kuivuu nopeasti, joten sinun ei tarvitse odottaa kauan liiman kuivumista. Lisäksi kuuma liima on irrotettavissa, jos teet virheen. Kuivan liiman poistamiseksi liota kuuma liima hankaavaan (isopropyyli) alkoholiin. Suosittelemme keskittymistä 90% tai enemmän, mutta 70% keskittyminen toimii edelleen. Kuivan liiman liottaminen isopropyylialkoholiin heikentää liiman ja sen pinnan välistä sidosta, jolloin voit irrottaa liiman puhtaasti. Kun liimaa liotetaan isopropyylialkoholiin, Raspberry Pi on sammutettava ja irrotettava pistorasiasta. Muista antaa kaiken kuivua ennen kuuman liiman levittämistä uudelleen ja Raspberry Pi: n käynnistämistä.

Kaikki näiden vaiheiden kuvat ovat järjestyksessä ja seuraavat tekstivaiheita.

  1. Aseta Raspberry Pi runkoon. Sinun on taivutettava sitä hieman saadaksesi ääniportin, mutta kun se on sisään, ääniliitäntä pitää sen paikallaan. Kun se on paikallaan, varmista, että kaikki portit ovat edelleen käytettävissä (esim. Voit kytkeä virtajohdon).
  2. Kiinnitä seuraavaksi Pi kuumalla liimalla ja kiinnitä kamera Pi: hen. On myös ruuvinreikiä, jos haluat käyttää niitä.
  3. Liimaa nyt LED ja kamera etukanteen (kuvassa). Aloita liimaamalla NoIR -kamera kuumalla tavalla kameran reikään. Varmista, että kamera on tiukasti kiinni ja linjassa kotelon kanssa. Älä käytä liikaa liimaa; muuten et voi sovittaa kameraa pääkoteloon. Muista kytkeä virta Piin ja katsoa kameraa (esimerkiksi raspistill -v) varmistaaksesi, että se on hyvin kulmassa ja sillä on hyvä näkökenttä. Jos ei, poista kuuma liima ja aseta se uudelleen.
  4. Liimaa seuraavaksi IR -LED kannen kaulan reikään. Kaula on 45 asteen kulmassa pinnasängyn sivuvaloon nähden, mikä lisää varjoja hämärässä. Tämä lisää kuvan kontrastia ja helpottaa liikkeen havaitsemista.
  5. Kiinnitä IR -LED -johdot Raspberry Pi: n otsatappeihin kaavamaisen kuvan mukaisesti.
  6. Pakkaa kaapelit runkoon siten, että ne eivät rypisty tai rasitu. Päädyimme taittamaan kaapelin harmonikka -tyylin, koska kameran flex -kaapeli oli liian pitkä.
  7. Kun kaikki on kiinni, kuumaa liimaa reunojen ympärille, joissa kaksi kappaletta kohtaavat, ja tiivistä ne paikalleen.

Vaihe 7: Kalibrointi

Image
Image
Kalibrointi
Kalibrointi

Lisätietoja kokoonpanoparametreista on CribSense -arkiston dokumentaatiossa. Katso myös video nähdäksesi esimerkin siitä, kuinka voit kalibroida CribSense -sovelluksen, kun olet määrittänyt kaiken.

Tässä on esimerkki määritystiedostosta:

[io]; I/O -kokoonpano

; input = polku_tiedostoon; Syöttötiedosto käytettäväksi input_fps = 15; tulon fps (enintään 40, suositus 15, jos kameraa käytetään) full_fps = 4,5; fps, jolla täydet kehykset voidaan käsitellä crop_fps = 15; fps, jolla rajattuja kehyksiä voidaan käsitellä kamera = 0; Kameran leveys = 640; Tulovideon korkeus = 480; Syöttövideon korkeus time_to_alarm = 10; Kuinka monta sekuntia odottaa ilman liikettä ennen hälytystä. [rajaus]; Mukautuvat rajausasetukset rajaus = tosi; Rajataanko vai ei frame_to_settle = 10; # kehystä odotettava nollauksen jälkeen ennen käsittelyä roi_update_interval = 800; # kehystä ROI: n uudelleenlaskennan välillä roi_window = 50; # kehystä, joita seurataan ennen ROI: n [liike] valitsemista; Liikkeentunnistusasetukset erode_dim = 4; erode -ytimen ulottuvuus dilate_dim = 60; laajennetun ytimen ulottuvuus diff_threshold = 8; abs -ero tarvitaan ennen muutoksen keston tunnistamista = 1; # kehystä liikkeen ylläpitämiseksi ennen todellisen pikselin_kynnyksen = 5 merkitsemistä; # kuvapistettä, joiden on oltava erilaisia merkitäkseen liikkeenäytön_diff = epätosi; näyttää erot 3 kehyksen välillä [suurennus]; Videon suurennusasetukset vahvistavat = 25; Monistuksen haluttu alhainen raja-arvo = 0,5; Kaistanpäästön matala taajuus. korkea raja-arvo = 1,0; Kaistanpäästön korkea taajuus. kynnys = 50; Vaihekynnys prosentteina pi. show_magnification = epätosi; Näytä jokaisen suurennoksen tulostuskehykset [debug] print_times = false; Tulosta analyysiajat

Algoritmin kalibrointi on iteratiivinen vaiva ilman tarkkaa ratkaisua. Kehotamme sinua kokeilemaan eri arvoja yhdistämällä ne virheenkorjausominaisuuksiin löytääksesi ympäristöösi sopivimman parametrien yhdistelmän. Ennen kuin aloitat kalibroinnin, varmista, että show_diff ja show_magnification ovat tosi.

Ohjeena on, että vahvistuksen lisääminen ja vaiheen kynnysarvot lisäävät tulovideoon kohdistetun suurennuksen määrää. Muuta näitä arvoja, kunnes näet selvästi liikkeen, jota haluat seurata videokehyksessä. Jos näet esineitä, vaihe_kynnyksen pienentäminen samalla vahvistuksella voi auttaa.

Liikkeentunnistusparametrit auttavat kompensoimaan kohinaa. Kun havaitaan liikealueita, erode_dim ja dilate_dim käytetään liikkeen heikentämiseen ja laajentamiseen käytettävien OpenCV -ytimien mittojen mittaamiseen siten, että kohina ensin hajoaa pois, sitten jäljellä oleva liikesignaali laajenee merkittävästi, jotta liikealueet tulevat ilmeisiksi. Näitä parametreja on ehkä myös säädettävä, jos sängyn kontrasti on erittäin korkea. Yleensä tarvitset korkeamman erode_dim -arvon korkean kontrastin asetuksille ja pienemmän erode_dim -arvon pienen kontrastin saamiseksi.

Jos käytät CribSense -ohjelmaa show_diff = true ja huomaat, että liian suuri osa akun ulostulosta on valkoista tai jokin täysin toisiinsa liittymätön osa videosta havaitaan liikkeenä (esim. Välkkyvä lamppu), lisää erode_dim -arvoa, kunnes vain osa videosta vastaa vauvaasi on suurin osa valkoista. Ensimmäisessä kuvassa on esimerkki, jossa heikentymismitta on liian pieni kehyksen liikemäärälle, kun taas seuraavassa on hyvin kalibroitu kehys.

Kun tämä on kalibroitu, varmista, että pikselin_kynnys -arvo on asetettu sellaiseksi, että "Pikseliliike" ilmoittaa vain pikseliliikkeen huippuarvot, ei kaikkia (mikä tarkoittaa, että kohina on poistettava). Ihannetapauksessa näet tällaisen lähdön päätelaitteessasi, jossa liikettä vastaava selkeä jaksollinen kuvio:

[info] Pikseliliike: 0 [info] Liikearvio: 1,219812 Hz

[info] Pixel Movement: 0 [info] Motion Estimate: 1.219812 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 1.219812 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 1.219812 Hz [info] Pixel Movement: 44 [info] Liikearvio: 1,219812 Hz [info] Pikseliliike: 0 [info] Liikearvio: 1,219812 Hz [info] Pikseliliike: 161 [info] Liikearvio: 1,219812 Hz [info] Pikseliliike: 121 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 86 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pixel Movem ent: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 97 [info] Liikearvio: 0,841416 Hz [info] Pikseliliike: 74 [info] Liikearvio: 0,839298 Hz [info] Pikseli Liike: 0 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 60 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 48 [info] liike Arvio: 0,839298 Hz [info] Pikseliliike: 38 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 29 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 28 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 22 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,839298 Hz [info] Pikseliliike: 0 [info] Liikearvio: 0,839298 Hz

Jos tuloste näyttää enemmän tältä:

[info] Pikseliliike: 921 [info] Liikearvio: 1,352046 Hz

[info] Pikseliliike: 736 [info] Liikearvio: 1,352046 Hz [info] Pikseliliike: 666 [info] Liikearvio: 1,352046 Hz [info] Pikseliliike: 663 [info] Liikearvio: 1,352046 Hz [info] Pikseliliike: 1196 [info] Liikearvio: 1,352046 Hz [info] Pikseliliike: 1235 [info] Liikearvio: 1,352046 Hz [info] Pikseliliike: 1187 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 1115 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 959 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 744 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 611 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 468 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 371 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 307 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 270 [info] liikearvio: 1,456389 Hz [info] pikseliliike: 234 [info] liikearvio: 1,456389 Hz [info] pikseliliike: 197 [info] liikearvio: 1,456389 Hz [info] Pikseliliike: 179 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 164 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 239 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 733 [info] Liikearvio: 1,456389 Hz [info] Pikseliliike: 686 [info] Liikearvio: 1,229389 Hz [info] Pikseliliike: 667 [info] Liikearvio: 1,229389 Hz [info] Pikseliliike: 607 [info] Liikearvio: 1,229389 Hz [info] Pikseliliike: 544 [info] Liikearvio: 1,229389 Hz [info] Pikseliliike: 499 [info] Liikearvio: 1,229389 Hz [info] Pikseliliike: 434 [info] Liikearvio: 1,229389 Hz [info] Pikseliliike: 396 [info] Liikearvio: 1,229389 Hz [info] Pikseliliike: 375 [info] Liikearvio: 1,229389 Hz [info] Pikseliliike: 389 [info] Liikearvio: 1,229389 Hz [info] Pikseliliike: 305 [info] Liikearvio: 1,312346 Hz [info] Pikseliliike: 269 [info] Liikearvio: 1,312346 Hz [info] Pikseliliike: 1382 [info] Motion E arvio: 1,312346 Hz [info] Pikseliliike: 1086 [info] Liikearvio: 1,312346 Hz [info] Pikseliliike: 1049 [info] Liikearvio: 1,312346 Hz [info] Pikseliliike: 811 [info] Liikearvio: 1,312346 Hz [info] Pikseliliike: 601 [info] Liikearvio: 1,312346 Hz [info] Pikseliliike: 456 [info] Liikearvio: 1,312346 Hz

Säädä pixel_threshold ja diff_threshold, kunnes vain huiput näkyvät ja pikselien liike on muutoin 0.

Vaihe 8: Esittely

Image
Image

Tässä on pieni esittely siitä, miten CribSense toimii. Sinun on kuviteltava, että tämä on kiinnitetty pinnasängyn sivulle.

Kun asetat CribSense -pinnasängyn päälle, sinun on optimoitava lapsen ja kameran välinen etäisyys. Ihannetapauksessa lapsesi rintakehä täyttää alle 1/3 kehyksestä. Lapsen ei pitäisi olla liian kaukana, tai muuten matalan resoluution video ei pysty löytämään tarpeeksi yksityiskohtia suurentaakseen. Jos kamera on liian lähellä, kamera ei ehkä näe lasta, jos hän rullaa tai siirtyy ulos kehyksestä. Samoin, jos lapsi on "teltan" peiton alla ja huopa ja lapsen rintakehän välillä on rajallinen kosketus, liikkeen havaitseminen voi olla vaikeaa. Työnnä ne hyvin sisään!

Kannattaa myös ottaa huomioon pinnasängyn valaistustilanne. Jos pinnasänky on aivan ikkunan vieressä, saatat saada liikkuvia varjoja tai muuttaa valoarvoja, kun pilvet estävät auringon tai liikkuvat ikkunan ulkopuolella. Jossakin, jossa on tasainen valaistus, on paras.

Lisää työtä tehdessämme ajattelemme, että joku voisi parantaa ohjelmistoamme niin, että kalibrointi on paljon tasaisempi prosessi. Tulevaisuudessa voidaan myös lisätä lisäominaisuuksia, kuten push -ilmoituksia.

Vaihe 9: Vianetsintä

Saatat kohdata muutamia yleisiä ongelmia CribSensen asennuksen aikana. Esimerkiksi, jos sinulla on ongelmia ohjelman rakentamisessa/käynnissä tai et kuule ääntä. Muista, että CribSense ei ole täysin luotettava lastenvahti. Otamme mielellämme vastaan GitHub -tietovarastoamme, kun teet parannuksia!

Seuraavassa on muutamia vianetsintävinkkejä, jotka olemme keränneet CribSensea tehdessämme.

Ei herätystä

  • Toimiiko kaiuttimesi?
  • Voitko toistaa muita Pi -ääniä CribSense -hälytyksen ulkopuolella?
  • Jos Pi yrittää toistaa ääntä HDMI: n kautta ääniportin sijaan? Tarkista Raspberry Pi Audio Configuration -sivulta, että olet valinnut oikean lähdön.
  • Tunnistaako CribSense -ohjelmisto liikettä? Jos CribSense on käynnissä taustalla, voit tarkistaa sen terminaalissa journalctl -f.
  • Jos CribSense tunnistaa paljon liikettä, sinun on ehkä kalibroitava CribSense.

IR -LED ei toimi

  • Näetkö heikon punaisen värin, kun katsot IR -LEDiä? Heikon punaisen renkaan pitäisi näkyä, kun LED palaa.
  • Tarkista liitosten napaisuus. Jos +5V ja GND ovat päinvastaisia, se ei toimi.
  • Liitä LED virtalähteeseen, jonka jännite-/virtaraja on 5V/0,5A. Normaalisti sen pitäisi kuluttaa 0,2 A 5 V jännitteellä. Jos näin ei ole, LED -valossa voi olla toimintahäiriö.

CribSense tunnistaa liikkeen, vaikka vauvaa ei olekaan

  • Onko kalibroitu oikein CribSense?
  • Muista, että CribSense etsii vain muutoksia pikseliarvoihin

    • Liittyykö kehyksen sisällä varjoja?
    • Onko vilkkumista tai vaihtuvaa valaistusta?
    • Onko CribSense asennettu vakaalle pinnalle (eli jotain, joka ei tärise, jos ihmiset kävelevät sen ohi)?
    • Onko kehyksessä muita liikkeen lähteitä (peilit heijastavat jne.)?

CribSense EI tunnista liikettä, vaikka siinä on liikettä

  • Onko kalibroitu oikein CribSense?
  • Onko kameran tiellä jotain?
  • Voitko muodostaa yhteyden Raspberry Pi -kameraan ollenkaan? Tarkista suorittamalla raspistill -v päätelaitteessa avataksesi Pi -kameran muutaman sekunnin ajan.
  • Jos tarkastelet sudo systemctl status cribsense, onko CribSense todella käynnissä?
  • Onko lapsesi peiton alla, joka on "teltattu" niin, että se ei ota yhteyttä lapseen? Jos huovan ja lapsen välillä on merkittäviä ilmarakoja, peite voi peittää liikkeen.
  • Näetkö liikkeen, jos vahvistat videota enemmän?
  • Näetkö liikkeen, jos virität matalan ja korkean taajuuden katkaisut?
  • Jos tämä tapahtuu vain hämärässä, varmistitko, että kalibrointi toimii hämärässä?

CribSense ei rakenna

Oletko asentanut kaikki riippuvuudet?

En voi suorittaa cribsenseä komentoriviltä

  • Kirjoititko vahingossa jotain väärin suorittaessasi./autogen.sh --prefix =/usr --sysconfdir =/etc --disable-debug ohjelmiston rakentamisen aikana?
  • Onko sängyssä /usr /bin?
  • Mikä polku tarjotaan, jos suoritat "mikä sängyn"?

Suositeltava: