Zero Robotics

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Zero Robotics este o competiție internațională de programare a roboticii aerospațiale, care se bazează pe programarea unor roboți speciali numiți SPHERES , sau sateliți artificiali sferici (de fapt cu 18 fețe), realizat de MIT , situat în interiorul Stației Spațiale Internaționale . [1]

Competiția începe online, pe site-ul web al competiției [2] , unde oamenii se pot înscrie pentru a se alătura unei echipe (echipă), condusă de căpitanii echipei (mentori). Echipele care se formează pot participa astfel la o cursă care se repetă anual. [1]

Participanții la licitație își pot crea, modifica, partaja, simula și prezenta propriul cod, prin browserul lor web . După diferite etape ale diferitelor competiții virtuale secundare, finaliștii sunt selectați pentru a concura în direct într-un campionat la bordul ISS. Un astronaut va conduce competiția finală într-o situație de microgravitație printr-un canal de comunicare live.

Turnee

Competiția Zero Robotics este împărțită în trei tipuri de turnee.

Turneul liceului
A concurat în rândul studenților cu vârste cuprinse între 14 și 20 de ani. Turneul are loc în fiecare toamnă între septembrie și decembrie. Acesta este un eveniment internațional deschis tuturor echipelor din întreaga lume, deși, până în prezent, majoritatea echipelor provin din Statele Unite și Europa.
Campionatul italian
A concurat în rândul studenților cu vârste cuprinse între 14 și 20 de ani. Turneul are loc în fiecare toamnă între octombrie și februarie. Acesta este un eveniment la nivel național deschis tuturor echipelor care vin exclusiv din Italia. Rețineți că Italia este singura națiune din lume care are propriul campionat național, datorită numărului mare de echipe care se înscriu în fiecare an.
Programul de vară al școlii medii
Este dedicat studenților mai tineri. Este un program de cinci săptămâni în care elevii învață să programeze printr-o interfață grafică simplificată în comparație cu mediul normal de programare bazat pe text. Programul se va desfășura în locuri „care urmează a fi definite” pe baza locului în care există cea mai puternică prezență geografică a membrilor echipei.
Provocări deschise
Sunt deschise tuturor, din toată lumea, inclusiv profesioniști, educatori, studenți și mulți alții. Puteți participa individual sau ca parte a unei echipe. Aceste competiții implică de obicei producția intensivă de coduri complexe și algoritmi, care vor ajuta viitoarele misiuni de zbor spațial.

Golurile turneului

Participanții concurează toți împreună pentru a câștiga un joc provocator din punct de vedere tehnic, motivat de o problemă de interes actual pentru DARPA , NASA și MIT . În funcție de provocarea care trebuie confruntată, elevii trebuie să își programeze sateliții pentru a îndeplini anumite obiective (pentru a evita obstacolele, pentru a colecta obiecte virtuale, pentru a distruge obiective etc.), păstrând în același timp resursele primare (combustibil, energie, etc.) și să finalizeze provocarea. anumite limite de timp și spațiu pentru scrierea codului. Software-ul studenților trebuie să fie capabil să controleze factori precum viteza satelitului, rotația, direcția de deplasare și mulți alții, pentru a găsi algoritmul perfect pentru a atinge obiectivul și a câștiga provocări în cel mai scurt timp posibil comparativ cu adversarii.

Dificultatea constă și în faptul că programele sunt „autonome”, în sensul că atunci când sunt executate durează întreaga durată a provocării și nu este posibil să le controlăm sau să le modificăm execuția. De asemenea, trebuie remarcat faptul că memoria programabilă a SPHERES are o limită, ceea ce duce la utilizarea unui stil de programare curat și fără resurse.

Fizică

Participanții la Zero Robotics sunt încurajați să învețe și / sau să-și îmbunătățească cunoștințele de fizică de bază, deoarece situația ideală a cursei este de a găsi algoritmul optim de mișcare în gravitație zero, prin impunerea de forțe și / sau viteză la satelit. Cu toate acestea, este posibil să obțineți rezultate bune lucrând exclusiv prin impunerea coordonatelor pe satelit. [3]

