Spisu treści:
- Krok 1:
- Krok 2: Utwórz nowy projekt robota
- Krok 3: Utwórz/wypełnij RobotMap
- Krok 4: Usuń przykładowe polecenie i przykładowy podsystem
- Krok 5: Utwórz podsystem DriveTrain
- Krok 6: Utwórz polecenie DriveTrainCommand
- Krok 7: Przejdź do robota
- Krok 8: Wróć do DriveTrainCommand
- Krok 9: Przejdź do DriveTrainSub
- Krok 10: Następnie utworzymy kod OI
- Krok 11: Przejdź do DriveTrainCommand
- Krok 12: Na koniec skompiluj i prześlij kod do robota
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
To jest samouczek, jak zrobić prosty układ napędowy dla robota FRC. Ten samouczek zakłada, że znasz podstawy java, eclipse i masz już zainstalowane wpilib, a także biblioteki CTRE.
Krok 1:
Otwórz zaćmienie
Krok 2: Utwórz nowy projekt robota
- Kliknij prawym przyciskiem myszy eksplorator pakietów, kliknij nowy, a następnie inny.
- Przewiń w dół, aż zobaczysz WPILIb Robot Java Development (jeśli go nie widzisz, nie masz zainstalowanych zasobów wpilib).
- Kliknij Projekt Robot Java
- Następnie wpisz nazwę projektu i kliknij typ projektu robota opartego na komendach. (Pakiet powinien być już wypełniony i tak samo ze światem symulacji.)
Krok 3: Utwórz/wypełnij RobotMap
Utwórz końcowe zmienne, które zawierają liczbę różnych portów talonu
Krok 4: Usuń przykładowe polecenie i przykładowy podsystem
Krok 5: Utwórz podsystem DriveTrain
- Utwórz nowego konstruktora w nowo utworzonym podsystemie napędowym. Następnie utwórz obiekty CANTalon, które odpowiadają szponom w układzie napędowym.
- Utwórz RobotDrive o nazwie Drive
- Utwórz wystąpienie tych obiektów w konstruktorze (upewnij się, że używasz wartości dla szponów, które utworzyliśmy na mapie robota). Do napędu robota użyjemy konstruktora, który wykorzystuje 4 sterowniki silnika (RobotDrive(SpeedController frontLeftMotor, SpeedController rearLeftMotor, SpeedController frontRightMotor, SpeedController rearRightMotor))
- Następnie utwórz metodę arcadeDrive() z dwiema zmiennymi wejściowymi: x to przód i tył, a y to prawa i lewo. Wewnątrz wywołasz drive.arcade z wartościami forward i rotate
- Następnie zmień initDefaultCommand() tak, aby zawierała wiersz setDefaultCommand(new DriveTrainCommand());.
- Nie martw się jeszcze o wszystkie błędy.
Krok 6: Utwórz polecenie DriveTrainCommand
- Najpierw zacznij od przejścia do menu, którego użyliśmy do stworzenia podsystemu, a robot sam się projektuje (jest to ostatni raz, kiedy pokażę ten rzeczywisty krok w przyszłych krokach, powiem tylko, aby wykonać polecenie lub wykonać podsystem i założysz, że jest w tym menu.) Kliknij polecenie i wpisz nazwę klasy za pomocą DriveTrainCommand (jeśli zmienisz nazwy tych plików, nie możesz mieć ich identycznych).
- W nowym DriveTrainCommand zobaczysz, że istnieje 6 metod, jedna to konstruktor, a pozostałe 5 to części kodu, które robot wywoła, gdy polecenie zostanie uruchomione. Wiemy, co robi konstruktor, więc wyjaśnijmy Initialize, execute, isFinished, end i interrupted. Initialize jest wywoływana raz przy każdym wywołaniu polecenia, metoda execute jest wywoływana w sposób ciągły aż do zakończenia polecenia, co jest spowodowane przez zakończenie, gdy metoda isFinished zwróci true polecenie przestanie działać, Metoda end jest wywoływana raz po isFinished wywoływana jest metoda, a przerwana jest wywoływana, gdy zasoby poleceń są używane przez inne polecenie i polecenie zostanie zakończone (bez wywoływania metody end).
- Najpierw w DriveTrainCommand w konstruktorze musisz dodać wymaganą linię (requires(Robot. DriveTrainSub)) zauważ, że DriveTrainSub to nie to samo co nazwa podsystemu i jest to celowe.
Krok 7: Przejdź do robota
- Następnie przejdziemy do klasy Robot
- następnie zmienimy linię (publiczny statyczny końcowy PrzykładPodsystemuPrzykładowyPodsystem = newPrzykładowyPodsystem();) na (publiczny statyczny końcowy PodsystemNapędowyDriveTrainSub = nowyPodsystemNapędowy();) zauważ, że imię po zakończeniu jest takie samo jak nazwa podsystemu i nazwa po nowej zauważ, że DriveTrainSub jest taka sama jak nazwa, którą umieściliśmy w naszym ostatnim kroku i że nie jest taka sama jak nazwa podsystemu (MUSISZ mieć nazwę obiektu (DriveTrainSub), która nie jest taka sama jak podsystem Nazwa).
- Następnie zaimportuj nasz DriveTrainSubSystem.
- Następnie usuniemy wiersz(chooser.addDefault("Default Auto", nowy ExampleCommand());)
- Następnie usuń nieużywane importy.
- Następnie zapisz.
Krok 8: Wróć do DriveTrainCommand
- importuj Robota (drugi na obrazku)
- Następnie Zapisz
Krok 9: Przejdź do DriveTrainSub
- Importuj polecenie DriveTrain
- Następnie zapisz.
Krok 10: Następnie utworzymy kod OI
- Przejdź do OI.
- Utwórz nowy publiczny obiekt joysticka z portem 0.
- I usuń niewykorzystane importy.
- Zapisać.
Krok 11: Przejdź do DriveTrainCommand
- Przejdź do polecenia DriveTrain.
- Teraz zrobimy część, która bierze joysticki i używa ich do poruszania robotem. Wewnątrz execute (ponieważ działa on stale) dodaj linię (Robot. DriveTrainSub.arcadeDrive(Robot.oi. Driver.getRawAxis(1), Robot.oi. Driver.getRawAxis(4));) gdzie nazywamy arcadeDrive w naszym podsystem z wartościami Robot.io. Driver.getRawAxis(1), który zwraca wartość joysticka i gdzie 1 jest osią lewej osi y i to samo dla drugiej wartości, z wyjątkiem 4 to prawa oś x. więc oznaczałoby to, że lewy drążek poruszałby się do przodu i do tyłu, a prawy drążek poruszałby się w prawo i w lewo. (jeśli chcesz, możesz wrócić do RobotMap i utworzyć nowe wartości dla osi joysticka, a następnie wywołać je za pomocą RobotMap.(nazwa osi) i nie zapomnij, aby były ostateczne, jeśli zrobisz to w ten sposób.)
- Następnie usuń wszelkie nieużywane importy z całego projektu.