Cuprins:

Programare bazată pe evenimente în FTC: 4 pași
Programare bazată pe evenimente în FTC: 4 pași

Video: Programare bazată pe evenimente în FTC: 4 pași

Video: Programare bazată pe evenimente în FTC: 4 pași
Video: Rules of design composition and layout (ultima parte) 2024, Noiembrie
Anonim
Programare bazată pe evenimente în FTC
Programare bazată pe evenimente în FTC

Anul acesta, echipa noastră a depus o mulțime de muncă cu dezvoltarea de software bazată pe evenimente pentru robotul nostru. Aceste programe au permis echipei să dezvolte cu acuratețe programe autonome și chiar evenimente tele-op repetabile. Deoarece munca software pe care o solicită este complexă, am decis să împărtășim cunoștințele pe care le-am câștigat cu privire la dezvoltarea codului bazat pe evenimente pentru roboții FTC.

Pasul 1: Ce este programarea bazată pe evenimente?

În termeni generali, programarea bazată pe evenimente, potrivit Techopedia, este dezvoltarea de programe care răspund la contribuția utilizatorului. În acest sens, multe programe sunt considerate bazate pe evenimente, inclusiv programul tele-op al unei echipe, care se bazează pe intrări de la un controler condus de oameni pentru a efectua orice acțiune. Cu toate acestea, în ceea ce privește munca pe care o desfășoară echipa noastră, programarea bazată pe evenimente se referă la crearea de software din diverse intrări; cu alte cuvinte, documentăm evenimentele pe baza intrărilor controlerelor și senzorilor, apoi putem face coada acestor evenimente și putem utiliza fișierul pentru a relua evenimentul înregistrat.

Această metodă de dezvoltare a programelor pentru robotul nostru are mai multe avantaje:

  • Ne permite să creăm programe autonome precise. Întrucât creăm software-ul în timp real în timpul evenimentului, valorile senzorilor colectate și utilizate vor fi foarte exacte, deoarece provin direct din evenimentul original.
  • Ne permite să creăm rapid programe autonome. Realizarea de programe autonome este la fel de simplă ca înregistrarea unei serii de evenimente și ajustarea evenimentului după cum este necesar.
  • Ne permite să creăm procese automate pentru tele-op. Pentru acțiuni repetate în tele-op, programarea bazată pe evenimente ne permite să înregistrăm aceste acțiuni și să atribuim evenimentul unui buton în timpul perioadelor de meci controlate de șofer. Aceste evenimente automate pot fi influențate de senzori pentru a permite execuția lor exactă.

Pasul 2: Fluxul logic al programării bazate pe evenimente

Fluxul logic al programării bazate pe evenimente
Fluxul logic al programării bazate pe evenimente

Următoarele ilustrează fluxul logic al unui program bazat pe eveniment: roșu descrie crearea unui eveniment, iar albastru descrie chemarea evenimentului. Pentru crearea unui eveniment, o secvență de intrări este preluată prin acțiunea robotului și înregistrată ca evenimente; aceste evenimente sunt scrise într-un fișier. Pentru apelarea unui eveniment, acel fișier este citit, iar intrările sunt trimise unui procesor de evenimente pentru a transforma codul fișierului în acțiune robotică.

Pasul 3: Creator de evenimente

Creator de evenimente
Creator de evenimente
Creator de evenimente
Creator de evenimente

Creatorii de evenimente sunt folosiți pentru a documenta acțiuni sau „evenimente” bazate pe o varietate de senzori și butoane. Pe măsură ce robotul face acțiuni pe teren, o clasă de creator de evenimente creează evenimente pentru fiecare acțiune în paralel, făcând referire la evenimentul clasificat într-o clasă de evenimente. După ce a fost creat, evenimentul este pus într-o coadă de evenimente din clasa de evenimente: primul eveniment ocupă primul loc, apoi al doilea eveniment ocupă primul loc și împinge în jos orice evenimente de sub acesta, iar acest lucru continuă până când programul se oprește. Când programul este oprit, evenimentele se îndreaptă către un fișier format lizibil de către om, cum ar fi un fișier JSON. Acest fișier poate fi utilizat pentru a îmbunătăți mai bine rutinele autonome.

Exemplul de cod de mai sus setează parametrii pentru eveniment, care în acest caz este o rundă utilizând un senzor IMU. Apoi punem coada evenimentului în coada evenimentului. În cele din urmă, vom trunchia evenimentul, care în esență resetează evenimentul, astfel încât să-l putem folosi pentru a pune la coadă evenimentele viitoare.

Pasul 4: Procesor de evenimente

Procesor de evenimente
Procesor de evenimente
Procesor de evenimente
Procesor de evenimente

Clasele de evenimente iau fișierul care poate fi citit de om produs în clasa creator de evenimente și face tot ceea ce fiecare eveniment din coadă îi spune să facă apelând metodele descrise într-o clasă de procesor de evenimente. Clasa procesorului de evenimente îi spune apoi robotului ce eveniment să redea. Indiferent dacă este vorba despre un eveniment simplu „drive forward” sau un eveniment complex, plin de distanțe, viraje și balustrade, procesorul va reda orice eveniment dat acestuia. Acest proces este foarte util în timpul autonomiei, deoarece o echipă poate înregistra senzori și acțiuni Tele-Op înainte de a se potrivi, apoi redă pur și simplu evenimentele în mod autonom. Acest proces se numește Memory Replay. Acest lucru permite unui program autonom să fie 100% configurabil printr-un singur fișier. Odată ce creatorul și procesorul de evenimente sunt stabilite, o echipă poate schimba pur și simplu rutine autonome prin intermediul fișierului citibil de către om.

Exemplul de mai sus începe mai întâi prin verificarea fișierului JSON pentru un eveniment și apoi verificarea acelui eveniment folosind o instrucțiune de caz pentru a vedea ce fel de eveniment este, în acest caz o rundă folosind un senzor IMU. Odată ce poate spune că este o rundă folosind evenimentul IMU, acesta se ocupă cu procesarea evenimentului, care implică de obicei rularea codului din care a provenit evenimentul folosind variabile din eveniment, transmis pentru a reproduce evenimentul care a fost făcut anterior.

Recomandat: