Goods Exchange Program – A jövő városa

Goods Exchange Program – A jövő városa

Goods Exchange Program – A jövő városa

Loading Likes...

A projektünk célja bemutatni egy olyan város képét, ahol a felesleges élelmiszereket, és tárgyakat optimalizáltan eljuttatják az azokra szükséget tartó lakosokhoz. A jövőben ezt a feladatot önvezető autók végezhetik, és a modellünk egy ilyen rendszert mutat be egy okos várost létrehozva.

A probléma

A világon több, mint 2 billió tonna hulladékot termelünk évente (theworldcounts.com). Ennek csak a 13,5%-át tudjuk újrahasznosítani, és becslések szerint a hulladék ⅓-a nincs megfelelően kezelve, és eltemetik, vagy elégetik növelve ezzel az ökológiai lábnyomunkat.

Az emberek rengeteg olyan tárgyat dobnak ki, amik nekik már nem kellenek, de még tökéletes, vagy használható állapotban vannak, míg eközben más helyeken pont ezekre lenne szükség. A feladatunk a felesleg és a kereslet optimalizált összekötése, hogy csökkenthessük az egyre növekvő környezetszennyezést.

A megoldás

Az okos város

Elkészítettük egy város 2m x 2m-es modelljét legóból. A városban a házakat speciális utak kötik össze, amiken az önvezető autók közlekedhetnek és elszállíthatják a felajánlott felesleges termékeket az arra igényt tartóknak, vagy elvihetik a raktárba.

Egy nap a városban…

Ha a városban egy lakónak feleslegessé válik egy tárgya, vagy van olyan étele, amit már nem tudna megenni egyedül, mielőtt megromlana, akkor egy weboldalon, vagy egy telefonos applikáción keresztül könnyedén felajánlhatják az adott terméket. Itt meg kell adni a felajánló pozícióját, a termék nevét, valamint leírását, majd ezt követően ki kell helyezni a ház elé egy szabványos tárolódobozba.

A többi felhasználó ugyanezen a weboldalon láthatja a felajánlott termékeket, és megrendelheti azokat.

A nap végén egy önvezető autó jár végig a házak között, és kézbesíti a rendeléseket. Azokat a termékeket, amik nem lettek megrendelve,  egy raktárba viszi, ahol egy újabb robot rakja be azokat a szabad helyekre. Ezek a termékek is megrendelhetők bárki számára, viszont így nem kell a lakásokban tárolni, de kidobni sem.

Itt látható egy videó a városról:

A pályaelemek

Utak

A városban LEGO utcalapok alkotját az úthálózatot. A különleges utakon fekete csíkot követ az okos autó. A piros csíkok a pontos fordulás, és megállás érdekében lettek elhelyezve.

Házak

A városban a házak és más épületek esztétikai célt szolgálnak. Nagy részük hivatalos LEGO készlet. Olyan területekre helyeztük őket, ahol nem fut út, hogy kitöltsék a teret. Mindegyikhez tartozik egy-egy fekete négyzet, ami a ládák kiindulási- vagy végpontja.

Ládák

23 egyedi LEGO láda jelképezi a felajánlott termékeket. A ládák tetején egy-egy hurok található, ezek teszik lehetővé egyszerű szállításukat.

A hardver

Az önvezető autó

A tárgyakat szállító autó egy teljesen LEGO-ból készült, EV3 által vezérelt robot. Kettő, közvetlenül motorhoz rögzített kerék hajtja, és két csapágykerék tartja egyensúlyban. Két elöl elhelyezett színérzékelővel navigál a szalagozott utakon. A robot képes legfeljebb négy dobozt szállítani és függetlenül lepakolni. Egy motor irányítja a négy kar valamelyikét, és egy másik motor egy váltórendszerrel eldönti, hogy adott időben melyiket. Így a robot a kerekekel együtt négy motort használ.

Az autó az utcalapok sakrairól tudja felvenni illetve oda lerakni a ládákat. Emellett lerakhatja a raktár bemeneti futószalagjára, és felveheti a kimeneti pontjáról.

A raktár

A begyűjtött ládák a raktárban tárolódnak. Az autó két lerakási pontra helyezi őket, ahonnan két kar besöpri egy futószalagra. A szalag végéről egy futómacskás darurendszerre rögzített kampó megragadja, majd átrakja a 23 tárhely valamelyikére. A kampó a függőleges tengelyen is tud mozogni, így könnyen átvisz egy dobozt a többi felett. Ha egy dobozt megrendelik, a darurendszer ráhelyezi egy csúsztatóra, amelynek végéről az autó elszállíthatja.

