Inhoudsopgave:
- Stap 1:
- Stap 2: Maak een nieuw robotproject
- Stap 3: RobotMap maken/invullen
- Stap 4: Verwijder voorbeeldopdracht en voorbeeldsubsysteem
- Stap 5: Maak DriveTrainSubSystem aan
- Stap 6: Maak de DriveTrainCommand
- Stap 7: Spring naar Robot
- Stap 8: Ga terug naar DriveTrainCommand
- Stap 9: Ga naar DriveTrainSub
- Stap 10: Vervolgens maken we de OI-code
- Stap 11: Ga naar DriveTrainCommand
- Stap 12: Tot slot compileren en uploaden van de code naar de robot
Video: Hoe schrijf je een eenvoudige aandrijflijn voor FRC (Java): 12 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
Dit is een tutorial over het maken van een eenvoudige aandrijflijn voor een FRC-robot. Deze tutorial gaat ervan uit dat je de basis van java, eclipse kent en al wpilib hebt geïnstalleerd, evenals CTRE-bibliotheken.
Stap 1:
Eclipse openen
Stap 2: Maak een nieuw robotproject
- Klik met de rechtermuisknop op de pakketverkenner, klik op nieuw en vervolgens op anders.
- Scroll naar beneden tot je WPIlib Robot Java Development ziet (als je het niet ziet, heb je de wpilib-bronnen niet geïnstalleerd.)
- Klik op Robot Java-project
- Vul vervolgens de projectnaam in en klik op het opdrachtgebaseerde robotprojecttype. (Pakket moet al zijn ingevuld en hetzelfde met simulatiewereld.)
Stap 3: RobotMap maken/invullen
Maak laatste variabelen die het aantal verschillende talon-poorten bevatten
Stap 4: Verwijder voorbeeldopdracht en voorbeeldsubsysteem
Stap 5: Maak DriveTrainSubSystem aan
- Maak een nieuwe constructor in het nieuw gemaakte subsysteem van de aandrijflijn. Maak vervolgens CANTalon-objecten die overeenkomen met de klauwen op de aandrijflijn.
- Maak een RobotDrive genaamd Drive
- Instantieer deze objecten in de constructor (zorg ervoor dat u de waarden gebruikt voor de klauwen die we in de robotkaart hebben gemaakt). Voor de Robot Drive zullen we de constructor gebruiken die 4 motorcontrollers gebruikt (RobotDrive (SpeedController frontLeftMotor, SpeedController rearLeftMotor, SpeedController frontRightMotor, SpeedController rearRightMotor))
- Maak vervolgens een arcadeDrive()-methode met twee invoervariabelen waarbij x voorwaarts en achterwaarts is en y rechts en links is. Binnenin roep je de drive.arcade aan met de waarden voor vooruit en roteren
- Wijzig vervolgens de initDefaultCommand() zodat deze de regel setDefaultCommand(new DriveTrainCommand()) bevat.
- Maak je nog geen zorgen over alle fouten.
Stap 6: Maak de DriveTrainCommand
- Begin eerst door naar het menu te gaan dat we hebben gebruikt om het subsysteem en het robotproject zelf te maken (dit is de laatste keer dat ik deze daadwerkelijke stap zal laten zien in de toekomstige stappen die ik zal zeggen alleen om een commando te geven of om een subsysteem en je gaat ervan uit dat het in dit menu staat.) Klik op commando en vul de klassenaam in met DriveTrainCommand (als je de namen van deze bestanden verandert, kunnen ze niet hetzelfde zijn).
- In het nieuwe DriveTrainCommand zul je zien dat er 6 methoden zijn, de ene is de constructor en de andere 5 zijn delen van de code die de robot zal aanroepen wanneer de opdracht wordt uitgevoerd. We weten wat de constructor doet, dus laten we uitleggen Initialize, execute, isFinished, end en interrupted. Initialize wordt één keer aangeroepen elke keer dat de opdracht wordt aangeroepen, de methode execute wordt continu aangeroepen totdat de opdracht eindigt, wat wordt veroorzaakt doordat de is voltooid wanneer de isFinished-methode true retourneert de opdracht stopt met uitvoeren. De end-methode wordt één keer aangeroepen nadat de isFinished is voltooid methode wordt aangeroepen en de interrupted wordt aangeroepen wanneer de opdrachtbronnen worden gebruikt door een andere opdracht en de opdracht zal eindigen (zonder de end-methode aan te roepen).
- Eerst in de DriveTrainCommand in de constructor moet je de regel (requires(Robot. DriveTrainSub)) toevoegen. Merk op dat de DriveTrainSub niet hetzelfde is als de naam van het subsysteem en dat is expres.
Stap 7: Spring naar Robot
- Vervolgens gaan we naar de Robot Class
- dan gaan we de regel wijzigen (openbare statische finale VoorbeeldSubsystem voorbeeldSubsystem = nieuw VoorbeeldSubsystem();) naar (openbare statische finale DriveTrainSubsystem DriveTrainSub = new DriveTrainSubsystem();) merk op dat de eerste naam na final hetzelfde is als de naam van het subsysteem en de naam na nieuw merk ook op dat de DriveTrainSub hetzelfde is als de naam die we in onze laatste stap hebben ingevoerd en dat het niet hetzelfde is als de naam van het subsysteem (U MOET een objectnaam hebben (DriveTrainSub) die niet hetzelfde is als het subsysteem naam).
- Importeer dan ons DriveTrainSubSystem.
- Vervolgens zullen we de regel verwijderen (chooser.addDefault("Default Auto", new VoorbeeldCommand());)
- Verwijder vervolgens de ongebruikte importen.
- Sla dan op.
Stap 8: Ga terug naar DriveTrainCommand
- import Robot (de tweede in de afbeelding)
- Dan Opslaan
Stap 9: Ga naar DriveTrainSub
- DriveTrainCommand importeren
- Sla dan op.
Stap 10: Vervolgens maken we de OI-code
- Ga naar OI.
- Maak een nieuw openbaar joystick-object met poort 0.
- En verwijder de ongebruikte invoer.
- Opslaan.
Stap 11: Ga naar DriveTrainCommand
- Ga naar DriveTrainCommand.
- Nu zullen we het deel doen dat de joysticks neemt en ze toepassen om de robot te verplaatsen. Voeg binnen de execute(omdat het constant draait) de regel toe (Robot. DriveTrainSub.arcadeDrive(Robot.oi. Driver.getRawAxis(1), Robot.oi. Driver.getRawAxis(4));) waar we de arcadeDrive noemen in onze subsysteem met de waarden van Robot.io. Driver.getRawAxis(1) die de waarde van de joystick retourneert en waarbij 1 de as van de linker y-as is en hetzelfde voor de tweede waarde, behalve dat 4 de rechter x-as is. dus dit zou betekenen dat de linker joystick naar voren en naar achteren zou gaan en de rechter joystick naar rechts en links. (als je wilde, zou je terug kunnen gaan naar de RobotMap en nieuwe waarden voor de joystick-as maken en ze vervolgens aanroepen met RobotMap. (naam van de as) en vergeet niet om ze definitief te maken als je het op deze manier doet.)
- Verwijder vervolgens alle ongebruikte importen uit het hele project.
Stap 12: Tot slot compileren en uploaden van de code naar de robot
Aanbevolen:
2019 FRC Een eenvoudige aandrijflijn schrijven (Java): 5 stappen
2019 FRC Een eenvoudige aandrijflijn schrijven (Java): DIT INSTRUCTABLE IS VEROUDERD! Houd mijn volgende instructable in de gaten voor de huidige programmering van 2019. Hoewel het verouderd is, zijn er nog steeds dingen die je erover kunt leren, zoals hoe je de klassen daadwerkelijk maakt en de code schrijft
Hoe maak je een eenvoudige Spiderbot voor Halloween: 4 stappen (met afbeeldingen)
Hoe maak je een eenvoudige Spiderbot voor Halloween: Dit is een eenvoudige, leuke bristlebot voor Halloween! Bristlebots zijn geweldige startersprojecten voor mensen die de basis van circuits en robotconstructie leren. De kop van een tandenborstel gebruiken voor het lichaam, een kleine motor voor de beweging en een batterij
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
Hoe schrijf je een brute kracht voor getallen (Visual BASIC 2008 Express): 5 stappen
Hoe schrijf je een brute kracht voor getallen (Visual BASIC 2008 Express): In deze Instructable laat ik je zien hoe je een zogenaamde "Brute Force" in Visual BASIC 2008 Express die u hier kunt downloaden --> http://www.microsoft.com/eXPress/download/A force brute is een "krakende" programma dat kra
Hoe maak je een eenvoudige iPhone-wekkerstandaard 5 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een eenvoudige iPhone-wekkerstandaard maken: dit is een platte standaard uit één stuk die u kunt gebruiken met uw iPhone wanneer deze wordt opgeladen via de kabel. Voor mij betekent het dat ik hem als wekker naast mijn bed kan gebruiken terwijl ik hem kan zien. Het is ook een ontwerp uit één stuk, dus het is heel gemakkelijk te maken. Ik kreeg het idee van