2016. augusztus 27., szombat

Gyorskeresés

Blog

[ ÚJ BEJEGYZÉS ]   [ ÚJ CIKK ]

  • Pi Touchscreen Display összerakva

    Tegnap este elkezdtem összerakni a múltkor megrendelt kijelzőt.

    Szerencsére nem bonyolult összerakni és elsőre tökéletesen működött.

    A projekthez készülő GUI is remekül használható.

    Néhány észrevétel (RASPBIAN JESSIE alatt tesztelve):
    ● Jól érzékeli a touch-t, viszont a gesztusok nem működnek.
    ● Nem érzékelek teljesítménycsökkenést használat közben.
    ● A csomaghoz nem tartozik tartó. Ha "háttal" vagy "ferdén" tartom, akkor a GPIO tüskék tartják a súlyt, ami nem túl jó. "Ferdén" nem is tudom tartani, mert a micro-usb táp útban van. A dobozát kicsit megfarigcsáltam, ezzel hidaltam át a problémát, de hosszabb távra majd ki kell találni valamit.

    Folytatás...

    Elrood 3 hónapja 3

  • Dobozok!

    Folytatom a külföldről rendelek érdekes dolgokat sorozatomat.

    Csütörtökön befutott egy szép doboz:

    Sajnos most nem volt szerencsém, mint legutóbb. A vám jól megvámolta és kifizetették a 27%-os áfát és a kijelző után a 2,7%-os vámot, bár ahogy kiszámolták, az nekem nem jön ki. További kérdéseket vet fel bennem, hogy minek kérdezik meg, hogy mi van a dobozban, mikor a csomaghoz csatolt számla alapján írják meg a vámhatározatot.
    Fun fact: gyorsabban megjött a csomag Denver (CO, USA) mellől Vecsésre, mint Vecsésről hozzám. Bürokrácia...

    A dobozban újabb dobozok!

    A dobozokban cuccok!

    Folytatás...

    Elrood 3 hónapja 1

  • Microsoft Easter egg?

    Abracadabra? Ez valami easter egg lehet? Vagy lemaradtam valamiről?

    Windows 10 + Visual Studio 2015 Community

    Elrood 10 hónapja 4

  • Napi apró sikerek: Pi 2 és Qt

    Hobbiból jelenleg Linux alá csinálom a webkamera kezelést (video4linux), hogy majd Intel Edison és Raspberry Pi 2 alatt tudjak kamerát használni. Gondoltam kicsit ismerkedek a Qt keretrendszerrel is, így GUI-t is kap a tesztprogram, de csak azon a gépen, amin fejlesztek.

    Néhány hete jött a hír, hogy jön a hivatalos kijelző Pi2 alá. Rögtön tudtam, hogy venni kell majd egyet :), így GUI-s programot is érdemes lesz Pi alá készítenem.

    Pi2 alá van QtCreator 2.5.0, Qt 4.8.2 és gcc 4.8. Fejlesztői Linuxos gépen pedig QtCreator 3.5.0, Qt 5.2.1 és gcc 4.8. Tartottam tőle, hogy nem fog menni, mivel főverzióban tér el a Qt. Rákerestem és lefordítható a Qt 5 is Pi alá, csak 24-38 órába kerül a fordítás...
    Szerencsét próbáltam és legnagyobb meglepetésemre módosítás nélkül működött! (lásd screenshot).
    Persze semmilyen különleges és új GUI komponenst nem használtam és annyit módosítani kellett a projekten, hogy csak x86 alatt legyen SSE, SSE2 és SSSE3 és ARM alatt legyen NEON.

    Folytatás...

    Elrood 11 hónapja 0

  • Stabilitásteszt

    Elég stabilnak tűnik a gép nem ? :)

    Megfejtés: Keressétek az uptime-t

    Elrood 11 hónapja 7

  • Munkahelyi krónikák #1 (Visual Studio)

    Történt múlt héten, hogy új céges gépre kellett migrálnom.

    Szépen felraktam a Windows 8.0-t (nem warez!) és felfrissítettem up-to-date-re (8.1). Utána következett a Visual Studio 2012 Professional (nem warez!) és ezt is felfrissítettem up-to-date-re. Minden szépen működik.

    Következik a Visual Studio 2013 Professional (nem warez!). Szintén felfrissítettem. Elindítom a 2012-t és a következő fogad (nem photoshop!):

    Blue screen, black screen és red screen után itt a white screen...

    Kicsit elmozgattam az ablakot:

    A főképernyő üres, a menü és a gombok nem reagálnak. A task manager-ben nem jelzi, hogy be lenne fagyva.

    Összehasonlításképpen ilyen, ha minden rendben a VS-sel:

    Folytatás...

    Elrood 1 éve 3

  • Megjöttek az új szenzorok

    Régen foglalkoztam már LEGO NXT-vel, így gondoltam ideje felvenni ismét a fonalat. Körülbelül 3 éve van már egy bemutató cikkem “beragadva” itt a Logout-on. Adós vagyok még egy, NXT-hez készült alternatív firmware, a LeJOS bemutatásával is.

    Ideje befejezni/folytatni.

    Hogy mi változott? Megjelent hivatalosan a 3. generációs LEGO robot, az EV3, ami nagyon erősen felkeltette az érdeklődésemet.

    Mielőtt még elrohantam volna EV3-at venni, körülnéztem, hogy tudnék a meglévő NXT-mel valami újba fogni.

    Rendeltem három szenzort a mindsensors.com-ról.

    Minden elismerésem, gyorsan ideért a csomag. 2014.04.08. 21:36-kor rendeltem meg és 14-én már kézhez is kaptam.

    Folytatás...

    Elrood 2 éve 5

  • Asus 1215B update

    Ez egy válasz egy korábbi bejegyzésre.

    A gép kapott egy SSD-t (Kingston V+200 120GB) és gondoltam kap egy Windows 8-at is. Mivel a HDD/SSD csere nagyon körülményes ezzel a géppel, ezért inkább az Asus szervizre bíztam.

    Ha már ott jártam, megkérdeztem, hogy tudnak-e valamit a 1215B touchpad hibájáról. Kiderült, hogy ez egy típushibája a gépnek és ha még garis, akkor ingyen javítják.

    Ma kaptam vissza a gépet, SSD rendben beszerelve és a touchpad is működik (1-2 hét múlva tudok biztosat mondani).
    SSD berakása után döbbentem rá, hogy mennyire hangos volt a régi HDD. Alapjáratos ventin csak akkor hallom a gépet, ha odatapasztom a fülem a billentyűzetre...

    Windows 8 telepítési tapasztalataim 1215B-n:
    +Ha jól láttam, a windows telepítéskor mindent felismert, csak a gyorsbillentyűk egy részét nem lehetett használni.
    +Asus oldalán található driverek felmennek, csak a "KBFilter" szállt el. (wifi, audio, grafikus drivert és egyéb "hasznos" segédprogit nem néztem).
    +HotkeyService brightness állításnál kicsit laggol, érdemes inkább a win8 beépített csúszkáját nézni.

    Folytatás...

    Elrood 3 éve 0

  • OpenCV és a teljesítmény

    Akik tudják, mit takar az OpenCV, azoknak nem kell bemutatnom: [link]

    Most röviden leírom, milyen érdekes dolgokat fedeztem fel pár függvénnyel kapcsolatban.

    Az OpenCV-ben rengetek függvény van sok mindenre, de előfordulhat, hogy mi szeretnénk kézzel valamit számolni az egyes pixeleken, de OpenCV-ben nincs rá függvény.

    Először is, az OpenCV teljesítményét kézzel nem fogjuk elérni, de néhány dolog valamiért pluszba belassít.
    (OpenCV teljesítmény: egyszer végre tényleg bele kéne másznom a kódjába, hogy hogyan valósítják meg ezt, mert nagyon jól jönne:) )

    Itt egy példa, végig akarunk menni minden pixelen:

    Itt egy kép:
    cv::Mat imgmat(cv::Size(640,480),CV_8UC3);

    Ezen akarunk végigmenni:
    for(int row=0; row<imgmat.rows; row++)
    {
    for(int col=0; col<imgmat.cols; col++)
    {

    }
    }

    Két féle módon férhetünk hozzá az adott pixelhez:
    1. a beépített függvény:

    Olvasás:
    unsigned char b = imgmat.at<cv::Vec3b>(row,col)[0]; // blue
    unsigned char g = imgmat.at<cv::Vec3b>(row,col)[1]; // green
    unsigned char r = imgmat.at<cv::Vec3b>(row,col)[2]; // red

    Folytatás...

    Elrood 4 éve 0

  • Első nap, első óra MSc-s hallgatóként

    Ez a kis animáció kb. összefoglalja, milyen pofákat vágtam :D

    Szerencsére a többi nem volt már olyan vészes.

    Bejegyzés késett 11 napot, de sebaj.

    Elrood 4 éve 12

  • Asus 1215B (ezüst)

    Új hordozható számítógépet kellett vásárolnom, mert úgy néz ki, az elkövetkezendő 2 évben (ha minden jól megy), ingáznom kell majd Bp. és Szeged között.

    A követelmények a követezők voltak:
    + Hosszú akkumulátor üzemidő
    + Könnyű gép
    + Kicsi gép
    + És a külseje se legyen azé ronda

    Ezeknek felelt meg az Asus 1215B.

    Sem a netbookot magát, sem a teljesítményét nem mutatom be, mert ezt már két PH! cikkben is megtették:
    [link1] [link2]

    Épp ezért lett személyes bejegyzés, mert ez egy gyakorlatilag egy élménybeszámoló lesz.

    Elég kalandosan érkezett meg a csomag. Házhoz szállítást kértem, mert nem akartam ezért 1 nap szabit kivenni, és kedvem se volt elmenni a cég telephelyére, hogy személyesen átvegyem.

    A rendelésnél direkt leírtam, hogy a megadott szállítási cím a munkahelyem, és egész biztosan 10:30 és 18:00 között leszek ott.

    Folytatás...

    Elrood 5 éve 0

  • Végre...

    Pár napi szenvedés van ebben a screenshotban.
    Részletek: LGPL-s FFmpeg-t kellett az OpenCV-vel megetetni fordításkor linux alatt, de nem nagyon akart sikerülni, de végre rájöttem a nyitjára.

    Pár kód későbbre, mert továbbra se vagyok teljesen kész.

    GTK teszt:

    #include <iostream>
    #include "cv.h"
    #include "highgui.h"

    using namespace std;

    int main (int argc, char *argv[])
    {
    cout << "Hello world!" << endl;
    cvNamedWindow("g");
    cvWaitKey();
    cvDestroyWindow("g");
    return 0;
    }

    FFmpeg teszt

    int main()
    {
    cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
    CvCapture* capture = cvCreateFileCapture( "/home/elrood/Documents/video.avi" );
    IplImage* frame;

    while(1) {
    frame = cvQueryFrame( capture );
    if( !frame ) break;
    //cvSaveImage("/home/elrood/Documents/foo.png", frame);
    cvShowImage( "Example2", frame );
    char c = cvWaitKey(33);
    if( c == 27 ) break;
    }

    Folytatás...

    Elrood 5 éve 0

  • Lego NXT fejlesztési lehetőségek

    A következő néhány bejegyzés a LeJOS-nak lesz szentelve.

    Pár szóban mi is ez az egész:
    A LeJOS egy kicsi virtuális gép, amit a Lego NXT-re portoltak. A LeJOS előnyei (forrás a weboldal, had ne fordítsam le:) ):

    + Object oriented language (Java)
    + Preemptive threads (tasks)
    + Arrays, including multi-dimensional
    + Recursion
    + Synchronization
    + Exceptions
    + Java types including float, long, and String
    + Most of the java.lang, java.util and java.io classes
    + A Well-documented Robotics API

    A LeJOS használatához firmware-t is kell majd frissíteni (későbbi bejegyzés).

    A LeJOS mellett a további firmware-k és programozási eszközök:

    Gyári fw. + (National Instruments) NXT-G

    Folytatás...

    Elrood 5 éve 0

  • XXX. OTDK


    Forrás: [link]

    Véget ért a XXX. Jubileumi Országos Tudományos Diákköri Konferencia Informatika Tudományi Szekciója, amin én is részt vettem mint előadó. A program. Mi hétfő 15:40-kor adtunk elő.


    A helyszín [+]


    [+]

    Folytatás...

    Elrood 5 éve 0

  • Sztereó látás Surveyor SVS robottal

    Bemutatok egy valós idejű alkalmazást, amivel a Surveyor SVS robot sík terepen akadályokat tud kikerülni

    Tovább a teljes címlapos íráshoz...

    Tudástár 5 éve 57

  • Főiskola vége

    Végre valamit sikerült elvégezni :). Aki ismer tudja miről beszélek:).

    Állásinterjúkra már nagyon kíváncsi vagyok.

    Elrood 5 éve 19

  • [SVS_20] Február 5.

    Újra itt :). Folytatódik a 57 napja leadott szakdolgozat további fejlesztése.

    GAMF-t befejeztem, diplomára jeles kerül, irány a munkaerőpiac! (jaj :O)

    KÉPAF2011-re a cikk: [pdf]

    A távolság probléma meg lett oldva, ennek nagyon örültem (lásd előző poszt).

    Fejmozgatás

    A szakdolgozathoz 3 kérdést kaptam, ezek közül az egyik, hogy mi történne, ha nem lehetne mozgatni a robot fejét.

    Először egy kis ismétlés:

    Lényegében a bal képen található (x0,y0) pixelhez úgy keressük meg a párosítást, hogy elindulunk a jobb oldali kép (x0,y0) pixeléből, és végignézünk egy tartományt, hogy melyik pixel illik rá legjobban a bal oldalon található pixelre.
    Két fontos paraméter látható a képen:
    minDisparity: (x0,y0) ponthoz mennyire térjünk el vízszintesen (ezt a továbbiakban nem bátjuk)
    numberOfDisparities: hány pixel legyen az a tartomány, amin keresünk. (továbbiakban NofD)

    Folytatás...

    Elrood 5 éve 0

  • [SVS_19] Január 5.

    Ez a bejegyzés több nap eseményeit meséli el, csak már nem emlékszem, mit mikor csináltam.

    Ha még emlékeztek rá, a múltkori bejegyzésben azon agyaltam, hogy a tényleges és számított távolságok miért nincsenek még köszönőviszonyban sem.

    Három ötletem volt a hibára:
    1. kalibráció
    2. a disparity map -> 3D megvalósításnál valami nem stimmel az OpenCV-ben
    3. Vetítési hiba

    Berakom megint a számolt és tényleges távolságokat:

    Elkezdtem a próbálgatást, először a vetítési hiba jelenséget akart leellenőrizni magasabb felbontással. Eredetileg 320x240-es képeket használtam, most kipróbáltam 640x480-on. A sebesség se volt borzasztó lassú.
    Ehhez az elmozdulásokat számoló BM függvényt is újra be kellett állítani.

    Eredmény:

    Ha megfigyelitek, akkor látható, hogy szinte teljesen ugyanaz a 320x240-en mértekkel, így vetítési hiba kizárva.

    Próbálgattam a kalibrációt, mert rendes fizikai pontok 3D-s adatait kell megadni kalibrálás előtt (gondoltam én, de az egy másik függvény és másra való). Itt is elszenvedtem 1-2 napot, de nem sikerült használható új kalibrációt csinálnom.

    Folytatás...

    Elrood 5 éve 2

  • [SVS_18] December 10.

    December 10., még 0 nap

    Lejárt az idő, végre, szakdoga leadva, befogadva, most már csak azon kell izgulni, nehogy elkeverjék :B.
    Kemény 4 hónap volt, főleg leírni ezt az egészet úgy, hogy az előző két hétben betegeskedtem.

    A blogolás bevált, így emlékeztem a bakikra, amiket bele kell írni a dogába és a teszteredmények publikálása is hasznos volt, mert így megvoltak.
    Nem is beszélve néhány képernyőmentésről, amit egyszerűen nem találok a vinyón, de itt megvoltak.

    Tehát csak tanácsolni tudom, hogy aki diplomamunkát, szakdolgozatot ír, az blogoljon (nyilvánosan, vagy csak magának).

    A szakdolgozatból tervezek ide is egy rövidebb cikket, de azt majd február fele.

    Bár szakdolgozat leadva, a történetnek még nincs vége!

    A dolgozat egy része el lett küldve cikként a KÉPAF 2011 konferenciára, ami január 25-28. között lesz (persze pont ezen a héten van a záróvizsga...).
    A cikket befogadták, de javítani kell még rajta és pár kérdést meg kell felelni.

    Folytatás...

    Elrood 5 éve 1

  • [SVS_17] Október 21-24.

    Október 21., még 49 nap

    Hétfőn sikeresen félreértettem a konzulensemet. Nem azt mondta, hogy csináljam meg jobbra, majd balra a 3D-s ponthalmazt, majd abból szűrjek, hanem azt, hogy fogjam a két disparity mapot és abból szűrjek, majd a bal oldali képre csináljam meg a 3D-s ponthalmazt.

    A jobb kép 3D-s ponthalmazával az a baj, hogy gyakorlatilag nem nyertem semmit azzal, hogy ki lett számolva. Látszódik persze minden ami kell, de nincs kapcsolat a bal és a jobb halmaz Z értékei között (ami a távolság), nem lehet felhasználni szűrésre. Ha mégis kézzel belövöm a szűrést, akkor bármilyen változtatásnál újra ki kéne kézzel számolni mindent és újra belőni.

    Az a terv, hogy "megengedő" BM-t eresztek rá a jobb és a bal képre, majd a nem egyező disparity értékeket törlöm, így a fals adatok kiszóródnak.

    Először is tartok egy kis oktatást :K.

    Miért is csinálom ezt.

    Ugye mi is így látunk, hogy a két szemből érkező képekből az agyunk rakja össze a 3D-t. Ha közelebb rakjuk az ujjunk a szemünkhöz és pislogunk felváltva, akkor látjuk, hogy jobban "mozog" az ujjunk két pislantás között, míg ha távol van, kevésbé. Magyarán minél nagyobb az elmozdulás, annál közelebb van a tárgy.

    Folytatás...

    Elrood 5 éve 3

  • [SVS_16] Október 20.

    Október 20., még 50 nap

    Az 15. bejegyzésben írtam, hogy balra rosszul lát és ezzel kezdeni kell valamit. Közben rájöttem, hogy azzal nem lehet mit kezdeni, hiszen a kamerák rögzítettek és jobbra is ez a probléma, hogy van egy sáv, amire nincs illesztés.

    Több megoldási lehetőség kínálkozik:
    1. A robot akkor fordul, mikor még biztonságosan megállapítható, hogy mehet-e balra vagy jobbra, ha szemben akadály van.
    Hátrány: szerintem elég csúnyán néz ki, hogy a tárgy előtt nagyon messze már fordul, kicsi teremben meg körbe-körbe forgolódik.
    2. A robot használja a fejét, így közelebb engedhetem a tárgyhoz és mégis biztonságosabban megállapítható merre induljon.
    Hátrány: konzulensnek nem tetszik :).
    3. 1. pontban leírtak a javítása. Eddig csak a bal képre volt megállapítva a 3D-s koordináták, most meglesz állapítva a jobb oldalra is, így kicsit biztosabb lesz a 3D-s térkép megállapítása.
    Hátrány: ugyanazt mint az elsőnek, csak kicsit talán közelebb lehet engedni.

    3. pontbelit el is kezdtem tesztelni. BM-mel van egy baj, csak balra illeszt. Szerencsére nem volt túl nagy probléma megcsinálni az ellenkezőjét. Felcseréltem a két képet a függvényben, és kicsit alakítottam a beállításokon:

    BMState->minDisparity=-90;
    BMState->uniquenessRatio=60;

    Folytatás...

    Elrood 5 éve 0

  • [SVS_15] Október 18-19.

    Október 18., még 52 nap

    A robot következőt fogja csinálni: megy, míg túl közel nem kerül egy tárgyhoz, aztán elfordul valamerre, aztán tovább halad. Megpróbálok egy elég nagy tesztpályát készíteni, ami teli lesz szórva dobozokkal.

    Az adatok megfelelőek, megkaptam a zöld jelzést, most már pontos adatok alapján kidolgozhatom azt az algoritmust, ami a fenti cselekvést meg tudja csinálni.

    Persze ezzel vannak gondok, mert jelenleg a bal képre készül el a 3D-s ponthalmaz, ezért balra rosszabbul lát. A másik probléma, hogy a kamerák távol vannak, kicsi a látószög. E két nagyobb probléma miatt a robot kénytelen lesz látványosan hamarabb fordulni.
    Van két ötlet ennek a leküzdésére, majd később leírom.

    Csináltam egy képsorozatot, ahol centivel szépen lemértem minden távolságot, elkezdtem a kapott OpenCV eredményeket hozzárendelni a valósághoz.

    Ígértem egy olyan képet is, ahol nem merőlegesen, hanem élével szemben áll egy doboz a robottal, íme:

    Folytatás...

    Elrood 5 éve 3

  • [SVS_14] Október 16-17.

    Október 16., még 54 nap

    Feljegyzés, az 1. és 2. képsorozat 54:50-s fejpozíciónál készültek

    Ma csak egy fejlesztés történt, a párhuzamosan végrehajtható dolgokat külön threadbe raktam. A sebesség fontos :). Mérések holnap, mert lámpafénynél eléggé ugrálnak az eredmények, de így is látható gyorsulás. Threadbe rakáson kívül van még egy lehetőség a gyorsításra: kiszedem a megjelenítést. A rektifikált kép és a látható disparity kép előállítása is időbe telik.

    VS2008 is tud szép hibákat irkálni:

    Pedig a parancsot az msdn oldaláról néztem, és csak a kernel32.dll volt megadva függésnek.

    Debug módban nem ilyeneket kéne feldobnia...

    Október 17., még 53 nap

    Hibaüzenetek folytatása, most SmartSVN:

    Semmi változás előtte, program újraindításánál már jó

    Folytatás...

    Elrood 5 éve 0

  • [SVS_13] Október 9-15.

    Október 11., még 59 nap

    Csak kiderült, hogy valami nem stimmel.
    A teszthez használt képekkel van egy nagy baj: a sakktábla.
    Ugyanis a BM párokat keres a két kép között, a sakktábla mintái pedig ismétlődnek, így mindig a bal szélén találja meg (ha balról kezdi, nem néztem utána) a keresett pontot, hiába van az mondjuk a sakktábla jobb szélén. Pontosan ezért volt egy kupacban minden talált pont, aaaaaah.

    Első körben saját képek kellettek, amiket lementek a programmal, mert robottal rohangászva nem lehet mindig ugyanolyan képeket csinálni.

    Rectify és remap a menüből átköltözött ide, a képmentést egyelőre a normálhoz raktam.

    Gondoltam a kép neveket a rand() nevű csoda függvénnyel teszem különbözővé, hát nem eléggé random :). Később átjavítom időbélyegre.

    Második körben csináltam egy külön projektet, hogy a BM és egyéb teszteket elvégezzem, mert az eddigiek teli voltak szemetelve marhaságokkal.

    A terv az, hogy egyelőre megpróbálom a BM-ből kihozni azt, amit lehet. Ha sikerül, és az FPS 1 lesz vagy afelett, akkor meghagyjuk, és ha még van idő, akkor próbálom meg felgyorsítani ritka illesztéssel.

    Folytatás...

    Elrood 5 éve 3

  • [SVS_12] Szeptember 20.-Október 8.

    Szeptember 20., még 80 nap

    Ebben a postban kicsit benéztem, OpenCV a C-s és a C++-s rész is 2.1-s: [link].

    Következő lépés: A két képből 3D-s adatokat nyerni.

    Október 8., még 62 nap

    Visszatértem, elég sokat szenvedtem a 3D-s adatokkal eddig.
    Elvileg az OpenCV-ben van egy függvény, cvReprojectImageTo3D, amivel elvileg rögtön 3D-s ponthalmaz nyerhető a cvFindStereoCorrespondenceBM eredményéből. Itt egy bizonyíték.

    Sajnos nálam valami nem klappol. Most a különböző próbálgatásoknak a beállításai és eredményei lesznek felsorolva.

    Először is kellett két, ami mindig ugyanaz, és van sztereókalibráció, ezért az OpenCV példák közti képet használtam. A különböző verziók között csak a változásokat írom le.

    Folytatás...

    Elrood 5 éve 0

  • [SVS_11] Szeptember 6-19.

    Magyarázat:
    Kalibrálás: mikor az opencv meghatározza, hogyan kell javítania a képet
    Remap: a kalibrációs adatok alapján rektilineárissá (lásd előző poszt) teszi.

    Kitérő

    Az OpenCV-s példák között találtam:


    screenshot

    Jó sokáig futott, több percig. Nagyon érdekes, a keresett dobozos képen felvesz valami szisztéma alapján pontokat, majd a székes képen is ugyanúgy. Párosítja a pontokat, így egész pontosan meg tudja mondani, hogy a székes képen hol helyezkedik el a doboz.

    Szeptember 6., még 94 nap

    Ami tegnap nagyon zavart, hogy az ablakkezelőbe kellett raknom a kamera kalibrálást, az megoldódott, át tudtam rakni a képfeldolgozóba. Bár ez a megoldás se tetszik 100%-san, de sokkal jobb, mint az előző.

    Szeptember 7., még 93 nap

    A mátrixokat el kell menteni, és nem mindegy, hogy milyen néven, különben felülíródik. Win32 alatt is elérhető az "Open File Dialog" és a "Save File Dialog" beépített ablak.

    Folytatás...

    Elrood 5 éve 0

  • [SVS_10] Szeptember 3-5.

    Szeptember 3., még 97 nap

    Az OpenCV jelenleg két "részből" áll. Az OpenCV 2.0, ami C, és az OpenCV 2.1, ami C++.
    A programom C hívásokat tartalmaz, mert a legtöbb neten található forrás, tutorial és példa erre épül. Azonban ezen a napon kicsit utána jártam, hogy Sobel miként néz ki 2.1 hívásokkal.
    Nagy nehezen sikerült is, de a szál visszatérésnél az IplImage képadatra mutató pointere egyszerűen "elromlik" (<Bad Ptr>), hiába próbáltam meg egy csomó IplImage felépítő megoldást. Ha a 2.1 legfőbb struktúráját használom (cv::Mat), akkor minden oké.
    Most választhattam, hogy teljesen áttérek 2.1-re, vagy maradok, de inkább maradok, mert mint írtam fentebb, minden segédeszközöm 2.0-t használ, és nem biztos, hogy minden 2.0-s függvényt portoltak 2.1-re. Amit meg portoltak, lehet, hogy másképp. Például Sobel, 2.0-ban meg kell adni a forrást, a célt, és hogy x vagy y irányba deriválsz. 2.1-ben már azt is, hogy a cél mátrix milyen típus (pár napja itt rontottam el).

    Miután kifogytam az időhúzási (;]) ötletekből, összeszedtem mindent, ami a kamera kalibrációval foglalkozik, és elkezdtem "megfejteni".

    Folytatás...

    Elrood 5 éve 0

  • [SVS_9] Szeptember 1-2.

    Szeptember 1., még 99 nap

    A képfeldolgozással kapcsolatos kódokat átraktam egy új dll-be, hogy jobban elkülönüljenek az ablaktól és a robotvezérlőtől.
    Ki kísérleteztem, hogyan rakható egy kamera esetén 2 külön threadbe a kép lehívás, és a sobel feldolgozás. Két kamera esetén már 4 threadről beszélhetünk (bal, jobb lehívás, bal jobb sobel).
    Minden rendesen működik, meghozták a várt eredményt. Eredményeket majd holnap.

    Szeptember 2., még 98 nap

    Canny-val is megcsináltam azt, amit a sobellel tegnap, tehát 1 kamera esetén 1 vagy 2 thread, 2 kamera esetén 1 vagy 4 thread. Sajnos a tegnapi sobeles méréseket dobhattam a kukákba, mert a robotok ma kicsit gyorsabbak voltak, mint tegnap (nem voltak töltve, fizikailag ugyanoda raktam őket, érthetetlen...).

    Mérések:
    A mérést vpc-ben futó winxp-vel végeztem, ami csak 1 magot lát a processzorból. VS2008 alatt, debug módban futott a program (akár 10-30%-t is megesz így a processzorból). Az FPS kiszámítása úgy történt, hogy 10 másodpercenként összejött framek számát osztotta 10-zel a program, SVS esetén 1 frame, 1 képpárt jelent. A timeoutos részeket nem vettem figyelembe.
    Q8: legrosszabb jpeg minőség, Q1: legjobb jpeg minőség

    Folytatás...

    Elrood 5 éve 4

  • [SVS_8] Augusztus 26-31.

    Kicsit egyszerűsítem a dolgokat, mert sajnos kezdődik hamarosan az iskola :O. Például csak a munkával telt napokat jegyzem fel és a címbe se írok le minden napot, csak az időszakot.

    Augusztus 27., még 104 nap

    A sobel feldolgozás ötletemhez ismét elővettem a thread linkjeimet, és megoldást kerestem arra, hogyan adhatok adatot a threadnek, és hogyan szerezhetek onnan vissza, globális változók nélkül. Amire "vágytam", azt tesztkódban sikeresen megcsináltam.

    Gondoltam először az SVS képlehívását írom át 2db threadbe (a dll-ben), kíváncsiságból, hogy mennyit gyorsul. Olyan szép hibaüzeneteket kaptam, hogy csak lestem :B. Itt egy [link] nekem is ez volt a bajom, és Napalm megoldása lett jó nálam is, így nem kellett az egész dll-t átalakítani, a másik megoldás amit találtam, az sokkal nagyobb átalakítást igényelt volna.

    Izgatottan vártam, na mennyit gyorsul az SVS ettől és az eredmény: semmi gyorsulás :O. (Fekete kupakos teszt, régi kód 9-10 FPS, új kód 9-10 FPS 320x240Q8). Kicsit letörtem, mert nem értettem mi a baj, a thread hívás jól lett megírva, mert a tesztkódon szépen egyszerre csinálnak mindent.

    Folytatás...

    Elrood 5 éve 0

  • [SVS_7] Augusztus 24-25.

    Augusztus 24., még 107 nap

    Konzultációnak vége, a konzulens elégedett az eddig elért eredménnyel, főleg annak, hogy sikerült megoldani a jpeg dekódolást memóriában, és OpenCV-s IplImage-t csinálni.

    Gyorsításra is adott pár tippet, pl. nem kell RGB->BGR, elég lenne egy IplImage headert csinálni, memória másolást kiváltani mással (bár azt hiszem csak címet másolok, egyedül akkor másolok (memcpy()), amikor összegyűjtöm a kép bytejait) és SVS esetén a két kép dekódolását külön szál végezze.

    Kérése volt, hogy a kamera kalibráció, és a többiek majd külön .dll legyenek, és nem szükséges a grafikusba berakni, elég egy egyszerű konzolost megcsinálni.

    Először is, tesztet kell végeznem, hogy a robot éldetektálása gyorsabb-e, vagy az, ha számítógép végzi el (sobel + canny) és milyen a minőségük. Természetesen SVS robot esetén is, két képpel.

    Újabb konzultáció majd szeptemberben, addig kalibrációt, rektifikációt és sűrű illesztést meg kéne oldani opencv-s példák alapján.

    Sobel

    Folytatás...

    Elrood 6 éve 0

  • [SVS_6] Augusztus 21-22-23.

    Augusztus 21., még 110 nap

    Egy dolgot kifelejtettem a grafikus programból, az SRV távolságérzékelőjét. Elég katasztrofálisan mér, nem is hiányzik igazából, de azért beraktam, ha már a .dll-be implementáltam.

    Lásd kép:
    Egy fehér falra nézett a robot, merőlegesen. Három távolságból mértem le (zárójelben az igazi távolság): 22 cm (45 cm), 17 cm (30 cm), 13 cm (20 cm).
    A robot a kamerája segítségével határozza meg a távolságot, valamilyen belső függvénnyel. Ha a robot nem merőlegesen néz a falra, vagy valamelyik lézerpont nem látszódik, akkor teljesen random mér.

    Mérések

    screenshot

    Itt egy példa, mikor nem a fehér fal felé néz...
    screenshot

    Még azt hittem, a Lego NXT robot távolságérzékelője a szörnyű, a végén kiderült, hogy nem is rossz :).


    Lego NXT távolságérzékelője

    Folytatás...

    Elrood 6 éve 2

Hirdetés

Copyright © 2000-2016 PROHARDVER Informatikai Kft.