Fórum témák

» Több friss téma
Fórum » AI - Artificial Intelligence, avagy a robot agya
Lapozás: OK   4 / 9
(#) Giants hozzászólása Jún 13, 2011 /
 
Miután megalkottuk a modellt, végig kell gondolni hogyan lehet a robot mozgását irányítani, „kézben tartani”. Kezdjük a legegyszerűbb esettel.

A legegyszerűbb működési mód az, ha csak akadályérzékeléssel látjuk el a robotot és az érzékelők állapota szerint változik a hajtás iránya. A robot hajtását bekapcsoljuk és akadály érzékeléskor csak a motor irányváltásával operálunk a haladás és fordulások tekintetébe. Ez esetben a bekapcsolt motorok teljes teljesítménnyel – és ebből következően –, teljes fordulatszámmal működnek. A robot orientációja és pozíciója véletlenszerű, környezetfüggő. Ekkor a motorok egy nyílt hatásláncú irányítás beavatkozó elemei. Ez a működésmód is magában hordozza mindazon hibákat, amelyekről az előzőekben szó esett. Azonban a mozgás szempontjából nem számít, hiszen a robot nem tervezett pályán halad. Még csak nem is egyfajta útvonaltervezés eredményeként állt elő a pálya, hanem a körülményekből eredő sztohasztikus viselkedés következményeként. Ebben az esetben a pálya és robot pozíció reprodukálhatatlan, bár alkalmas lehet látszólagos tájékozódási tulajdonságokat mutatni.

Az előző esethez viszonyítva lássuk el a kerékforgás irányát és mértékét érzékelő jeladóval is a robotot. Számítsuk ki az elmozdulás és annak időtartama segítségével a várható pozíciót. Ez tipikusan a dead reckoning eljárás. Már a korai hajósok is ezt a módszert alkalmazták a szextáns feltalálása előtt. (Intő példa pontosságára Kolumbusz esete, mikor is a történelem szerint Indiát vélték felfedezni a célhelyen.) Az első esethez képest változást jelent egyfajta orientáció és pozíció ismeret. A dead reckoning kumulatív hibahalmozást mutat, ezért a pálya reprodukció itt sem lehetséges.

Nyilvánvaló, hogy nem véletlenül foglalkoztam a robot mozgásegyenleteivel… Az ok pedig az, hogy az eddig vázolt megoldásokat tovább lehet finomítani, ahol is a modell szerepet játszik az irányításban. Miben állhat ez a változtatás? Az előzőekből egyenesen következik, hogy egyrészt a pozíció és orientáció pontos számításához, alkalmas jeladókat kell felhasználnunk. Másrészt a hajtásban olyan módszereket kell bevezetnünk, amelyek a robot fizikai tulajdonságaiból eredő hibát csökkenthetik. Tipikus példa erre egy nyomvonal követő kocsi.

Hogyan működik? Általában differenciál hajtással ellátott felépítmény, melynek a bal és jobb oldali motorjai a nyomvonal érzékelése alapján működik, vagyis a pálya irányából visszacsatolással bír. Ez a típusú irányítás zárt hatásláncú, más szóval szabályozás. Mégpedig a szabályozási alapjelet maga a nyomvonal optikai (vagy más módú) leképezése hordozza, a hibajelet pedig a nyomvonaltól való eltérés. Ennek birtokában a két motor ki-, bekapcsolásával és forgásirány váltásával lehet pozícionálni a kocsit. Nem kell hosszadalmas igazolásba kezdenem, hogy belássuk önmagában a ki- és bekapcsolás nem ad jó eredményt. Ha a mechanika és a motor paraméterek összessége olyan, akkor egy instabil mozgásállapothoz jutunk, jobb esetben működőképes, de lengő megoldáshoz.

Nézzük a következő gondolatkísérletet: feltételezzük, hogy a kocsi jobb és bal oldali, optikai sáv érzékelővel van ellátva. A sávérzékelők vonaltól eltávolodva csökkenő értékű analóg jelet szolgáltatnak. A kocsi sávelhagyásakor – például balra – a bal oldali érzékelő jelszintje egy határérték alá csökken, és az elektronika kikapcsolja az azonos oldali hajtást. Értelemszerűen a másik oldali hajtás működése kanyarodásra kényszeríti a kocsit, mígnem az előző érzékelő jelszintje ismét megfelelőre vált. A kocsi előre haladása folyamán ez ismétlődik hol az egyik, hol a másik irányban. Ennek következtében kissé imbolyogva halad előre. Amennyiben a motor „túlzott” sebességgel forgatja a kocsit, előfordulhat, hogy a helyes jelszint elérése után ellenkező oldali hibát produkál, mégpedig úgy, hogy az érzékelők elvesztik a vezető sávot. Ez gyakorlatilag „ellengést” jelent, instabil működést. Adódik azonnal a klasszikus megoldás: a motorok szabályozási körét úgy kell kialakítani, hogy képes legyen kompenzálni és stabilizálni a zavaró jelek hatását. Legyen képes a mindenkori hibanagysággal arányos beavatkozást végrehajtani. Vagyis a jó hatékonysághoz nem elegendő a beavatkozás, szabályozni kell annak mértékét is. Ez mindenképpen az ismert általános szabályozók valamelyik típusát feltételezi. (Szabályozási alapismeretekről bővebben egy korábbi topikban írtam.)

Szabályozástechnikai alapismeretek

Adódik tehát a harmadik felépítés, melyben a hajtás megfelelő szabályozással képes irányt tartani. Mi szükséges hozzá? Részben már ismert, korábban bemutattam a robot blokkvázlatát, de most néhány kiegészítést teszek.

Az előző részben felsoroltam a hibaforrásokat, egy részüket zöld színnel jelöltem. Megfelelően megválasztott jeladókkal a hibaforrások egy részét ki lehet zárni a folyamatból. Azzal, hogy a robot Q pontjában elhelyezett giroszkópot és optical flow érzékelőt alkalmazok a hibaforrások zölddel jelzet elemeit kizárjuk az előfordulásból. Lényegében rendszeres hibaforrásként marad az érzékelő véges felbontása, saját hibája és a véges jelfeldolgozási sebesség. De már ez is jelentősen csökkenti a szerkezeti felépítésből eredő rendszeres hibát.

A kérdés az, hogyan integráljuk ezen érzékelők által szolgáltatott információkat!?
(#) Giants hozzászólása Jún 13, 2011 /
 
Mielőtt választ kapunk a kérdésre, nézzük meg a 19. ábrát.

19. ábra

A képen egy adott pályán mozgó robot orientációját és pozícióját láthatjuk. A hibákból eredően a pálya y irányú pozíciójában +/-Δey, az orientációjában +/-ΔeΘ eltérés léphet fel (feltételezzük, hogy rögzítjük a szélsőértékeket). E mellett a kocsi v sebességgel mozog. Nyilvánvaló, hogy a robot pályán tartásához az előbb felsorolt változókat kell figyelembe venni. A korábbiakban már az orientáció és pozíció hiba jellegét megbeszéltük. A sebesség viszont még lebegő kérdés. Miért szükséges egy v sebesség tartása mozgás közben? A szabályozóköri beavatkozás a PWM jel által a motorok fordulatszámának változásában jelenik meg. Amennyiben maximális sebességgel mozoghat a robot, úgy nincs lehetőség pozitív irányú beavatkozásra, ezért a haladási sebességet limitáljuk a maximális sebesség alatt. A másik ok a sebesség határolására az, hogy olyan nagyságúnak kell lennie, amelynél a robot stabilan képes a pályakorrekcióra. Összegezve, a motorok szabályozásához három bemeneti változót és két kimeneti változót kell figyelembe vennünk.

Azonnal látható, hogy elég összetett feladatot kell megoldani. Ehhez fuzzy szabályozási eljárást fogok alkalmazni. A fuzzy logika kiválóan alkalmas több be- és kimeneti változó egyidejű feldolgozására.

A fuzzy szabályozásról az alábbi jegyzetben olvashattok bővebben.

Jegyzet

A most vázolt megoldásból következik, hogy a rendszeres és véletlen hibák nagy részét kiküszöbölhetjük a nélkül, hogy járulékos kalibrációt kellene elvégezni.
(#) Giants hozzászólása Jún 14, 2011 /
 
Kezdem visszasírni a topiknyitás körüli zűrzavart... legalább volt mindenféle reakció. Most meg nem tudom eldönteni, hogy egy-két emberen kívül van-e egyáltalán más érdeklődő. Ha vannak olvasók, akor észrevételeknek is kellene lenni.... Szűkszavú a leírás? ..esetleg bő lére eresztett? Érthető? Érthetelen? Érdektelen? Könyörgöm, valami életjelet...

G
(#) Fizikus válasza Giants hozzászólására (») Jún 14, 2011 /
 
Szia!

Nekem a cikkiras miatt most nem sok szabadidom volt a topikot olvasni, ezert nem reagaltam. Meg megprobalom az altalad kuldotteket megemeszteni (megprobalom a szabalyozasteknikai ismerethianyom kicsit csokkenteni...). A fuzzy logika alapjait mar ertem, de egyelore fogalmam sincs, hogy ezt hogyan lehetne a gyakorlatba atultetni.
(#) borvendeg válasza Giants hozzászólására (») Jún 14, 2011 /
 
Én csak a háttérben megbújva olvasgatok... Most a vizsgaidőszak végeztével lesz időm megemészteni is...
(#) Giants válasza borvendeg hozzászólására (») Jún 14, 2011 /
 
Szia,

pár érdeklődőért már érdemes ...

Köszi
(#) Giants hozzászólása Jún 14, 2011 /
 
A szabályozónk felépítéséhez meg kell határozni a független és függő változók értelmezési tartományát valamint definiálnunk kell azok egyenleteit. Egyik bemeneti változó az y irányú pozícióhiba, jelöljük ey-val a 2.1 egyenlet szerint. Értékkészletében megjelenik a robot pályától való eltérésének maximális nagysága, melyet önkényesen határozunk meg. A másik bemeneti változó az orientáció hiba, jelöljük eΘ-val a 2.2 egyenlet szerint. Az orientáció hiba értékkészlete a lehetséges irányszögek összességét tartalmazza. A harmadik bemeneti változó a robot pillanatnyi sebessége, jelöljük ev-vel a 2.3 szerint. Ebben az esetben az értékkészlet nullától a maximális értékig tejed, mivel a robot mozgás közben elvileg bármilyen sebességet felvehet. (Ez a sebesség nem tévesztendő össze a motor „sebességjelével”)

Egyenletek

A kimeneti jelek aggregációja a 2.5 összefüggés szerinti.
A jelölések sorra: y_ref a pozíció alapjel, Θ_ref az orientáció alapjel, v_ref a sebesség alapjel, η a fuzzy szabályozó erősítése, w_j a kimeneti változó súlyozási faktora, C_j a kimeneti változás foka.
Az erősítés megválasztásával befolyásolni lehet a szabályozókör dinamikus viselkedését.

Miután az összes egyenletünk megvan deklarálnunk kell a változókhoz tartozó nyelvi értékkészletet is, melyek reprezentálják a változókhoz tartozó tagsági függvényeket.
Kiindulásként mindegyik változóhoz három tagsági függvényt rendelünk. (A tagsági függvények száma meghatározó a szabályhalmaz nagyságát illetően, valamint a kiértékelés számítási igényében.)

Ennek megfelelően a változók tagsági függvényei nyelvi operátorokkal:

pozíció hiba, orientáció hiba, sebesség hiba:

negative
zero
positive


PWM:

low
medium
high
(#) Fizikus hozzászólása Jún 14, 2011 /
 
A fentiekhez egy kerdes:
Hogyan hatarozod meg a pozicio es orientacio hibat?
Mert a roboton levo erzekelok nem abszolut, hanem relativ erzekelok (hacsak nem hasznalsz abszolut erzekelot pl. iranytumodult az orientacio erzekelesere).
Matematikailag leirhatod a rendszer viselkedeset, meg fel is rajzolhatod az idealistol valo elterest, de szamomra a feladat nehezsege ott kezdodoik, hogy amit elindul a robot, nem tudod hogy hol van az idealis palya amitol kene merni az elterest. (a legtobb szabalyozasi pelda amit neztem homerseklet szabalyozas, mivel a homero abszolut erzekelo, egybol tudjuk a kivant es a valos homerseklet kozotti kulonbseget (a hiba nagysagt)). Ezert is leszek kivancsi arra, hogy a valosagban ezekbol az egyenletekbol hogyan lesz iranyitas...
(#) Giants válasza Fizikus hozzászólására (») Jún 15, 2011 /
 
Először is az iránytartáshoz nem feltétlenül kell az abszolút pozíció és orientáció ismerete. Miért nem kell? Mivel önkényesen meghatározhatjuk referenciaként a számunkra szükséges irányt és helyet, ebből kiindulva már relatív hiba alapján működik az irányítás. De konkrétan kitérve a robot mozgására: vannak feltételek, melyek meglétét kezdetben – az elindulásnál – adottnak tekintünk. Bármilyen kezdeti feltételeket szabsz a robottal kapcsolatosan, mindig vannak dilemmák, hogy hol is kezdődjön és végződjön a feltételhalmaz.

Kellően nagy téma ez ahhoz, hogy legyenek olyan részek, amelyek kifejtésével lemaradásban vagyok. Így van ez most is. A teljes képhez hozzátartozik, hogy a működési teszt végrehajtásához meg kell határozni a kezdeti feltételeket. Ezek pedig a többek között az alábbiak. Rendelkeznünk kell egy X_i, Y_i koordinátarendszerrel (kellően nagy tér), egy startponttal és egy célponttal, amelyeknek a koordinátarendszerünkben kitüntetett helye van és koordinátái ismertek. Tehát: letesszük a robotot egy kezdeti pontban megfelelő orientációval, amelyet referenciaként rögzítünk. Ehhez viszonyított helyzetét adjuk meg a célpontnak (irány, X_i, Y_i koordináták). Korántsem biztos, hogy a rögzített koordináta rendszerünk abszolút tájolású – például az égtájakkal megegyező. A roboton lévő szenzorok (giroszkóp, gyorsulás érzékelő, optical-flow) elégségesek ahhoz, hogy az általuk szolgáltatott információk alapján a koordináta rendszerünk tetszőleges pontjához navigálhassunk csak a relatív elmozdulásokkal operálva. (Az orientáció és pozíció adatok többszörösen állnak rendelkezésre – giroszkóp->irányváltozás, irányvektor; gyorsulásmérő->irányváltozás, irányvektor,sebesség,megtett út; optical-flow->irányváltozás, irányvektor, sebesség, megtet út. Ezekből szenzorfúzióval aggregálhatunk kiindulási adatokat a szabályozó és az útvonaltervező részére.) Természetesen most eltekintettünk a halmozódó hibáktól, de mint említetem a működési elvek demonstrálásához ez is elegendő. Amiről még nem esett szó: az előbb felvázolt eset a legegyszerűbb, hiszen ha nincs akadály a start- és célpont között, akkor az elmozdulás során végig egy irányt kell tartani. Amennyiben több akadály is fellelhető a start és célpont között, szükségünk lesz pályaszámításokra melynek során az útvonaltervező algoritmus olyan elmozdulás vektorokra bontja a lehetséges pályát a start és cél között, melyek eredője a startból a célba mutat. A robot pillanatnyi mozgását mindig az adott pályaszakaszhoz tartozó elmozdulás vektorhoz viszonyítjuk és korrigáljuk.

A tényleges irányítási rendszerbe való illeszkedését programkód szinten később fogom bemutatni. Remélem megválaszoltam a kérdésed, ha mégsem, kérlek pontosítsd és megpróbálom újra.
(#) Giants válasza Fizikus hozzászólására (») Jún 15, 2011 /
 
Még valamit kifelejtetem. Ha beleolvasol a korábban belinkelt könyvfejezetembe, ott konkrét példát láthatsz arra - és nem hőmérséklet szabályozást -, hogyan lesz az egyenletekből működő szabályozás.
(#) sargarigo válasza Giants hozzászólására (») Jún 15, 2011 /
 
Azt a mindenit!

Véleményem szerint ez a "kis szösszenet" erősen hiánypótló mű lesz! Szivacsként szívom magamba a tudást.. Ezek a pályakorrekciós dolgok nagyon érdekesen hangzanak, és engem már előre izgat, hogy vajon miként fogod felhasználni a giró, és a gyorsulásérzékelők adatait!

Csendben megjegyzem, hogy mégha lenne is kérdésem (olykor azért akadna), inkább félreteszem későbbre, mert esküszöm nincs szívem megtörni az írás lendületét és különben is, idővel úgyis kiderül ami homályos.
Például adottnak vesszük hogy van nekünk TCP/IP stackünk. Speciel erről is örülnék egy magyar, hasonlóan épületes leírásnak. Konkrétan az általad alkalmazott ENC chippel.

Köszönjük a munkádat, és várjuk a folytatást!
(#) Fizikus válasza Giants hozzászólására (») Jún 15, 2011 /
 
Koszonom kimerito valaszod. Kezd mar megvilagozodni a dolog... A konyvet meg nem volt idom teljesen elolvasni idohiany miatt, de a hetvegen nekiulok.
(#) Giants válasza sargarigo hozzászólására (») Jún 16, 2011 /
 
Szia,

örülök, hogy így gondolod. Számomra is hasonlóan izgalmasak ezek a kérdések és a megoldásuk nemkülönben.

Minden, a robot felépítésével, működésével kapcsolatos részre kitérek olyan sorrendben, ahogyan az én logikám szerint következik. A sorrendtől függetlenül szívesen veszem a kérdéseket remélve, hogy válaszolni is tudok rá.

G
(#) Giants hozzászólása Jún 16, 2011 /
 
A giroszkóp és gyorsulásmérőhöz kapcsolódó tesztekről készítettem egy-egy videót. Az alábbi linkeken érhetőek el:


Gyro test

Accelerometer test
(#) sargarigo válasza Giants hozzászólására (») Jún 16, 2011 /
 
Közben eszembe jutott, hogy a kifejtés közben esetleg lehetne külön altémákat nyitni az egyes részegységeknek, persze odafigyelve hogy ne legyen belőlük túl sok. Szerintem úgyis mindenkit elsősorban a saját szíve csücske érdekel, és akkor nem forgácsolnánk szét a fő témát. Ezek egyenként is elég nagyok, jobban bele lehetne merülni. Aztán lehet hogy rossz ötlet, mert ha egy altéma nagyon elviszi az energiát, akkor beledöglik a fő téma is. Nem tudom.

Ilyenekre gondoltam, hogy
- hajtáslánc elmélet (ami eddig volt is már pár szóban)
- érzékelők
- adatkapcsolat
- adatbázis
- pc-s analízis
- stb.


Jól látom, hogy a képernyőre a vezérlőd állítja elő a kompozit video-jelet? Ez is egy önálló téma önmagában is.. Hidd el, sokan szívesen szedegetnénk a tudásod morzsáit!
(#) Fizikus válasza Giants hozzászólására (») Jún 16, 2011 /
 
Szia!

Egy gyors technikai jellegu kerdes:
A giroszkop jeleit hogyan ertekelted? (Fix idokozonkent megmered a szogsebesseget es az adatokat integralod?)
(#) Giants válasza Fizikus hozzászólására (») Jún 17, 2011 /
 
Így van. A tesztméréshez egyszerűen csak szummát képeztem adott idő alatt. A pontosab mérésekhez timer megszakítást használok és integrálást. (A szögsebesség idő szerinti integrálja a szögelfordulás.) Ugyanígy dolgozom fel a gyorsulásmérő adatait is.
(#) norbiv8 válasza Giants hozzászólására (») Jún 18, 2011 /
 
Hello,

engem is érdekel a robot irányítási elmélet, esetleg forráskódokat is tehetnél fel az érzékelők használatához.
(#) Giants hozzászólása Jún 22, 2011 /
 
Folytatva a változók meghatározását, először is módosítanom kell a korábbi kimeneti változók nyelvi operátorait a következőképpen:

low
medium
high


helyett

decrease
steady
increase


Ennek a módosításnak elsősorban az az oka, hogy így a tényleges kimeneti jel változását tükrözi a nyelvi változó jelentése.

Az 20. ábrán látható az FLC (Fuzzy Logic Controller) blokkvázlata. Két szabályhalmazt alakítottam ki, elsősorban azért, hogy csökkentsem a szabályok számát. A crisp érték aggregációjánál megjelenik mindkét szabályhalmaz eredménye.

20. ábra

Az MBF_doc dokumentum tartalmazza a változók részletes leírását. Ugyancsak ott található az FLC szabályhalmazkifejtése, valamint a fuzzyfikációhoz szükséges definíciós pontok is.

MBF_doc

A tagsági függvények szokásos ábrázolási formája egy térbeli felület, mely szemléletesen mutatja az egyes változók hatását a kimeneti értékekre. A 21. ábra a pozíciót, sebességet és a bal oldali motor pwm jelét mutatja összefüggéseiben.

21. ábra

A 22. ábra a pozíció, sebesség és jobb oldali motor pwm jelét mutatja összefüggéseiben. Látható, hogy a bal és jobb oldali pwm jelleggörbék (felületek) ellentettjei egymásnak, mivel az előre haladó mozgáshoz egy időben a motorok ellekező irányú forgást végeznek.

22. ábra

A 23. ábra a pozíciót, orientációt és a bal oldali motor pwm jelének összefüggéseit mutatja.

23. ábra

A további ábrák animációi bemutatják az egyes paraméterek változásának hatását a pwm kimeneti jelre.

24. ábra

25. ábra

26. ábra

A motorok fordulatszám szabályozásának tervezése ezzel megtörtént, a működési elvek figyelembe vételével és az FLC tulajdnságainak ismerete alapján kódolható az eljárás.
(#) Giants válasza sargarigo hozzászólására (») Jún 24, 2011 /
 
Szia,

elnézést kérek amiért csak most tudok reagálni a felvetésedre. Hogy gondoltad konkrétan az altémákat?

Van valami konkrét javaslatod milyen irányban folytassam?

G
(#) Giants hozzászólása Jún 24, 2011 /
 
Most egy apró választás előtt állok. Nevezetesen, hogy mi legyen a következő rész. Lényegileg a mozgással kapcsolatos problémákat végignéztük, ehhez csak az útvonal tervezés kapcsolódik amely egy másik hierarchia szinten valósul meg (a számítógépben).

Maradt olyan részlet amelyet nem tárgyaltunk kellő részletességgel? Van-e javaslatotok, hogy mivel folytassam?
(#) sargarigo válasza Giants hozzászólására (») Jún 24, 2011 /
 
Konkrétan arra gondoltam, hogy engem például külön érdekelne a hálózatkezelés, ami ugye szervesen nem kapcsolódik ide, és kár lenne miatta szét-offolni a témát. Mivel előbb utóbb úgyis esik majd szó róla, ezért nem tartom túl fontosnak ezt a felvetést, de ahogy bonyolódik a rendszer, egy idő után szerintem követhetetlen lesz hogy ki mit hogyan lát, miről szeretne többet tudni.


A mozgás tervezésekor eldöntöttük, hogy a járművünk két kerék között fordul, gyakorlatilag a saját tengelye körül. A későbbi kidolgozás is természetesen ennek megfelelően történt. Tudnál-e esetleg valami hivatkozást adni arra az esetre, ha engem egy négykerekű kocsi mozgása érdekel? Hagyományos járgány, elöl két kormányzott kerék, differenciálművel.
(#) sargarigo válasza Giants hozzászólására (») Jún 24, 2011 /
 
Foglaljuk össze

Van egy vázunk, ami most már képes haladni tetszőleges sebességgel, valamint elfordulni tetszőleges szögben.
Ahhoz hogy A-ból B pontba eljusson, szükséges megállapodni hogy mi alapján tájékozódunk, vagyis milyen eszközök állnak rendelkezésünre, szem előtt tartva az elvárható pontosság nagyságát.
Ha ez megvan, akkor szükséges meghatározni az akadályok kikerülésének mikénjét (hogyan kerüljük ki), valamint ezek érzékelésének módját (mivel szerzünk tudomást róla -> mekkora, merre ésszerűbb kerülni).

Ha tudjuk hogy most éppen hol vagyunk, és azt is hogy hova megyünk, akkor elvileg már csak oda kell mennünk.
Kihagytam valamit?

Amit kezdetben mutattál képet, azt fel tudnád megint tölteni? Sajnos már nem elérhető. Azt, amelyiknél feltetted az A-ból B-be kérdést

Szerintem ez a motoros fuzzy-s leírás nagyon jó lett. Kedvem támadt kipróbálni
(#) Giants válasza sargarigo hozzászólására (») Júl 18, 2011 /
 
A hálózatkezelésre is kitérek részletesen. Az alábbi linken találsz egy rövid leírást két kormányzott kerékkel épített kocsiról.

Négykerekű

Mondjuk sok kiegészítő információval nem szolgál. A megvalósítás hasonló ahhoz, amiről én írtam. A lényegi különbség, hogy nem a kerekenkénti szögsebesség változtatásával kormányzol, hanem kell egy kormányszervo is. Annak jobb illetve bal irányú elfordításával helyettesíted a jobb vagy bal oldali kerekek szögsebesség változtatását. Külön mozgáskorrekció kell a a kocsi pontos irányításához, mivel kanyarodásnál az ív sugarának középpontja mindenképpen a kocsin kívül helyezkedk el.
(#) Giants válasza norbiv8 hozzászólására (») Júl 18, 2011 /
 
Szia,

fogok forráskódot is feltenni.

G
(#) Giants válasza sargarigo hozzászólására (») Júl 18, 2011 /
 
Köszönöm az összefoglallást, tökéletes volt. Most megnézzük hogyan szerzünk tudomást az akadályokról és hogyan választunk útirányt.

Az eredeti kép:Bővebben: Link

Mielőtt nekiültem robotot készíteni (és persze közben is) rengeted dokumentációt és szakirodalmat néztem/nézek át. Nem akarom feltalálni újból azt, amit már megtettek mások. (Így megy ez „tudományos berkekben is”…. ) Talán annyi a hozzáadott érték, hogy az elméleti elgondolásokat felhasználva, továbbgondolva én egy új fúziót és konkrét implementációt csinálok.
Azért írtam erről mert így volt ez a környezet érzékelésével kapcsolatosan is. Körbenéztem és azt tapasztaltam, hogy egyelőre nincs jó megoldás. Hosszú ideig így is lesz.

Milyen lehetőségeink vannak a robot környezetének érzékelésésre?

Nézzük rögtön a szonárt: Az adatlapokból és a tesztmérésekből hamar kiderül, hogy sok esetben hamis információhoz jutunk általa. A szűk nyalábkeresztmetszet és a szórási problémák korlátozzák a használhatóságát.

Infra távolságmérés: Hasnló a helyzet mint a szonárral. Nagyon szűk a látószöge.

Lézeres letapogatás: A környezettérképezés hatékonyabbá tehető, de nagyon költséges dolog. A szkennelés szűk síkja is problémákat hordoz, alacsonyan fekvő akadályokat nehéz azonosítani.

Képalkotó módszerek: Egy kamerával legfeljebb kiegészíteni tudjuk a lézeres távolságmérést és csökkenteni a költségeit. A kamera tengelyével szöget bezárólag elhelyezett lézerforrás visszaverődéséből számítani lehet a távolságot. Mégpedig az elhelyezkedés geometriai viszonyai alapján. Nem igazán hatékony, és csak távolságot mérük egy síkban. Ha bővíteni szeretnénk a látóteret, bonyolult szervorendszert kellene létrehozni.

„Mesterséges látás”: Sztereó képek felhasználásával a látótér vertikálisan is tágítható, de a látótávolság változtatásával a látótér is változik. Vagyis ha távolra nézek vele, a közeli objektumok detektálása romlik és fordítva.

Vannak még egyéb módszerek is, de ezek között már felsoroltam a választott módszert. Szerintem világos már a blokkvázlatból is, hogy szonárt és videó jelfeldolgozást fogok használni ..ami ráadásul elegáns is...

Mint előzetesen említetem 5 szonárt és két kamerát alkalmazok. A kamerák egy sztereó „szemet képeznek”. Nem csak arról van szó, hogy egymást kiegészítve próbálom meg a környezet letapogatását, hanem bizonyos helyzetekben egymástól eltérő funkciókat is rendelek hozzájuk. Így például egy nyíltabb térben történő iránymeghatározáshoz szenzorfúzióval kalkulálom a „helyes” irányt. Egy zsúfolt térben pedig a szonár funkcióját prioritásában a kamerák fölé helyezve egy falkövető elgoritmussal hozhatjuk ki a robotot a deathlock közeli helyzetből.
A szonár modulokat közvetlenül a kontroller kezeli. Ezzel egyben integrálom az ütközésvédelmet is a hajtásba, a képfeldolgozást pedig az „agy” végzi. A számítások eredményei alapján küld utasítást a vezérlőnek a további irányt, sebességet, irányszöget illetően. Említettem, hogy a számítógépen egy linux operációs rendszer fut. Ebben a környezeben fog külön task-ként működni a képfeldolgozás. Ehhez két db USB kamerát építek a robotra. A szoftvereszköz tekintetében az OpenCV GPL liszencelésű szoftvert alkamazom. Realtime számítógép alapú látásra fejlesztik, így a könyvtár felhasználásával sok energiát takaríthatok meg. Most már csak a rendszerintegrációt kell megcsinálni.
(#) sargarigo válasza Giants hozzászólására (») Júl 19, 2011 /
 
Lehet hogy csak én siklottam el felette, de nem emlékszem hogy érdemben lett volna szó arról, hogy az 'A' pontból a 'B' pontba "véletlenszerűen" egyfajta bolyongást követően jutunk el, vagy pedig célirányosan. Utóbbi esetben legalább hozzávetőlegesen tudnunk kell hogy merre tartsunk, és a felbukkanó akadályokat csak megpróbáljuk kikerülni.
Honnan tudjuk hogy hol van a 'B' pont?
(#) Giants válasza sargarigo hozzászólására (») Júl 19, 2011 /
 
Valószínű azért nem emlékszel, mert nem esett szó részletesen a haladás módjáról. Az én szemszögemből valójában nem is érdekes momentum. Az eredeti meghatározás így hangzott:

A robot maga egy három vagy négy kerekű kinetikai rendszer, amely egy tetszőleges térben mozog. A felépítése és egyes elemeinek kivitelezése demonstrálási céllal készülnek. Bemutatja például, hogyan lehet képanalízissel autonóm módon közlekedni egy akadályokkal tarkított térben. Milyen programrészek döntenek mondjuk az akadály kikerüléséről. Hogyan lehet "A" pontból "B" pontba juttatni mindössze azzal az utasítással, hogy "Menj "A"-ból "B"-be.."

A megfogalmazás elég céltudatos tevékenységre utal, így nem is merült fel bennem, hogy egyfajta bolyongás véletlen eredménye lenne a célbajutás. De pontosíthatunk. Egy kitüntetett vonatkoztatási rendszerben vizsgáljuk a robot mozgását. A kezdeti állapotban számunkra a tér ismert, a robot számára nem. Általánosságban, ha egyáltalán tudatos tevékenységről beszélünk, számunkra ismert a kiindulási és a cél pozíció. A két pont közötti út megtételéhez felhasználjuk tájékozódási képességeinket, netán egy térképet. Bármilyen térbeli elmozdulásról beszélünk – legyen az tudatos lény általi, vagy mondjuk geológiai esemény – mindig egy vonatkoztatási rendszerben vizsgáljuk, vagyis a vizsgált rendszeren belüli relatív pozícióra hivatkozunk. Itt sincs ez másként. A start pontban (A) elhelyezet robot indulás előtt megkapja a kiindulási és a célpozíció koordinátáit (B). (Később akár bonyolítani is lehet a szituációt.) A cél „ismeretében”, lehetőleg célirányosan, valamiféle stratégia felhasználásával megpróbálja elérni azt. Számomra kézenfekvő elindulni egyenesen a cél felé, a közben felbukkanó akadályokat kerülgetve.

Felmerülhet a kérdés: mi a különbség egy labirintus járó és egy szabad térben mozgó robot között? Ha csak ennyi a kérdés: a válasz semmi. Ha hozzá tesszük, hogy a második eseben önállóan, konkrét pozícióba kell eljutni, máris óriási a különbség. A labirintus bejárásához és azon átjutáshoz - kvázi célt elérve – elég egy egyszerű automatizmus. Nincs benne semmi döntési algoritmus és semmi „tudatos”. A mozgás kivitelezéséhez nincs szükség lokalizáció és orientáció analízisre, azak alapján döntés meghozatalára. Ha a labirintus példát bonyolítjuk és feladatként hozzátesszük: a labirintus egy meghatározott pontja a cél, máris szükségünk lesz valamiféle helymeghatározási módszere és döntési stratégiára. Szerintem elég jól érzékelhető a különbség.

Bocsánat a hosszú szövegért, nem erősségem a szűkszavúság...
(#) sargarigo válasza Giants hozzászólására (») Júl 20, 2011 /
 
Idézet:

Bocsánat a hosszú szövegért, nem erősségem a szűkszavúság...”

Pont ezt szeretjük benned


Értem. Tehát van egyfajta térképünk, és adottak a pozíciók is. Így már valóban nem olyan fontos az említett motívum.
Kíváncsian várom a folytatást!
(#) kurtyka hozzászólása Nov 28, 2011 /
 
Sziasztok!

Ismeretszerzés gyanánt a következő oldalt ajánlom:
AI Class

Üdv, Kurtyka
Következő: »»   4 / 9
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem