Kirjoittaja Aihe: Motion -liikeilmaisu (yms kamerajuttuja)  (Luettu 1483 kertaa)

Mistofelees

  • Käyttäjä
  • Viestejä: 641
    • Profiili
Motion -liikeilmaisu (yms kamerajuttuja)
« : 06.11.12 - klo:10.58 »
1. Mikään kokeilemani web-kameraohjelma ei toiminut kotiserverin Ubuntu 10.04LTS:n päällä.
Päivitin 12.04LTS -nyt toimii.
Esim vgrabbj:llä
vgrabbj -F4 -d/dev/video0 -ivga -fkuva0.jpg

2. Saan vgrabbj:llä still-kuvia roottina, mutta /dev/video0:n suojaukset eivät anna perskäyttäjän ottaa kuvia. Tämä on varmaankin voitettavissa suhteellisen helposti.

3. Tekisi mieli pistää serveri toimimaan motiln-detection (MD) -laitteena, mutta...
- Jos pistän ohjelman Motion tulille, se kyllä tekee MD:tä, mutta toimintatavasta johtuen se syö resursseja.Sehän ottaa jatkuvasti kuvia ja vertaa kahta peräkkäistä kuvaa keskenään.
- Olisi paljon mukavampi hoitaa asia keskeytyksillä. Pistäisin tavallisen liikeilmaisimen kiinni PC:lle ja ilmaisimen havaitsema liike aiheuttaisi IRQ:n järjestelmälle.
En kuitenkaan keksi, miten perusLinuxin saisi tunnistamaan IRQ:n.
Tietenkin asian voisi hoitaa silläkin, että järjestelmä kävisi lyhyin välein tarkastamassa liikeilmaisimen tilan. Sekunnin resoluutio olisi riittävä. Voisin käyttää vaikkapa jotain HID-palikkaa, esim Devantech:n myymää USB-GPIO12, joita olen muutenkin käyttänyt, kunhan osaisin Ubuntun puolelle tehdä ohjelman, joka kerran sekunnissa käy tarkistamassa modulin tilan ja käynnistää jonkin ohjelman, mikäli moduli antaa määrätyn tilatiedon.

Onko tähän jotain järkevää tapaa ?
« Viimeksi muokattu: 06.11.12 - klo:13.53 kirjoittanut Mistofelees »

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Motion -liikeilmaisu (yms kamerajuttuja)
« Vastaus #1 : 06.11.12 - klo:15.17 »
Hätäisesti hatusta vedettynä:  Joissakin tapauksissa tuon kaltainen oikeusasia on hoidettu liittämällä käyttäjä esimerkiksi "audio" tai "video" groupin jäseneksi.  Kurkista "ls -l" siitä /dev/jotain, voi antaa vinkin olisiko tuo käytettävissä (eli jos siellä on group jompikumpi noista tai jotain muuta).

Lainaus
...että järjestelmä kävisi lyhyin välein tarkastamassa...

Ajastettu ikuinen silmukka on hyvin yksinkertainen, katso vaikka tätä:

 
Koodia: [Valitse]
while :; do echo "x"; sleep 1; done

Tuossa kerrotaan että niin kauan kuin ehto on tosi ajetaan uudestaan ja uudestaan mitä on tuossa do --- done välissä.  Ehtona tuossa on pelkkä kaksoispiste joka on tässä yhteydessä sama kuin "true" eli toistosilmukka ei lopu koskaan.   "echo "x" tilalle laitat jonkun oikean tehtävän ja tuo "sleep 1" laittaa jauhamaan tyhjää sekunniksi...   Noita puolipisteitä tarvitaan vain jos kirjoitellaan samalle riville kaikki.

Jos laitat tuon omaan tiedostoon niin laita aivan sen alkuun ensimmäiselle riville
Koodia: [Valitse]
#!/bin/bash
Normaalisti aukikirjoitettuna (eikä yhdelle riville tungettuna) tuosta tulisi:

Koodia: [Valitse]
#!/bin/bash
while :
do
    echo "x"
    sleep 1
done

Tallenna se vaikka nimelle "sleep1", sitten päätteeseen ja laitat sille ajo-oikeuden:

Koodia: [Valitse]
chmod  +x  sleep1
ja ajat sen sitten näin:

Koodia: [Valitse]
./sleep1
ja kun kyllästyt katselemaan tuota niin painat Ctrl-C  niin siihen sammui.


Tuohon vain sitten virittelet lisää  --- opit jo johdannon "bash" -ohjelmointiin  :)
« Viimeksi muokattu: 06.11.12 - klo:15.22 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

Mistofelees

  • Käyttäjä
  • Viestejä: 641
    • Profiili
Vs: Motion -liikeilmaisu (yms kamerajuttuja)
« Vastaus #2 : 07.11.12 - klo:16.24 »
Joissakin tapauksissa tuon kaltainen oikeusasia on hoidettu liittämällä käyttäjä esimerkiksi "audio" tai "video" groupin jäseneksi.
Lainaus
...että järjestelmä kävisi lyhyin välein tarkastamassa...

Ajastettu ikuinen silmukka on hyvin yksinkertainen, katso vaikka tätä:

 
Koodia: [Valitse]
while :; do echo "x"; sleep 1; done


Kiitos asiallisesti kirjoitetusta ohjeesta. Tälläisiä on mukava lukea !

Tuo oikeuksien asetus onnistui juuri noin, kuin kirjoititkin. Käyttämäni 7 erilaista Webkameraa ovat esiintyneet laitetunnuksilla
/dev/video0 ... /dev/video6.
Riittää, että pistää käyttäjän video-gruppiin, minkä jälkeen pääsee vähimmällä, kun hätistelee muut käyttäjät pois serveriltä ja boottaa koneen. Tässä omassa virityksessäni group-oikeudet eivät astuneet voimaan ennen boottia.

Pitää kokeilla tuota ajastettua silmukkaa Bashissa.
FreeBasicilla kirjoittamassani mittalaiteohjauksessa vastaava rakenne jumitti koneen totaalisesti. Järjestelmä ei päässyt väliin, kun ohjelma pollasi järjestelmän 64 kpl I2C väylää taukoamatta.

Bash saattaa olla paremmin käyttäytyvä.

Heitin vielä RaspBerry Pi:n samaan lankaverkkoon ja liitin siihen jonkun vanhan Logitechin 640x480 -kameran. Raspilla on aikaa ottaa kuvia minkään muun tohinan häiriintymättä. Voisin vielä kokeilla liittää sen GPIO:lle normaalin liikeilmaisimen. Tällöin ohjelmaloopille riittäisi tutkittavaksi yksi IO-pin.
« Viimeksi muokattu: 07.11.12 - klo:16.28 kirjoittanut Mistofelees »