Para que o nosso robô possa executar o código, utilizamos um tipo de estrutura de programação que nos é dada. Esta estrutura é chamada Programação Baseada em Comandos. Quando tiver o código no seu portátil, verá algo que se parece com a fotografia abaixo. Este documento só olhará para os ficheiros no quadrado vermelho.
Na programação baseada em comandos, existem dois tipos principais de classes: subsistemas e comandos. Existem também diferentes tipos de ficheiros como Robot.java, RobotContainer.java, e OI.java.
Subsistemas e Comandos
Os subsistemas definem as capacidades de cada mecanismo no robô. Pode-se pensar nisto como diferentes partes físicas do robô. Alguns exemplos são um trepador, e um atirador de bolas
Os comandos são o funcionamento do robô, utilizando as capacidades que se encontram nos subsistemas. Pode-se pensar nisto como dando acções ou comandos às diferentes partes do robô. Por exemplo, se o código do seu robô tiver um subsistema para uma "intake", o programa teria um comando para receber as bolas chamado "intakeIn.java" e isto fará girar um motor para receber as bolas.
Como funcionam os subsistemas
Os subsistemas têm métodos onde se pode declarar o hardware, como um motor, que será utilizado pelos comandos. Estes métodos são então utilizados para controlar diferentes mecanismos no robô.
Se o robô tiver um braço de admissão, o braço de admissão terá de fazer 2 coisas. Tem de se mover para cima e para baixo. Para que isto aconteça, é necessário acrescentar dois métodos. O primeiro método será chamado de métodos de "public void armUp()". Dentro deste método, terá de configurar o seu motor para se mover para cima. O segundo método será chamado de "public void armDown()". Dentro deste método, irá configurar o seu motor para se mover para baixo.
Pode ver como isto se parece, olhando para o código da equipa.
Como funcionam os Comandos
Os comandos utilizam muitos métodos para definir a ação de um robô. Quando um programador cria um comando ou olha para o comando de exemplo dado, verá que existem cerca de 4 métodos. São eles:
initialized(): Isto é chamado antes da execução do comando pela primeira vez.
execute(): O código que tem as operações para completar uma tarefa vai aqui. É basicamente para onde vai a lógica.
isFinished(): Isto diz se a acção é ou não realizada. Após a execução do código em "execute()", vai para o método "isFinished()" para ver se a acção está concluída. O método "isFinished()" retorna verdadeiro quando terminado e falso quando não terminado. Se a acção é concluída e "isFinished()" retorna verdadeiro, move-se para "end()". Se a acção não for concluída, continua até que ""isFinished()" retorne verdadeiro, o que significa que está concluída.
end(): Este método tem o código para o que o robô deve fazer quando "isFinished()" é feito. Este método também é chamado quando o comando é interrompido.
OI, Constants, RobotContainer, and Robot
Na programação baseada em comandos, são-lhe dados 3 ficheiros diferentes que estão fora do subsistema e pastas de comandos. Estes 3 ficheiros são:
RobotContainer.java
Constants.java
Robot.java
Main.java
Há um quarto ficheiro que acrescentamos chamado OI. Este ficheiro não é adicionado com a estrutura, adicionamos este ficheiro para código de joystick.
RobotContainer.java
É aqui que muito do código do robô é declarado. Os subsistemas e comandos do robô são definidos em RobotContainer.java, juntamente com dispositivos OI, e comandos, e botões de mapeamento para comandos.
Constants.java
"Constants" estabelece o mapeamento de portas de dispositivos e é um bom local para declarar variáveis constantes. A equipa utiliza-o para a cablagem física do robô. Utilizamos o ficheiro Constantes para configurar controladores de motor e botões no painel de controlo.
Robot.java
Robot.java executa o controlo de quando os comandos são executados e funcionará sempre em primeiro lugar. Também armazena a informação dos Subsistemas e no OI. Também cria o robô para cada parte do jogo (Autónomo, e Teleop) assim como Habilitar, Desabilitar, e Testar.
Main.java
Main.java deve ser deixado em paz e nenhuma edição deve ser feita a ele. Quaisquer alterações podem causar a quebra do código do robô.
OI.java
A OI (Operator Interface) é uma classe onde declara e obtém informações de outros dispositivos de interface de operador, tais como joystick, controladores de xbox, e wii comandos remotos.