Programare

Participanții la provocarea Zero Robotics învață să programeze într-un limbaj asemănător C / C ++ , în care diferite API-uri pot fi utilizate pentru a impune parametrii principali ai mișcărilor satelitului. Mediul de dezvoltare pentru scrierea codului se găsește online pe site-ul oficial al competiției și se numește IDE . [4]

Strategie

Un element foarte important, uneori principal, sunt alegerile strategice pe care trebuie să le facă o echipă pentru a obține cele mai bune rezultate din codul lor și pentru a câștiga în mod eficient provocarea împotriva adversarului. Alegerile strategice, uneori contraintuitive, derivă din analize matematice, fizice, operaționale atente, care stimulează utilizarea în profunzime a cunoștințelor învățate la diverse discipline.

Metode Init / loop

Programarea prin satelit este de obicei familiară celor care au avut experiență cu Arduino . Pentru a controla satelitul există de fapt două metode care vor fi întotdeauna prezente în cod: Este init și loop .

  • init este necesar pentru a inițializa variabilele la începutul execuției. Acest lucru se datorează faptului că init rulează o singură dată când satelitul pornește. În plus, trebuie remarcat faptul că variabilele nu pot fi pre-atribuite în afara acestei metode: ele trebuie instanțiate global în afara init , dar nu pot fi pre-atribuite decât în ​​interiorul acesteia.
  • loop este metoda de execuție. După init termină de execuție, satelitul va începe de executare totul în interiorul loop metoda, și se va face în mod automat, în fiecare secundă, pe termen nelimitat (sau , în orice caz , până la expirarea timpului maxim de executare. Variază de la cursa la cursa).

Este important să rețineți că loop se repetă la nesfârșit . Luarea act de aceasta este baza programării SFERELOR.

API

Pentru a muta satelitul este necesar să se utilizeze unele metode prezente în mediu, aparținând API-ului clasei de calculatoare. Iată câteva funcții care aparțin acestei clase [4] [5] :

  • api.getMyZRState ( ZRState myState)
ZRState este o definiție care corespunde unui vector de 12 elemente în virgulă mobilă (plutitoare). api.getMyZRState( ZRState myState ) o variabilă de tip ZRState cu informații necesare pentru a înțelege unde vă aflați în avion, cât de repede vă deplasați și altele. Tocmai informațiile sunt indexate în această ordine:
    • myState [0] (sau myState [POS_X] ): Poziția în plan față de axa X.
    • myState [1] (sau myState [POS_Y] ): Poziția pe plan față de axa Y.
    • myState [2] (sau myState [POS_Z] ): Poziția în plan față de axa Z.
    • myState [3] (sau myState [VEL_X] ): Viteza de mișcare pe axa X.
    • myState [4] (sau myState [VEL_Y] ): Viteza de mișcare pe axa Y.
    • myState [5] (sau myState [VEL_Z] ): Viteza de mișcare pe axa Z.
    • myState [6] : X al vectorului de indicare.
    • myState [7] : Y al vectorului de indicare.
    • myState [8] : Z al vectorului de indicare.
    • myState [9] : Rotire pe axa X.
    • myState [10] : Rotire pe axa Y.
    • myState [11] : Rotire pe axa Z.

Exemple de utilizare:

 / **
* Codul folosește API-ul: api.getMyZRState (ZRState myState);
* Codul folosește metoda DEBUG (()) pentru a afișa poziția satelitului pe ecran.
* /
void init () {

}
bucla nulă () {
 ZRState statul meu ;
 albine . getMyZRState ( statul meu ); // Acum myState este populat
 DEBUG (( "Satelitul este situat în X:% f Y:% f Z:% f \ n " , myState [ 0 ], myState [ 1 ], myState [ 2 ] ));
}