A raktár darurendszerét illetve annak állványát többnyire REV Robotics készletből építettük. A darupálya két sínén két, külön motorhoz rögzített lánc hajtja a főtartót a két végénél kelet-nyugat irányba. A főtartón közös motorral hajtott láncpár mozgatja a futómacskát észak-dél irányba. A kampó emelője két, egy síkban lévő, ellentétes irányba forgó lánc öv. Az egyik fogaskerekekkel, a másik lánccal van összekötve ugyanazzal a motorral. A láncokhoz rögzített kampó REV és LEGO elemeket is tartalmaz, hogy kellően testreszabhassuk a ládákhoz, miközben kompatibilis marad a Control Hub-bal. Egy REV Robotics szervómotor testét csavarokkal rögzítettük LEGO liftarmokhoz, a forgó részbe pedig beleragasztottunk egy LEGO tengelyt.

A raktár többi részéhez is LEGO-t használtunk. A lerakási pontokról lesöprő karokat egy Power Functions szervómotor mozgatja, a futószalagot egy M motor. Ez a kettő egy Infrared Receiver két kimenetéhez van kapcsolva. Az infra jelek egy Power Functions Infrared Remote-ból jönnek, aminek a karjait egy REV szervómotor kapcsolja, így a REV Control Hub irányít minden elektronikát a raktárban.

A tároló egy 5×5-ös négyzetrács, ennek egy-egy sarka a ládák bemeneti és kimeneti pontja. A rácsvonalak mentén tetőgerinc húzódik, biztosítva a ládák pontos elhelyezkedését.

A szoftver

A szerver

A szerver egy laptopon fut. Az API kódját, PHP-ban, a CodeIgniter keretrendszerben írtuk meg. A kliensek HTTP kéréseket intézhetnek a szerver felé, ami JSON formátumban válaszol.

Példakód:
A regisztráció backend-je (Account controller → “register” page) :

A weboldal

A felhasználók által használható kezelőfelületet, ahol rendelni, és felajánlani tudnak, a központi szerver szolgálta ki. Kliensoldalon Bootstrapet és JQuery-t használtunk. Ez a weboldal egy régebbi projektünk újraírt, és továbbfejlesztett változata. A régi weboldal megtekinthető a https://foodcoin.hu címen.

Példakód:
A saját felajánlásaim oldal részlete:

Az okosóra

Az okosóránkra (Samsung Gear Fit Pro2) a Tizen Studio és a JetBrains WebStorm segítségével tudtunk webes alkalmazást írni. Itt az Angular keretrendszert használtuk a kliensen, amiben a javascript kibővített változatán, a typescript nyelven írtuk a kódot.
Az óra a szerverrel http kérésekkel ún. service-ekkel tartotta a kapcsolatot.

Példakód:
Felajánlások komponens template-je:

Rendelés-státusz pipe-ja:

Az önvezető autó

Az önvezető autóban egy EV3 brick foglal helyet. Ezen a LeJOS nevű operációs rendszer fut, aminek segítségével Java-ban tudtunk rá kódot írni. Egy wifi stick-et behelyezve csatlakozni tudtunk a szerverhez, és az Unirest könyvtár segítségével küldtünk webes kéréseket.

Példakód:
Két pont közötti távolság kiszámítása az akadályok figyelembevételével

A raktár

A raktár irányítóegysége egy REV Robotics Control Hub. Ezen android operációs rendszer fut, így Java-ban tudtunk rá alkalmazást fejleszteni Android Studio-ban. A Control Hub-nak nincs saját képernyője, ezért egy scrcpy nevű programmal irányítottuk valós időben a kezelőfelületet egy másik számítógépről, amikor szükség volt rá.

Ez az eszköz hozta létre a wifi hálózatot, amire az összes eszköz – a szervergépet beleértve – csatlakozni tudott.

Példakód:
A kart vezérlő osztály részlete

A csapat  😋 😎 😍

Mindhárman a Budapesti Fazekas Mihály Gimnáziumba járunk, és az ottani robotikaműhelyben ismertük meg egymást. A projekt elkészítése során Umann Dávid felelt a robotok építéséért, Albert Márton az algoritmikus programozási feladatok elvégzéséért, Tóth Ambrus pedig a robotok közötti kommunikációért, a webes kliensek leprogramozásáért, valamint a kutatásért.

A csapatban való programozás megkönnyítésének érdekében a GIT nevű verziókezelő rendszert használtuk, ezáltal az összes kódot a felhőben tárolhattuk, és összefésülhettük az egyes emberek változtatásait a kódon.

Kutatás

A probléma kiválasztása után főképp a  https://data.gov oldal segítségével gyűjtöttünk adatokat a témáról.

A projektünk, és a megoldandó probléma kapcsán egy kérdőívet is készítettünk, amiben a kitöltőket a lomtalanításról, az adakozásról, valamint a használt eszközök/tárgyak vásárlásáról kérdeztük. A kérdőív megtekinthető a https://forms.gle/s3xXaPJcgfxQb5Uf6 címen.

Leave a Comment

Az email címedet nem tesszük publikussá. A kötelező mezők *-ként vannak jelölve.

Show Buttons
Hide Buttons