Inhoudsopgave:
- Stap 1: Wat is gebeurtenisgestuurd programmeren?
- Stap 2: Logische stroom van gebeurtenisgestuurde programmering
- Stap 3: Evenementmaker
- Stap 4: Gebeurtenisverwerker
Video: Gebeurtenisgestuurd programmeren in FTC: 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Dit jaar heeft ons team veel werk verzet met event-driven softwareontwikkeling voor onze robot. Dankzij deze programma's kon het team nauwkeurig autonome programma's en zelfs herhaalbare tele-op-evenementen ontwikkelen. Omdat het softwarewerk dat het vereist complex is, hebben we besloten om de kennis die we hebben opgedaan over het ontwikkelen van gebeurtenisgestuurde code voor FTC-robots te delen.
Stap 1: Wat is gebeurtenisgestuurd programmeren?
In algemene termen is gebeurtenisgestuurd programmeren volgens Techopedia de ontwikkeling van programma's die reageren op gebruikersinvoer. In die zin worden veel programma's als gebeurtenisgestuurd beschouwd, waaronder het tele-op-programma van een team, dat afhankelijk is van de input van een door mensen bestuurde controller om elke actie uit te voeren. In termen van het werk dat ons team heeft gedaan, gaat het bij gebeurtenisgestuurd programmeren echter om het creëren van software op basis van verschillende inputs; met andere woorden, we documenteren gebeurtenissen op basis van de invoer van controllers en sensoren, dan kunnen we deze gebeurtenissen in de wachtrij plaatsen en het bestand gebruiken om de opgenomen gebeurtenis opnieuw uit te voeren.
Deze methode om programma's voor onze robot te ontwikkelen heeft verschillende voordelen:
- Het stelt ons in staat om nauwkeurige autonome programma's te maken. Omdat we de software in realtime maken terwijl we het evenement ondergaan, zullen de sensorwaarden die worden verzameld en gebruikt zeer nauwkeurig zijn, omdat ze rechtstreeks afkomstig zijn van het oorspronkelijke evenement.
- Het stelt ons in staat om snel autonome programma's te maken. Het maken van autonome programma's is net zo eenvoudig als het opnemen van een reeks gebeurtenissen en het zo nodig aanpassen van de gebeurtenis.
- Het stelt ons in staat om automatische processen voor tele-op te creëren. Voor herhaalde acties in tele-op stelt gebeurtenisgestuurde programmering ons in staat om deze acties op te nemen en de gebeurtenis aan een knop toe te wijzen tijdens de door de bestuurder bestuurde perioden van wedstrijden. Deze geautomatiseerde gebeurtenissen kunnen worden beïnvloed door sensoren om een nauwkeurige uitvoering mogelijk te maken.
Stap 2: Logische stroom van gebeurtenisgestuurde programmering
Het volgende geeft de logische stroom weer van een evenementgestuurd programma: rood geeft de creatie van een evenement weer, en blauw geeft het aanroepen van het evenement weer. Voor het maken van een gebeurtenis wordt een reeks invoer via robotactie opgenomen en als gebeurtenissen geregistreerd; deze gebeurtenissen worden naar een bestand geschreven. Voor het oproepen van een gebeurtenis wordt dat bestand gelezen en de invoer wordt naar een gebeurtenisprocessor gestuurd om de bestandscode om te zetten in robotactie.
Stap 3: Evenementmaker
Makers van evenementen worden gebruikt om acties of 'evenementen' te documenteren op basis van verschillende sensoren en knoppen. Terwijl de robot acties uitvoert op het veld, maakt een klasse voor het maken van evenementen parallel evenementen voor elk van die acties, waarbij wordt verwezen naar de gebeurtenis die is geclassificeerd in een gebeurtenisklasse. Nadat het evenement is gemaakt, wordt het in een wachtrij van evenementen in de evenementenklasse geplaatst: het eerste evenement neemt de eerste plaats in, dan neemt het tweede evenement de eerste plaats in en duwt alle evenementen eronder naar beneden, en dit gaat door totdat het programma stopt. Wanneer het programma wordt gestopt, gaan de gebeurtenissen naar een door mensen leesbaar formaatbestand, zoals een JSON-bestand. Dit bestand kan worden gebruikt om autonome routines beter te verbeteren.
De bovenstaande voorbeeldcode stelt de parameters in voor de gebeurtenis, in dit geval een bocht met een IMU-sensor. Vervolgens zetten we het evenement in de wachtrij voor het evenement. Ten slotte kappen we de gebeurtenis af, die in wezen de gebeurtenis opnieuw instelt, zodat we deze kunnen gebruiken om toekomstige gebeurtenissen in de wachtrij te plaatsen.
Stap 4: Gebeurtenisverwerker
Gebeurtenisklassen nemen het door mensen leesbare bestand dat is geproduceerd in de klasse voor het maken van gebeurtenissen en doet wat elke gebeurtenis in de wachtrij zegt te doen door methoden aan te roepen die zijn beschreven in een gebeurtenisprocessorklasse. De gebeurtenisprocessorklasse vertelt de robot vervolgens welke gebeurtenis opnieuw moet worden afgespeeld. Of het nu een eenvoudig "vooruitrijden"-evenement is of een complex evenement vol afstanden, bochten en strafschoppen, de processor speelt elke gebeurtenis opnieuw af. Dit proces is erg handig tijdens autonoom rijden, omdat een team sensoren en Tele-Op-acties kan opnemen voordat ze overeenkomen en de gebeurtenissen vervolgens eenvoudig autonoom kunnen herhalen. Dit proces wordt Memory Replay genoemd. Hierdoor kan een autonoom programma 100% configureerbaar zijn via een enkel bestand. Zodra de maker en verwerker van het evenement is vastgesteld, kan een team eenvoudig autonome routines wijzigen via het voor mensen leesbare bestand.
Het bovenstaande voorbeeld begint met het controleren van het JSON-bestand op een gebeurtenis en vervolgens die gebeurtenis te controleren met behulp van een case-statement om te zien wat voor soort gebeurtenis het is, in dit geval een beurt met behulp van een IMU-sensor. Zodra het kan zien dat het een beurt is met behulp van de IMU-gebeurtenis, behandelt het vervolgens de verwerking van de gebeurtenis, wat meestal inhoudt dat de code wordt uitgevoerd waar de gebeurtenis vandaan kwam met behulp van variabelen van de gebeurtenis, doorgegeven om de gebeurtenis te repliceren die eerder werd gedaan.
Aanbevolen:
Z80-MBC2 Programmeren van de Atmega32a: 6 stappen
Z80-MBC2 De Atmega32a programmeren: Voordat u de z80-MBC2 kunt gebruiken, moet u na het bouwen de Atmeg32 programmeren. Deze instructie laat zien hoe je een goedkope arduino mini als programmeur gebruikt om de code te uploaden
Een ATtiny programmeren met Arduino: 7 stappen (met afbeeldingen)
Programmeer een ATtiny met Arduino: Hieronder volgen aanwijzingen voor het programmeren van de ATtiny-microcontrollers met behulp van de Arduino IDE. In gewoon Engels is dit hoe u 8-pins Atmel-chips programmeert zoals u normaal een Arduino zou doen. Dit is cool omdat de ATtiny klein is, en - nou ja - dit maakt het mogelijk
CSR Bluetooth-module programmeren: 7 stappen
CSR Bluetooth-moduleprogrammering: ik heb onlangs een paar Bluetooth-luidsprekers gemaakt (links hieronder) en hoewel ze geweldig zijn om naar te kijken en fantastisch om naar te luisteren, maar de "Naam" die op mijn telefoon (of Bluetooth-streamingapparaat) verschijnt, is ofwel: 1) Iets saais als "CS
AT89S52 PROGRAMMEREN MET ARDUINO: 4 stappen
AT89S52 PROGRAMMEREN MET ARDUINO: In-System Programming (ISP) oftewel In-Circuit Serial Programming (ICSP) is de mogelijkheid om sommige programmeerbare logische apparaten, microcontrollers en andere embedded apparaten te programmeren terwijl ze in een compleet systeem zijn geïnstalleerd, in plaats van dat de chi
Oled-display programmeren: 5 stappen
Oled-displayprogrammering: Oled is het eenvoudigste en meest effectieve display. Je kunt wearables maken of elk soort bewakingsapparaat. met OLED kun je het weerstation maken of grappige animaties laten zien. Ik zoek veel doe-het-zelfartikelen op OLED-scherm, er is geen goede exp