O variabilă numită myState și de tip ZRState va fi ZRState și va fi scrisă prin api.getMyZRState( myState ) che restituisce le coordinate e le velocita' dello SPHERES . Rezultatul va fi că poziția satelitului (în X, Y, Z, respectiv indexată la 0, 1 și 2 în vectorul myState, urmând lista de mai sus) va fi afișată continuu pe ecran (prin DEBUG ()).

O metodă specială este utilizată în codul: DEBUG(()) . Acesta trebuie utilizat cu paranteze rotunde duble, după cum se arată în documentația oficială. DEBUG se comportă similar cu printf .

  • api.setPositionTarget ( float [3] positionTarget)
Această metodă funcționează cu o logică țintă. Dându-i ca intrare coordonatele unei ținte, Sferele vor încerca să o atingă la fiecare executare a comenzii. Nu o va ajunge imediat, dar o va ajunge automat. Apoi va reveni programatorului să facă anumite verificări (folosind metoda api.getMyZRState ( ZRState myState) ) pentru a înțelege dacă ați atins efectiv obiectivul.
  • api.setVelocityTarget ( float [3] velocityTarget)
Această metodă funcționează cu o logică țintă. Dându-i un vector viteză ca intrare, SFEREA va încerca să o atingă la fiecare execuție a comenzii. Nu va atinge acele viteze imediat, dar le va atinge automat.
  • api.setAttitudeTarget ( float [3] attitudeTarget)
Această metodă funcționează cu o logică țintă. Dându-i coordonatele unui obiectiv ca intrare, SFERA va efectua o rotație globală pentru a deplasa fața satelitului caracterizată prin velcro (poziționat pe axa -X) și a-l îndrepta spre acel obiectiv. Nu va indica imediat acest obiectiv, dar o va face automat.
  • api.setForces (forțe plutitoare [3] )
Aceasta este o comandă de impunere. Definim o forță care trebuie aplicată pe fiecare axă, care va fi aplicată la fiecare execuție a comenzii. Cu toate acestea, SPHERES are o accelerație maximă bine definită, astfel încât poate fi aplicată o gamă limitată de forțe.
  • api.setTorques (cupluri flotante [3] )
Aceasta este o comandă de impunere. Definiți o rotație care trebuie aplicată pentru fiecare axă, care va fi aplicată fiecărei execuții a comenzii. Cu toate acestea, SPHERES are o accelerație maximă de rotație bine definită, astfel încât se poate aplica o gamă limitată de viteze de rotație.

Exemple de cod

Codul sursă al unui program tipic IDE Zero Robotics poate fi următorul.

 / **
* Codul mută satelitul la coordonatele XYZ {0,5, 0,3, -0,4}
* Codul de navigat folosește API-ul: setPositionTarget ([3]);
* Codul folosește DEBUG (()) pentru a imprima timpul de execuție
* Timpul de execuție este salvat într-o variabilă globală „timp”.
* /
int timp ;

void init () {
 timp = 0 ;
}

bucla nulă () {
 float țintă [ 3 ] = { 0,5 , 0,3 , -0,4 };
 albine . setPositionTarget ( target );
 DEBUG (( "Timp de execuție:% d \ n " , timp ));
 timp ++ ;
}

Codul indică modul în care satelitul, la infinit, va încerca să meargă la coordonatele XYZ = {0.5, 0.3, -0.4} .

Câștigătorii turneului de liceu

Echipele care au câștigat turneul de liceu sunt următoarele: [6] [7] [8]

An Alianța câștigătoare Locul 2 Locul 3 Locul 4
2011 - Campionatul European Experimental CyberAvo:
  • LSS Enrico Fermi, Padova
  • Berufskollegs für Wirtschaft und Verwaltung, Aachen
    IISC Olivetti, Torino
2012 - Campionatul European Echipa „BEER”
  • Kaethe Kollwitz Oberschule, Berlin
  • LSS Enrico Fermi, Padova
  • Herder-Gymnasium, Berlin
  • Liceo Democrito, Roma
  • Heinrich-Hertz-Gymnasium, Berlin
  • ITIS Pininfarina, Moncalieri
  • Liceul Științific F. Cecioni (Livorno)
  • Ramiro de Maeztu (Madrid, ES)
  • Matematicianul Școlii de Pensiune Miguel de Guzman (Torrelodones, Madrid, ES)
  • IIS Vallauri (Fossano, CN)
  • Berufskolleg fuer Wirtschaft und Verwaltung Aachen (Aachen, DE)
  • IIS Giulio Natta (Rivoli, TO)
2013 - Campionatul European Echipa „CAFE”
  • LSS Enrico Fermi Padova
  • Colegio Retamar, Pozuelo de Alarcón
  • American School Of Paris, Paris
  • ITISG Ferraris, Napoli
  • NCCS Tudor Vianu, București
  • ITI Renato Elia, Castellammare di Stabia
2013 - Campionatul Italiei
2014 - Campionatul Mondial Echipa LakeElevenVADARS :
  • Team Lake (Statele Unite)
  • Corà's Eleven (GBBrocchi Scientific High School, Bassano del Grappa, Italia)
  • VADARS (Statele Unite)
Echipa BACON Zanneio BR Robotică :
  • BACON (Statele Unite)
  • Zanneio Stardust (Grecia)
  • Big Red Robotics (Statele Unite)
Echipa CrabTachyonsMontaVista :
  • Nebuloasa Crabului (Liceo Scientifico F. Cecioni, Livorno, Italia)
  • Tahioni (Statele Unite)
  • MV Zero (Statele Unite)
Echipa NullPointerO.LEOhms :
  • NullPointerException (Statele Unite)
  • OLE (Spania)
  • The Ohms (Statele Unite)
2014 - Campionatul Italiei Echipa LSA Robotics # 2 (Liceul Științific Avogadro, Vercelli) Echipa plutitoare Fermi (Liceo Scientifico "E. Fermi", Padova) Dominoes (Liceul Științific F. Vercelli, Asti) Zero Satellite (Liceo Scientifico F. Vercelli, Asti)
2015 - Campionatul Mondial EX-AEQUO
  • Echipa CrabNebulaMVZeroVADARS:
    • Nebuloasa Crab (Liceo Cecioni, Livorno)
    • MV Zero (Statele Unite)
    • VADARS (Statele Unite)
  • Echipa TheFermiFloatingTeamTachyonsJuggler :
    • TheFermiFloatingTeam (Liceul E. Fermi , Padova)
    • Tahioni (Statele Unite)
    • Jongler (IISSGB Vaccarini, Catania)
EX-AEQUO
  • Alianța câștigătoare a echipei de rutine total ezoterice :
    • Etica muncii zero (Statele Unite)
    • Programatori de duminică (liceul E. Fermi, Padova)
    • SetFermiForce (Liceul E. Fermi , Padova)
  • Echelonul echipei :
    • ZRighi (ITI Augusto Righi, Napoli)
    • Robodogs (Statele Unite)
    • MSJ AP Coffee (Statele Unite)
2015 - Campionatul Italiei TeamOre (Institutul Tehnic F. Marchi, Pescia) ArtoBotics (ITIS A. Artom, Asti) Pisica moartă a lui Schrödinger (Liceu Leonardo da Vinci, Florența) Kalypso (IIS Europa Unita, Chivasso (TO))
2016 - Campionatul Mondial Echipa SpaceLinguine :
  • ZRighi (Institutul Tehnic Industrial "A. Righi", Napoli, Italia)
  • OverExtendedProgramming (OEP) (Statele Unite)
  • Echipa LSA Robotics (Liceul Științific "A. Avogadro", Vercelli, Italia)
