szonda

Irány a Mars!

Batsányi János Gimnázium és Kollégium

Út a tudományhoz program P-UT-2014/2015-0016

szonda
Összefoglalás
Amikor a munka elkezdődött és az első beszélgetések során szétosztottuk a feladatokat, csak sejtésünk volt a vállalt munka nagyságáról. Kovács Kíra előadása a Mars kutatásról, a marsi körülményekről tovább árnyalta a problémát. Megbeszéltük, mit kell figyelembe venni és milyen körülmények hanyagolhatunk el és felvázoltunk néhány lehetséges megoldást, a hipotézis igazolásához. Két táborra szakadt a kutató csapat, az egyik tábor Péter és Gergely a központi irányítás mellett érvelt, amelynek előny, hogy biztosan van a lokalizációhoz középpontunk, viszont hátránya, hogy a központ sérülése esetén az egész vállalkozás kudarcra van ítélve. A másik csapat az egyenrangú robotok mellett érvelt, amely megoldásnak viszont sejthetőleg komoly matematikai vonatkozásai lesznek, hiszen Magyar Attila előadásában már szó volt arról, hogy egy tárgy helyzetének meghatározásához szükséges algoritmusok milyen bonyolultságúak.
Gergely előadása tovább mélyítette a problémát, hiszen a földi iránymeghatározásban nagy szerepet játszó mágnese erőtér, mint Kírától már megtudhattuk, csak 1:800 értékű a földihez képest és csak anomáliaként van jelen. A földet körülvevő műhold hálózat pedig egyáltalán. Persze ettől még az elv egyes részei hasznosíthatóak állapították meg a kutató csoport tagjai.
A Mars után a modellalkotáshoz és szimulációhoz rendelkezésünkre álló eszközök felé fordítottuk figyelmünket. Péter segítségével részletesen megismertük az NXT robot lehetséges érzékelőit és azok működésének elvét, korlátai. Elképzeléseket alakítottunk ki, hogy mely szenzorokra lesz szükségünk a modellben. Az első megközelítésben a következő megállapításokra jutottunk:
  • A robotoknak autonóm működésűeknek kell lennie.
  • A helymeghatározásban odometriás rendszer alkalmazásához, szükség lesz elfordulás adatainak érzékelésére.
  • A környezet tárgyainak feltérképezéséhez, távolságainak meghatározására távolság érzékelő szenzorra.
  • A tárgyak és robotok egymástól való megkülönböztetéséhez kommunikációra.
Ezen tulajdonságokkal az NXT robotok rendelkeznek így a feladat megoldásának akadálya nincs. Annak ellenére, hogy bizonyos szenzorokat (iránytű, gyorsulás,  gyro, EPOD) nem fogjuk felhasználni, az általuk mért adatok, pontosságuk meghatározás fontos volt számunkra, így végeztünk velük kapcsolatos kísérleteket is.
A szimulációban a motorok segítségével megtett út kiszámítására lesz valószínűleg szükségünk, ezért először az ezzel kapcsolatos matematikai összefüggéseket ismertük meg. A kerék átmérője, a tengelytáv határozza meg, hogy robot mekkora szögben fordul, milyen távolságot tesz meg. Az összefüggések megismerése után nem maradt más választásunk, mint a robot megtervezése. Két terv készült. Az egyik az NXT modellre, a másik az EV3-as robotokra készült.
Most már akadálya nem volt, hogy a programozás, programtervezést is elkezdjük. Átismételtük problémamegoldás lépéseit, az algoritmus fogalmát és el kezdtünk részfeladatokban gondolkodni, vagyis minden a feladattal kapcsolatos problémát egyre kisebb részekre bontani, hogy eljuthassunk az utasítások kódolásáig. Megoldottuk a fordulás, haladás, visszatérés problémáját, majd a távolságmérés és az adatok rögzítése, tárolásának feladata következett. Ebben nyújtott segítséget Marcell előadása az adatokról, adatszerkezetekről és azok memóriában és háttértárolókon való tárolásának módjáról az informatikában. A programozást NXC nyelven kezdtük a Brix Command Center 3.3.17-es programozási környezetben. A robotokon az 1.31 firmware futott.
Megismertük a motormozgató és a beépíttet elfordulás szenzor utasításait, majd a távolságérzékelő adatait rögzítettük tömbökben. Megállapítottuk, hogy a pontossága a szenzoroknak csak valószínűségi és hibatűrő következtetések levonására alkalmas, de ez nem befolyásolja a szimulációt.
Megállapítottuk, hogy a tömbök helyett a struktúrákban való adattárolás jobban megfelel a céljainknak, és sikerült a mérési adatinkat a robot memóriájának állományában tárolni, így lehetőség nyílik a későbbi adatfeldolgozásra és a mérések tanulmányozására.
A hipotézisünkben a robotok közötti kommunikáció is sarkalatos kérdés volt így megkezdtük először Bálint előadásának a segítségével a kommunikáció és az ember által használt kommunikációs eszközök megismerését. Majd a robotok kommunikációjában használt bluetooth adatátvitelt ismertük meg.
A bluetooth megismerése átalakította egyes elképzeléseinket, hiszen a LEGO NXT megoldása, alkalmas 4 robot kommunikációjára azonban, csak egy központi (Mester) roboton keresztül. Tehát a mester tud minden robotnak címzetten adatot küldeni, de a slave robotok, csak a mesternek tudnak információt küldeni. Ezért két robotra szűkítettük a résztvevő robotok számát, és az egyes programrészleteket (mester és slave) megkülönböztettük. (lásd: ÚT-2014_2015_0016Tapolca-mars.nxc). A programot eljárásokra tagoltuk.
Az egyes részeket külön-külön fejlesztettük.
UT-2014_2015_0016Tapolca-mars.nxc
A fő algoritmus, amely az egyes részek összekapcsolója, itt található az adatstruktúra deklarációja.
UT-2014_2015_0016-Tapolca-targyszamolas.h
A robot megszámolja a körülötte lévő tárgyakat, rögzíti az egyes tárgyak. távolságát, az irányszögét és, hogy a tárgy eltakarítandó-e.
UT-2014_2015_0016-Tapolca-marsbluetooth.h
A két robot közül a mester elküldi a slave-nek a mért adatait.
UT-2014_2015_0016-Tapolca-adatfeldolgozas.h
A slave feldolgozza az adatokat. Megjelöli az adatbázisban azokat a tárgyakat, amelyeket a mért adatok összehasonlítása során közel azonosnak talál.
UT-2014_2015_0016-Tapolca-takaritas.h
A jelöletlen tárgyakat eltolásáért felelős eljárások.
UT-2014_2015_0016-Tapolca-util.h
A mért adatok nyomkövetését segítő, valamint inicializáló eljárások gyűjteménye.
Az adatok távolságának mérése:
Az ultrasonic szenzor tárgyanként 25-80 mérési adattal szolgált. A mérési adatok sokszor pontatlanok. A szenzor mérési távolsága gyári adatok: 0 – 255 cm Mérési eredmények pontossága függ:
  • a tárgy mérete
  • a tárgy anyaga, felülete
  • felület és a mérési irány közbezárt szöge
  • a tárgy áll vagy mozog
  • a tárgy mérete
A pontosság fokozása érdekében az algoritmusunk a tárgy összes mért távolságának átlagát tekintjük a tárgy távolságának.
A tárgyak helyzete:
A kerék elfordulásának szögét a motor lekérdezéséből kaptuk.
Szögszámítás vázlata
A 2 dimenziós tömbben egy tárgyról 4 adatot tároltunk:
  1. 0. tömbelem: A tárgy átlagtávolsága
  2. 1. tömbelem: A tárgy szöge a kiindulási helyzethez képest
  3. 2. tömbelem: A tárgy távolságának megállapításakor figyelembe vett mérések száma
  4. 3. tömbelem: Takarítható-e
A tömb adatainak átküldése után a robot összeveti a saját mért adataival és kiválasztja, hogy mely tárgyak robotok és mely tárgyak az eltávolítandó objektumok. Az algoritmus így néz ki:
Ismételni, amíg a tárgyak száma != 1
	1. megállapítani a körülöttük levő távolságát és helyét, tárolni a lista hosszát
	2. az adatokat átküldeni a másik robotnak
	3. fogadni a másik robot adatait
	4. az adatokat feldolgozni (Összehasonlítani van-e azonos távolság érték, melyik az és hány van)
	   Ha az azonos tárgy távolságok száma != tárgyak száma
		akkor 
			5.a törölni az azonos távolságú tárgyakat
			6. kiválasztani a legközelebbi tárgyat
			7. eltolni a tárgyat a távolság kétszeresének távolságára
		különben 
			5. b Kiválasztani a legközelebbit és megtenni felé az út felét
  Ismétlés vége

Következtetések

Az elgondolást jónak ítéltük, a robotok közül az egyik, amelyik a megfelelő adatok, az összes tömb birtokában volt, ki tudta választani, hogy valószínűleg melyek a tárgyak és melyek a robotok. Mérések és elfordulások pontatlansága miatt a szimulációk során 50%-os hatékonyságot értünk el. Amelyet az algoritmus finomításával biztosan tudunk a későbbiekben javítani. Azonban így is igazolni tudtuk a hipotézisüket. A rendelkezésre álló idő alatt a gyakorlatban nem sikerült általánosítani a programot a gyakorlatban, így egyetlen robot végzi el a takarítást maga körül. A későbbiekben a kommunikációs algoritmus javításával, a több robotra kiterjesztésével ez a probléma orvosolható.