Keresés

Új hozzászólás Aktív témák

  • Micsurin

    nagyúr

    válasz dabadab #19012 üzenetére

    Na azóta sikerült haladni is a szakdolgozattal végre hála a nyárnak és az időnek, a végén még februárban kint leszek... :DDD Kód gatyába rázva a teljesítményt amit akartam megnyertem végre értelmesen fut viszont még mindig szórakoztat az a "villódzás" és ötletem sincs már miért maradt meg még mindig ami csak azért ciki mert ilyenkor eltűnik a képről a körívem és értelemszerűen null problémákba futok.

    Pusztán elméleti síkon ha ezek a függvények adottak:
    serial_Read(); -> Gondolom egyértelmű.

    perspective_transform(); -> Transzformációs mátrix alapján előállít egy kb felülnézeti képet.

    reverse_perspective_transform(); -> ^ eredetit adja vissza a fentebbiből.

    preprocess_frame(); -> Egy konyhakész képeket ad vissza, az alap képen elvégzi az elmosást a szürke árnyalatokat az élkiemelést (ezek mind OpenCV beépítettek nem nagy téma), meghívja a transzformálást majd arra a vonal felismerést és visszatranszformálást zárásképp. A madártávlatival és a visszatranszformálttal térünk vissza.

    draw_circle(); -> Serialról olvasott érték alapján rajzol egy kört. Ha nincs értelmes érték akkor 0 vagy előző értelmes érték alapján jön vissza a kör. (első futásra 0 utána mindig az előző valid érték alapján) A kör mindig úgy van a sugár alapján pozícionálva, hogy ha 0 fok jönne vissza akkor kb egy egyenes jelenjen meg középen körív által. Ehhez az előző elmozdulást alapul véve mindig balra vagy jobbra van kicsit eltolva.

    A main loop pedig ebben a sorrendben hív mindent:
    Serialt meghívja ezután ráhívja a preprocess_frame-et majd itt a visszajött madártávlatira ráhívja a draw_circle a kapott Serial értékkel. Ekkor megjelenítjük mind a visszatranszformált képet a felismert vonalakkal mind a madártávlatit amire csak a kört van kirajzolva. Ez mind jó és szép végre elértem, hogy ~27-30FPS-el futunk 560p-n.

    Na most az a gond, hogy rendszeresen jön vissza 0 mikor nem kéne ezért az amúgy szép folyamatosan kirajzolt kör vissza visszaáll középre vagy épp nem kerül kirajzolásra (kivétel nincs, nem fut hibára csak ha épp a körívet akarok szín alapján kikeresni a képen nem lesz ott... akkor már jön a kivétel.) Mintha a draw_circle(); nem kerülne meghívásra...

    Még mindig az a hibája tippre, hogy lusta voltam párhuzamosítani vagy a logika lenne rossz a sorrendet tekintve, hogy mi miből mit hív?

    Próbáltam szokni a Pythonos párhuzamosítást de ez valami kegyetlen .NET után. Inkább reszeltem egy hónapot a kódot, hogy nyerjek mindenhol még némi futási időt csak ne kelljen szálazzak de gondolom nem fogom megúszni... :DDD

    Azért sántít, hogy valami hívási logika hiszti lesz a háttérben és nem szálkezelési mert sem a teljesítmény nem esik be sem a vonal felismerés. Egyszerűen tényleg mintha lennének esetek mikor nem kerül meghívásra a draw_circle()-öm.

  • Micsurin

    nagyúr

    válasz dabadab #19012 üzenetére

    Egyértelműen egy termelő egy fogyasztó köszi elindulok holnap ezen! :R

    Erősen idegállapotba hoz a szakdoga projekt jól észleled :B melóban csak .NET és webprojektek + mobildev téma megy de szakirány szerint meg beágyazott rendszereken lennék köszönhetően annak, hogy szoftverre ami .NET lenne felvettek mindenki aki rommá csalta az online félévet és mivel én 1 év csúszásban voltam hála a mateknak well én minden fizikailag bent és azokkal versenyeztem akik meg mindent online otthon progból... :)

    Röviden: kamerával veszem az utat pozícionálás után fogom a képet Canny éldetektálás és vonal kiemelés majd transzformálom ortografikusba, itt jönne a kör téma ami valójában egy ív lenne mert a jármű sebessége és dőlésszöge (motor, és utóbbi adat jön soros portról -> kis UnoR3 és GY521) alapján berajzolnám a várható ívet. Ha megvan az ívem és tudom a sáv széli vonalakat akkor tudok biztonságos sebességre / dőlésszögre (amit épp változtatni kell) visszajelzést adni. Könnyebbnek hangzik mint amilyen lesz... csak épp ketten kezdtük projektnek de beletört a bicska viszont a saját szakdogámról kiderült nem valósítható meg hw-es limitek miatt így a félkész TDK munkánkat berántottam szakdogának. Most meg mint malac a jégen ismét... remélem így tisztább. :B

    A teljesítmény difit egyértelműen a termelőre várakozás adta azt nem tudom (remélem) összekapcsolódik-e ezzel az, hogy a körív ha statikus/a fogyasztóban előállított értékkel van előállítva akkor rendesen kirenderelhető de ha a termelőből várt adattal tenném akkor ki kimaradnak frame-ek és teljesen hektikus az eredmény.

Új hozzászólás Aktív témák

Hirdetés