Echipa FlyingFalconsTheQuarkCharmCode :: Spațiu :
  • Flying Falcons (Australia)
  • The Quark Charm (Statele Unite)
  • Cod :: Spațiu (România)
EX-AEQUO
  • PRO :
    • Proxima Centauri (Liceul de Stat „F. Cecioni”, Livorno, Italia)
    • Rock Rovers (Statele Unite)
    • @Override (Franța)
  • CosmicSparTech :
    • Cosmic Vikings (Statele Unite)
    • Spartar (Australia)
    • DevilTech (Statele Unite)
2016 - Campionatul Italiei Șoimul Mileniului (Liceul Științific Cecioni, Livorno) Echipa de robotică ZeRo LSA (IIS Avogadro - Liceul Științific, Vercelli) Pablitis (ITI "R. Elia", Castellammare di Stabia) JvNeumann_POLLENZA (IISS "J von Neumann", Roma)
2017 - Campionatul Mondial EX-AEQUO
  • Echipa BeachPin1701:
    • Beachbotics (Statele Unite)
    • ZeroZeroPinin (ITIS GB Pininfarina, Moncalieri (TO))
    • ÎNTREPRINDERE (ITIS "G. Galilei", Livorno)
  • Echipa Prions și Lions obraznici:
    • Leii Spațiali (LSS Leonardo Da Vinci, Treviso)
    • Stuy-Naught (Statele Unite)
    • PR1SM5 (Statele Unite)
EX-AEQUO
  • COLA (Catchers Of Life Alliance) :
    • SetFermiForce (Liceul Științific de Stat „E.Fermi”, Padova, Italia)
    • Westlake ZRHS (Statele Unite)
    • Major-Antlia (IISS Ettore Majorana, Seriate (BG), Italia)
  • FangTeamRocketint (roverts) :
    • Zanneio Stardust (Grecia)
    • Team Rocket (Statele Unite)
    • int (roverts) (Australia)
2018 - Campionatul Mondial Spaghete întunecate ale echipei :
  • Echipa întunecată a LSA (IIS Avogadro - Liceo Scientifico, Vercelli)
  • Stuy-Naught (Statele Unite)
  • Spaghetti Code (Statele Unite)
TeamHit sau Miss:
  • Proof Robotics (Statele Unite)
  • Nebuloasa Crab (Liceo Cecioni, Livorno)
  • Rock Rovers (Statele Unite)
Toate celelalte echipe sunt „participanți” ex aequo

Nu au fost definite clasamente dincolo de locul 2.

2019 - Campionatul Italiei LSA Spoleto A. Volta (Liceul Științific A. Volta, Spoleto) Programatori de spaghete (Lss Galileo Ferraris, Torino) Tehnologii Made in Heaven (IIS Giulio Natta, Rivoli (TO) + Liceo Juvarra, Venaria Reale (TO)) Fermi4Tech (Liceo SS "E. Fermi", Padova)

Notă

  1. ^ A b (EN) Despre Zero Robotics , pe zerorobotics.mit.edu. Adus la 10 aprilie 2014 .
  2. ^ Bine ați venit la Zero Robotics , la zerorobotics.mit.edu . Adus la 26 august 2019 .
  3. ^ Agenția Spațială Europeană, ESA, Zero Robotics Lecția 1: Optimizarea traiectoriilor în spațiu , 5 noiembrie 2012. Accesat la 30 ianuarie 2017 .
  4. ^ a b Tutoriale , la zerorobotics.mit.edu . Adus la 30 ianuarie 2017 .
  5. ^ http://static.zerorobotics.mit.edu/docs/tutorials/ZR_user_API.pdf
  6. ^ (EN) Turnee , pe zerorobotics.org. Adus la 10 aprilie 2014 .
  7. ^ Zero Robotics , la zerorobotics.mit.edu . Adus la 30 ianuarie 2017 .
  8. ^ Zero Robotics High School 2018 Champions! , la zerorobotics.mit.edu . Adus 29-01-2019 .

linkuri externe