2024. április 24., szerda

Gyorskeresés

Blog

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

  • RISC-V kalandok #1 (Mango Pi MQ-PRO)

    Ez a blog bejegyzés nem termék bemutató és nem RISC-V ismertető, ezért nem készül belőle cikk. Amolyan kiírom a gondolataimat bejegyzés és feljegyzések számomra későbbre.

    Bevezető

    2023-ra végre megérkeztek a megfizethető, linux-os RISC-V számítógépek (SBC).

    Mi az a RISC-V?

    Dióhéjban egy olyan CPU architektúra (ISA), ami nyílt és ingyenes. Részletesebb leírás: [link]. Az architektúra moduláris felépítésű, opcionális bővítéseket tartalmazhat. Részletesen itt: [link].

    Miért érdekes ez számomra?

    A munkám (szoftvermérnök) során mindig fontosnak tartottam, hogy hatékony kódot írjak. Szerintem ezt a szokást akkor vettem fel, amikor az első munkahelyemen korai Intel Atomokra kellett szoftvert írni, ahol ezt kikényszerítette a limitált hardware. Most se jobb a helyzet, jelenleg ARM-re kell ugyanezt tennem.

    Folytatás...

    Elrood 1 éve 2

  • Commodore 64 kapcsoló csere

    Bevezető - bevezető

    Terápiás jelleggel újra megpróbálom a blogolást.
    Sajnos a munkahelyem nem igazán elégít ki szakmailag, így sokat morgok munkaidő után is, ami hosszú távon nem tesz jót. A tapasztaltságnak is megvannak a hátrányai, amikor látod a problémákat, de a szűk mozgástér miatt nem igazán tehetsz ellene 🙂.

    A terv az, hogy valami újjal elterelem a figyelmemet munkaidő után. Ez pedig a retrózás Commodore 64-gyel és Amiga 500-zal, meg persze ezekről való blogolás.
    Egyelőre, aztán ki tudja mi kelti még fel a figyelmemet.

    Bevezető - forrasztás

    Retrózás miatt (is) elkezdtem forrasztani. Ha meg akarok javítani egy C64-t, vagy egy korai Amigát, akkor muszáj forrasztani. Nem is beszélve arról a sok érdekes kit-ről, amit alkatrészenként árulnak és neked kell összeforrasztani.

    Szoftver mérnök vagyok, sose tanultam, sose kellett forrasztanom. Nagyon kezdő vagyok, kevés tapasztalattal, ezért az eredményt kérem ilyen szemmel nézzétek. Természetesen tanácsokat szívesen elfogadom.

    Bevezető

    Idén tavasszal, egy rokonom révén kaptam ezt az alig használt, szép állapotú Commodore 64G-t. Az IC-k alapján 1988-ban gyártották. A garancia matrica sérült volt, de nem láttam nyomát, hogy mit csináltak benne korábban.

    Folytatás...

    Elrood 1 éve 10

  • Azok a régi notepad-es idők...

    Azok a régi szép idők, amikor internet hiányában (és ismeret hiányában) notepad-del kódolt az ember :).

    Kódkiegészítést használó IDE volt egyáltalán 2000-2004 környékén? Mintha Visual Studio 6.0-t használtam volna először C kódra 2002 után, de már nem tudom, hogy tudott-e kódkiegészítést.
    Először talán turbo pascalt használtam 2000 körül, az szerintem nem tudott. Java-t, HTML-t, Javascriptet és PHP-t akkoriban notepad-ban kódoltam.

    Screenshot magyarázat:
    Nagy refaktorálást csinálok saját kódot, ki akartam próbáltam valamit ARM-on, de lusta voltam csinálni egy Androidos projektet. Így raspberry + leafpad + Xming segítségével próbálgattam. Igen tudom, hogy a linuxos terminált is fel lehet osztani és nano-val módosítani a file-okat, de ez valahogy emberibben néz ki. QtCreator is elérhető rapsberry-n, csak X11 forwarding esetén lassúnak érzem.

    Elrood 7 éve 11

  • Megrendeltem a RealSense Robotic Development Kit-et, de...

    ... körülbelül 4 hónapnyi várakozás után visszamondták a rendelésem és visszautalták a pénzt:

    Unfortunately the Intel RealSense Robotic Development Kit has not received the required certifications to ship to Hungary. We have cancelled your order for a full refund. I apologize for the inconvenience.

    :W

    Kíváncsi vagyok, ennek mi lehet az oka.
    [link], FAQ-ban az országok listája, ahova szállítanak. Szeptemberig még a teljes EU benne volt.

    UPDATE
    B terv sikerült, külön-külön sikerült beszerezni.

    Elrood 8 éve 11

  • 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 8 éve 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 8 éve 1

  • Microsoft Easter egg?

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

    Windows 10 + Visual Studio 2015 Community

    Elrood 8 éve 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 9 éve 0

  • Stabilitásteszt

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

    Megfejtés: Keressétek az uptime-t

    Elrood 9 éve 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 9 é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 10 é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 11 é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 12 é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 13 é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 13 é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 13 é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 13 é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 13 é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 13 é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 13 é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 13 é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 13 é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 13 é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 14 é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 14 é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 14 é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 14 é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 14 é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 14 é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 14 é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 14 éve 0

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.