Do Zero a um Robô Introdução Etapa 1: Construindo seu robô Introdução Uma visão geral do hardware do sistema de controle disponível pode ser encontrada aqui. Introdução ao cabeamento de um robô de FRC Introdução a fiação de robôs na FRC - REV Diagrama cortesia da equipe de FRC® 3161 e Stefen Acepcion Junte os materiais Localiza os itens do sistema de control e ferramentas a seguir: Materiais do Kit Power Distribution Hub (PH) roboRIO Pneumatics Hub (PH) Radio Power Module (RPM) OpenMesh radio (with power cable and Ethernet cable) Robot Signal Light (RSL) 4x SPARK MAX 2x PWM y-cables 120A Circuit breaker 4x 40A Circuit breaker 6 AWG (16) Red wire 10 AWG (6) Red/Black wire 18 AWG (1) Red/Black wire 22 AWG (0.5) Yellow/Green twisted CAN cable 8x Pairs of 10-12 AWG (4 - 6) (Yellow) quick disconnect terminals (16x ring terminals if using integrated wire controllers) 2x Anderson SB50 battery connectors 6 AWG (16) Terminal lugs 12V Battery Red/Black Electrical tape Dual Lock material or fasteners Zip ties 1/4» or 1/2» (6-12 mm) plywood Etapa 2: Instalando os programas Preparação de instalação offline Esta página contém instruções/links para componentes que você vai precisar se você quiser instalar um programa do FRC® Control System software de forma offline. Este documento reúne todos os links de download para facilitar a instalação em computadores offlines ou em múltiplos computadores. Se você estiver instalando em um único computador que está conectado a internet, pode passar para a próxima página. A ordem com que essas ferramentas são instaladas não importa para times que usam Java ou C++. LabVIEW deve ser instalado antes da FRC Game Tools ou bibliotecas de terceiros. Documentação Está documentação pode ser baixada para ser vista sem internet. O link para baixar o PDF pode ser encontrado aqui (documentação em inglês) Instaladores Todos times 2024 FRC Game Tools (Nota: Clique no link para «Individual Offline Installers») 2024 FRC Radio Configuration Utility Times que usam LabVIEW LabVIEW USB (da FIRST® Choice) ou instale (Nota: Clique no link para «Individual Offline Installers») Times que usam Java/C++ Instalador Java/C++ WPILib Na página de lançamentos do github suba até o topo. Então na sessão de "assets" clique no binário correto para seu SO para começar a instalação. Bibliotecas de terceiros Um diretório das bibliotecas de terceiros que funcionam com a WPILib pode ser encontrado aqui. Instalando LabVIEW para FRC (Apenas LabVIEW) Está instalação é **apenas** para times que programam em LabVIEW ou utilizam NI Vision Assistant. Times que usam C++ e Java não precisam dessas ferramentas, e devem apenas seguir para instalar as FRC Game Tools. O tempo de instalação irá variar dependendo do computador e da conexão a internet, de toda forma, esse processo envolve uma grande quantidade de arquivos, por isso é esperado no minímo uma hora para completar a instalação. Requisitos Windows 10 ou maior (Windows 10, 11). Windows 11 não é oficialmente suportado pela NI, mas foi testado. Desinstale as versões antigas (recomendado) Se você continua programando em cRIOs você deve manter o *software* de LabVIEW de FRC® 2014. A licença para o FRC 2014 foi extendida. Por enquanto essas versões devem ser capazes de coexistirem em um mesmo computador, isso não é uma configuração que foi extensivamente testada. Antes de instalar uma nova versão do LabVIEW é recomendado remover qualquer versão antiga. A nova versão pode coexistir com a versão anterior, mas foram apenas testadas no FRC de 2023. Tenha certeza de salvar qualquer código do time alocado no diretório «User\LabVIEW Data» antes de desinstalar. Then click Start >> Add or Remove Programs. Locate the entry labeled «NI Software», and select Uninstall. Selecione os componentes para desinstalar Na caixa de dialógo que aparecer, selecione tudo. O meio mais fácil para fazer isso é desmarcar a caixa «Products Only» e selecionar a caixa a esquerda de «Name». Clique Remove. Espere a desinstalação e reinicie quando pronto. Essas instruções assumem que nenhum outro software da NI está instalado. Se tiver é necessário desmarcar para que ele não seja desinstalado. Instalador LabVIEW Localize e insira o LabVIEW USB Drive ou baixe o instalador do LabVIEW for FRC 2023 da NI. Certifique-se de selecionar a versão correta no menu suspenso. Se você quiser instalar em outras máquinas offline, não clique no botão de Download, clique em Individual Offline Instalers e então clique em Download para baixar o instalador completo. Esse é um grande arquivo (~9GB). Por isso é recomendado utilizar uma rápida conexão com a internet e usar o instalador da NI para permitir que a instalação possa ser resumida caso seja interrompida. Instalando o LabVIEW NI LabVIEW precisa de uma licença. A licença de cada temporada permanece ativa até 31 de Janeiro do ano seguinte (exemplo, a licença de 2020 expira em 31 de Janeiro de 2021) É permitiro que os times instalem o programa em quantos computadores precisarem, apenas sujeitos as restrições e aos termos de licença que da companhia que faz o programa, e desdque os membros ou os mentores da equipe o usem, e somente para FRC. LabVIEW é somente controlado pelos termos da licença que é mostrado durante a instalação. Iniciando a instalação Instalador Online Execute o arquivo exe para iniciar o processo de instalação. Instalador offline Clique botão direito e aperte em Mount. Licença do Gerenciador de pacotes NI Se você ver essa tela, clique em Next. Desative o inicio rápido do windows Se você ver essa tela, clique em Next. Recapitulação - Gerenciador de pacotes NI Se você ver essa tela, clique em Next. Instalação do Gerenciador de pacotes NI O processo de instalação do NI Package Manager será mostrado nessa tela. Lista de produtos Clique em Next. Pacotes adicionais Clique em Next. Termos da licença Cheque I accept... e clique em Next. Cheque I accept... e clique em Next. Informação do produto Clique em Next. Inicie a instalação Clique em Next. Progresso Geral O progresso geral da instalação será mostrado na tela. Serviço de atualização NI Irá aparecer uma tela para habilitar o serviço de atualização da NI. Você pode escolher para não habilitar. Não é recomendado instalar essas atualizações sem ser diretamente pela FRC, ou dos canais de comunicação (Blog da FRC, *Teams Updates*, *E-mail blasts*) NI Activation Wizard Clique no botão Log in to Activate Entre na sua conta ni.com. Se você não tiver uma, selecione Crate account para criar uma conta de forma gratuita. Na caixa de seleção, selecione Enter a serial number Coloque o número serial em todas as caixas. E depois clique em Activate. Se a ativação do seu produto deu certa, uma mensagem "Activation Successful" vai aparecer. Se o número serial estiver incorreto, irá aparecer uma caixa de texto e você poderá recolocar o número e selecionar Try Again. Os items mostrados acimas não são esperados para ativar. Se toda ativação ocorreu da forma certa, clique em Finish. Reinicie Clique em Reboot Now depois de ter fechado qualquer programa aberto no seu computador. Instalando as FRC Game Tools O FRC® Game Tools contém os seguintes programas: LabVIEW Update FRC Driver Station FRC roboRIO Imaging Tool and Images Os componentes de LabVIEW operados em tempo real para a Driver Stations e Imaging Tool são incluídas neste pacote. Nenhum componente do programa LabVIEW para pacote FRC é necessário para executar a *Driver Stations* ou *Imaging Tool*. Requisitos Windows 10 ou maior (Windows 10, 11). Instale a FRC Game Tools da NI. Se você quiser instalar em outra máquina offline, clique em Individual Offline installers antes de clicar para baixar o instalador completo. Desinstale as versões antigas (Recomendado) Times que usam LabVIEW já completaram essas etapa, então não repita isso. Esses times podem pular para a seção de instalação. Antes de instalar a nova versão da FRC Game Tools é recomendado remover as versões antigas. A nova versão vai coexistir com a antiga (nota que a DS vai sobrescrever a versão antiga), mas isso foi testado com as ferramentas FRC de 2022 apenas. Então click Start >> Add or Remove Programs. Encontre o software com o nome de “NI Software”, and select Uninstall. É apenas necessário desinstalar as versões anteriores quando instalar uma versão de outro ano. Por exemplo, desinstalar a ferramenta de 2021 antes de instalar a de 2022. Mas não é necessário desinstalar uma ferramenta antes de *atualizar* para uma nova versão das ferramentas de 2022. Selecione os componentes para desinstalar Na caixa de dialógo que aparecer, selecione todas entidades. O meio mais fácil de fazer isso é não selecionar a caixa individual do produto e selecionar a caixa a esquerda de Name. Então clique em Remove. Espere o desinstalador completar e então reinicie quando pedir. Instalação O instalador do Game Tools pode solicitar que o .NET Framework 4.6.2 precise ser atualizado ou instalado. Siga as instruções na tela para concluir a instalação, incluindo a reinicialização, se solicitado. Em seguida, retome a instalação do FRC Game Tools, reiniciando o instalador se necessário. Extração Instalador Online Execute o arquivo exe para iniciar o processo de instalação. Instalador offline Clique botão direito e aperte em Mount. Licença do Gerenciador de pacotes NI Se você ver essa tela, aceite os termos e clique Next. Essa tela confirma que você concorda com os termos do NI Package Manager Desative o inicio rápido do windows [![additional-software.webp] É recomendado deixar essa tela do jeiro que está, o início rápido do windows pode ocasionar problemas com os drivers da NI necessários para configurar o roboRIO. Portanto, vá em frente e clique Next. Recapitulação do Gerenciador de pacotes NI Se você ver essa tela clique em Next. Instalação do Gerenciador de pacotes NI O progresso da instalação do NI Package Manager será mostrado nessa tela. Programas adicionais Se você ver essa tela, clique em Next. Termos de licença Selecione I accept... e clique em Next. Selecione I accept... e clique em Next. Sumário de recapitualação Clique em Next Progresso Essa tela mostra o processo de instalação, vá em frente e aperte em Next quando estiver finalizado*. NI Activation Wizard Entre na sua conta ni.com (link). Se você não tiver uma, selecione Create account para criar uma conta de forma gratuita. Coloque o número serial e clique em Activate Se este é o primeiro momento ativando o programa desse ano nessa conta, você vai ver uma mensagem, mostrada acima, sobre uma licença que não foi encontrada. Você pode ignorar isso. Se a ativação do seu produto foi bem sucedida, uma mensagem escrita "Activation Successful!" vai aparecer. Se o número serial estiver errada, irá aparecer uma caixa de texto e você poderá recolocar o número e selecionar Try Again. Clique em Close. Serviço de atualização NI Vai aparecer uma caixa de dialógo perguntando se você quer ativar o NI update service. Você pode escolher não habilitar esse serviço. Não é recomendado instalar essas atualizações sem ser diretamente pela FRC, ou dos canais de comunicação (Blog da FRC, *Teams Updates*, *E-mail blasts*) Reinicie para completar a instalação Selecione Reboot Now depois de fechar qualquer outro programa aberto no seu computador. Guia de instalação WPILib Esse guia é para times que usam Java ou C++. Times que usam LabVIEW podem pular para Instalando LabVIEW para FRC (Apenas LabVIEW). Ademais, o seguinte tutorial foi feito em Windows 10, mas as etapas são idênticas para todos os sistemas operacionais. Nota-se que diferentes SO serão mostrados (não tenho certeza dessa parte). Pré-requisitos Sistemas Operacionais suportados: Windows 10 & 11, 64 bit apenas. 32 bit e Arm não são suportados Ubuntu 22.04, 64 bit. Outra distribuição Linux como glibc >= 2.34 pode funcionar, mas não é suportado macOS 11 ou maior, ambos Intel e Arm. Para 2024, macOS 12 ou maior será necessário para C++ Os seguintes sistemas operacionais não são mais suportados: macOS 10.15, Ubuntu 18.04 e 20.04, Windows 7, Windows 8.1, e qualquer 32-bit Windows. WPILib é designada para ser instalada em diferentes pastas dependendo do ano, por isso não é necessário desinstalar uma versão anterior antes de instalar a desse ano. Instalando Para obter a versão mais recente da biblioteca WPI, utilize o botão abaixo: Baixe WPI Não esqueça de verificar as instruções de instalação na página de lançamentos do github! Caso a versão for uma beta, apenas instale caso saiba o quê está fazendo /br> Uma vez na página de lançamentos do GitHub, suba até a seção de lançamentos no topo da página. Então clique no arquivo correto para seu sistema operacional para começar a instalação. Extraindo o instalador Quando você baixar o instalador da WPILib, é distruibuído como um arquivo .iso para windows, .tar.gz para Linux e como um DMG para MacOS. Executando o instalador Abrindo o instalador, irá aparecer uma tela como a abaixo. Vá em frente e aperte Start. Essa tela incluí uma lista de opções possíveis para a instalação da WPILib. Tools Only apenas instala as ferramentas da WPILib (Pathweaver, shuffleboard, RobotBuilder, SysID, Glass, e OutlineViewer), assim como a JDK Everything instala o ambiente de desenvolvimento completo (VS Code, extensões, todas depêndencias) Você terá dois botões, Install for this User e Install for all Users. A opção de apenas um usuário instala apenas na conta atual, e não precisa de privilégio de administrador. Entretanto, instalar para todos os usuários, instala para todas as contas do sistema e irá solicitar privilégio de administrador. Instalar para todos os usuários não é uma opção para macOS e Linux. Se você selecionar para instalar em todos usuários, o windows vai socilitar privilégio de administrador durante a instalação. Selecione a opção que é mais apropriada para você, depois irá aparecer a seguinte tela. This next screen involves downloading VS Code. Unfortunately, due to licensing reasons, VS Code can not be bundled with the installer. Baixar para esse computador apenas (canto superior esquerdo) Isso instala apenas o VS Code para a plataforma atual, esse é a instalação mais leve. Pula essa etapa e não usa o VS Code (canto superior direito) Pula a instalação do VS Code. Útil para instalação avançadas ou configurações gerais, não é recomendado Selecione uma pasta .zip de VS Code para instalção offline nesse computador Selecionando essa opção vai aparecer uma tela permitindo que você escolha um arquivo zip de VS Code existente, que foi instalada previamente. Essa opção não permite que você selecione uma cópia do VS Code já instalada na sua máquina. Criar o arquivo zip do VS Code e compartilhar com outros computador/SO para instalação offline Essa opção baixa e salva uma cópia do VS Code para todas plataformas, isso é útil para compartilhar uma cópia do instalador. Go ahead and select Download for this computer only. This will begin the download process and can take a bit depending on internet connectivity (it’s ~100MB). Once the download is done, select Next. You should be presented with a screen that looks similar to the one below. Vá em frente e selecione Download for this computer only. Isso vai começar o processo de instalação e pode demorar um pouco dependendo da conexão com a internet (~100MB). Uma vez que a instalação esteja concluída, selecione Next. Você deve ser apresentado a uma tela que parece similar a mostrada abaixo. Depois que a instalação for completa irá aparecer uma tela de encerramento. WPIlib instala uma versão separada do VS Code. Ele não usa uma versão já existente para instalação. Cada ano tem sua própria cópia das ferramentas daquele ano. IE: WPILib VS Code 2022. Por favor, inicie o WPILib VS Code e não uma cópia instalada no sistema! Parabéns, o ambiente de desenvolvimento WPILib e ferramentas estão agora instalados no seu computador! Pressione Finish para sair do instalador. O que esta instalado? O instalador offline estabelece os seguintes componentes: Visual Studio Code - A IDE suportada para 2019 ou códigos de robôs posteriores. O instalador offline define uma cópia separada do VS Code para o desenvolvimento da WPILib, se você já tiver instalado o VS Code na sua máquina. Isso é feito por causa de algumas configurações que fazem o WPILib funcionar podem interromper o fluxo de trabalho se você utiliza VS Code para outros projetos. Compilador C++ - As ferramentas para construir códigos C++ no roboRIO Gradle - A versão específica do Gradle usada para construir/implantar código de robô C++ ou Java Uma versão específica do Java JDK/JRE que é usada para implementar o código do robÔ e para executar qualquer ferramenta baseada em Java (Dashboards, outros.). Isso existe lado a lado com qualquer instalação de JSK existente e não sobrescreve a variável JAVA_HOME. WPILib Tools - SmartDashboard, Shuffleboard, RobotBuilder, Outline Viewer, Pathweaver, Glass, SysID WPILib Dependencies - OpenCV, outros. VS Code Extensions - Extensões da WPILib para desenvolvimento do código do robô no VS Code. Desinstalação WPILib é instalada em diferentes pastas em anos distintos, por isso não é necessário desinstalar a versão anterior antes de instalar a mais recente. Mas de toda forma, as instruções seguintes podem ser usadas para desinstalar a WPILib caso desejado. Solução de problemas No caso do instalador falhar, por vaor abra uma issue no repositório do instalador. O endereço está disponível aqui (link). O instalador deve fornecer uma mensagem informando a causa do erro, por favor, inclua isso na descrição da sua issue. Próximas etapas Parabéns! Você completou a etapa 2 e deve ser capaz de ter um ambiente de desenvolvimento funcionando! A etapa 3 para esse tutorial aborda a atualização de hardare para que você possa programa-lo, enquanto a etapa 4 mostra a programação de um robô no VS Code IDE. Para mais informações, você pode ler a seção sobre VS Code para se familiarizar mais com a IDE. Artigos específicos que a leitura é recomendada: O básico sobre Visual Studio Code Comandos WPILib no Visual Studio Code Criando um programa de robô Construindo e implementando o código do robô Instalando bibliotecas de terceiros Adicionalmente, você pode ter que fazer configurações extras para o robô da sua equipe. Por favor, utilize a ferramenta de pesquisa para achar a documentação necessária. É importante que os times usando controladores de motor CAN de terceiros leiam o artigo Instalando bibliotecas de terceiros, pois esses dispositivos precisam de etapas extras de configuração. Etapa 3: Preparando seu robô Preparando seu robô Configurando seu roboRIO 2 Configurando seu roboRIO 1 Programando seu rádio Etapa 4: Programando seu robô Criando seu programa de teste para tração (LabVIEW) Esse documento aborda como criar, construir e carregar uma programação básica de FRC® LabVIEW para uma tração no roboRIO. Antes de começar, tenha certeza que você instalou o LabVIEW para FR, as FRC Game Tools e que você configurou seu roboRIO como descrito no tutorial Do zero ao robô. Criando um projeto Inicie o LabVIEW e clique no FRC roboRIO Robot Project para abrir a caixa de dialógo Create New FRC Robot Project. Configurando o projeto Preencha a caixa de dialógo Crate New FRC Robot Project Escolha um nome para seu projeto Selecione uma pasta para colocar o projeto Coloque o número do seu time Selecione um tipo de projeto. Se não tiver certeza, selecione Arcade Drive Clique em Finish Executando o programa Nota-se que o programa executado dessa maneira não estara no roboRIO depois de um ciclo de ligação. Para implementar um programa para executar toda vez que o roboRIO inícia, siga a próxima etapa, implementando o programa. Na janela de explorador de projeto, clique duas vezes em Robot Main.vi para abrir o Robot Main.VI Clique no botão de Run (Flecha branca na aba superior) do Robot Main.VI para implementar o VI no roboRIO. LaVIEW implementa o VI, todos os items exigidos pelo VI, e as configurações alvo na memória do roboRIO. Se perguntar para salvar qualquer VIs, clique em Save on all prompts. Usando o programa da Driver Stations, coloque o robô no modo teleoperado. Para mais informações na configuração e utilização da Driver Station, veja o artigo FRC Driver Stations Software. Clique em Enable Mova o joystick e observe como o robô responde. Clique no Abort button do Robot Main.VI. Observe que o VI para. Quando você executa um programa utilizando o botão de Run, o programa opera no roboRIO, mas você consegue manipular os objetos no front panel pelo computador em que o programa esta sendo executado. Implementando o programa Para operar na competição, você vai precisar implementar o robô no seu roboRIO. Isso permite que o programa sobreviva a resets do controlador, mas não permite as mesmas ferramentas de depuração (front panel, probes highlight execution) que estão operando no front panel. Para implementar seu programa: No explorador de projetos clique no + perto de Build Specifications para expandi-lo. Botão direito em FRC Robot Boot-up Deployment e selecione Build. Espere pela implementação para terminar. Botão direito novamente em FRC Robot Boot-Up Deployment e selecione Run as Startup. Se você receber um dialógo de conflito, cique em OK. Esse dialógo indica que o programa atual no roboRIO vai ser terminado/substituído. Either check the box to close the deployment window on successful completion ou clique no botão close quando a implementação for um sucesso. O roboRIO vai automáticamente começar operando o código implantado dentro de poucos segundos após a caixa de dialógo fechar. Criando seu programa de teste (C++/Java) Assim que tudo estiver instalado, estamos prontos para criar um programa de robô. O WPILib vem com vários modelos para programas de robô. O uso desses modelos é altamente recomendado para novos usuários; no entanto, usuários avançados têm a liberdade de escrever seu próprio código de robô do zero. Este artigo guia você na criação de um projeto a partir de um dos exemplos fornecidos, que já possui algum código escrito para controlar um robô básico. Este guia inclui exemplos de código que envolvem hardware do fornecedor para a conveniência do usuário. Neste documento, PWM refere-se ao controlador de motor incluído no KOP. A guia CTRE faz referência ao controlador de motor Talon FX (motor Falcon 500), mas o uso é semelhante para TalonSRX e VictorSPX. A guia REV faz referência ao CAN SPARK MAX controlando um motor sem escova, mas é semelhante para motor com escovas. Parte-se do pressuposto de que o usuário já instalou os vendordeps necessários e configurou o(s) dispositivo(s) (atualização de firmware, atribuição de IDs CAN, etc.) de acordo com a documentação do fabricante (CTRE REV). Criando um novo projeto WPILib Abra a paleta de comandos do Visual Studio Code com Ctrl+Shift+P. Em seguida, digite "WPILib" no prompt. Como todos os comandos do WPILib começam com "WPILib", isso mostrará a lista de comandos específicos do WPILib no VS Code. Agora, selecione o comando "Criar um novo projeto". Isso abrirá a "Janela do Criador de Novo Projeto:". Os elementos da "Janela do Criador de Novo Projeto" são explicados abaixo: Tipo de Projeto: O tipo de projeto que desejamos criar. Para este exemplo, selecione "Exemplo". Linguagem: Esta é a linguagem (C++ ou Java) que será usada para este projeto. Base do Projeto: Esta caixa é usada para selecionar a classe base ou exemplo a ser gerado para o projeto. Para este exemplo, selecione "Início Rápido" (Getting Started). Pasta Base: Isso determina a pasta na qual o projeto do robô será localizado. Nome do Projeto: O nome do projeto do robô. Isso também especifica o nome que será dado à pasta do projeto se a caixa "Criar Nova Pasta" estiver marcada. Criar Nova Pasta: Se esta opção estiver marcada, será criada uma nova pasta para armazenar o projeto dentro da pasta especificada anteriormente. Se não estiver marcada, o projeto será localizado diretamente na pasta especificada anteriormente. Um erro será gerado se a pasta não estiver vazia e esta opção não estiver marcada. Número da Equipe: O número da equipe para o projeto, que será usado para os nomes de pacotes dentro do projeto e para localizar o robô ao implantar o código. Habilitar Suporte de Desktop: Ativa os testes de unidade e a simulação. Embora o WPILib suporte isso, bibliotecas de software de terceiros podem não oferecer suporte a isso. Se as bibliotecas não suportarem desktop, seu código pode não compilar ou pode travar. Deve ser deixado desmarcado, a menos que os testes de unidade ou a simulação sejam necessários e todas as bibliotecas o suportem. Para este exemplo, não marque esta caixa. Depois de configurar todos os itens acima, clique em "Gerar Projeto" e o projeto do robô será criado. Quaisquer erros na geração do projeto aparecerão no canto inferior direito da tela. Abrindo o novo projeto Após criar com sucesso o seu projeto, o VS Code dará a opção de abrir o projeto, conforme mostrado acima. Podemos optar por fazer isso agora ou mais tarde, digitando Ctrl+K e, em seguida, Ctrl+O (ou apenas Command+O no macOS) e selecionar a pasta onde salvamos nosso projeto. Clique em "Sim, confio nos autores". Depois de abrir, veremos a hierarquia do projeto à esquerda. Clicar duas vezes no arquivo abrirá esse arquivo no editor. Importações PWM import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.Timer; import edu.wpi.first.wpilibj.XboxController; import edu.wpi.first.wpilibj.drive.DifferentialDrive; import edu.wpi.first.wpilibj.motorcontrol.PWMSparkMax; CTRE import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.Timer; import edu.wpi.first.wpilibj.drive.DifferentialDrive; import com.ctre.phoenix.motorcontrol.can.WPI_TalonFX; REV import com.revrobotics.CANSparkMax; import com.revrobotics.CANSparkMaxLowLevel.MotorType; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.Timer; import edu.wpi.first.wpilibj.XboxController; import edu.wpi.first.wpilibj.drive.DifferentialDrive; Nosso código precisa fazer referência aos componentes do WPILib que estão sendo utilizados. Em Java, é feito com declarações import. O programa faz referência a classes como Joystick (para direção), PWMSparkMax / WPI_TalonFX / CANSparkMax (para controle de motores), TimedRobot (a classe base usada no exemplo), Timer (usado para o modo autônomo) e DifferentialDrive (para conectar o controle do joystick aos motores). Definindo as variáveis para nosso robô de exemplo PWM public class Robot extends TimedRobot { private final PWMSparkMax m_leftDrive = new PWMSparkMax(0); private final PWMSparkMax m_rightDrive = new PWMSparkMax(1); private final DifferentialDrive m_robotDrive = new DifferentialDrive(m_leftDrive, m_rightDrive); private final XboxController m_controller = new XboxController(0); private final Timer m_timer = new Timer(); /** * This function is run when the robot is first started up and should be used for any * initialization code. */ @Override public void robotInit() { // We need to invert one side of the drivetrain so that positive voltages // result in both sides moving forward. Depending on how your robot's // gearbox is constructed, you might have to invert the left side instead. m_rightDrive.setInverted(true); } CTRE public class Robot extends TimedRobot { private final WPI_TalonFX m_leftDrive = new WPI_TalonFX(1); private final WPI_TalonFX m_rightDrive = new WPI_TalonFX(2); private final DifferentialDrive m_robotDrive = new DifferentialDrive(m_leftDrive, m_rightDrive); private final Joystick m_stick = new Joystick(0); private final Timer m_timer = new Timer(); REV public class Robot extends TimedRobot { private final CANSparkMax m_leftDrive = new CANSparkMax(1, MotorType.kBrushless); private final CANSparkMax m_rightDrive = new CANSparkMax(2, MotorType.kBrushless); private final DifferentialDrive m_robotDrive = new DifferentialDrive(m_leftDrive, m_rightDrive); private final XboxController m_controller = new XboxController(0); private final Timer m_timer = new Timer(); O robô de exemplo em nossos exemplos terá um joystick na porta USB 0 para controle tipo arcade e dois motores nas portas PWM 0 e 1 (exemplos do fornecedor usam CAN com IDs 1 e 2). Aqui, criamos objetos do tipo DifferentialDrive (m_robotDrive), Joystick (m_stick) e Timer (m_timer). Esta seção do código faz três coisas: Define as variáveis como membros da nossa classe Robot. Inicializa as variáveis. Inicialização do robô @Override public void robotInit() {} O método RobotInit é executado quando o programa do robô está iniciando, mas após o construtor. O RobotInit para o nosso programa de exemplo não faz nada. Se quisermos executar algo aqui, podemos fornecer o código acima para substituir o padrão. Autônomo simples de exemplo /** This function is run once each time the robot enters autonomous mode. */ @Override public void autonomousInit() { m_timer.restart(); } /** This function is called periodically during autonomous. */ @Override public void autonomousPeriodic() { // Drive for 2 seconds if (m_timer.get() < 2.0) { // Drive forwards half speed, make sure to turn input squaring off m_robotDrive.arcadeDrive(0.5, 0.0, false); } else { m_robotDrive.stopMotor(); // stop robot } } O método AutonomousInit é executado uma vez cada vez que o robô faz a transição para o modo autônomo a partir de outro modo. Neste programa, reiniciamos o Timer neste método. AutonomousPeriodic é executado uma vez a cada período enquanto o robô está no modo autônomo. Na classe TimedRobot, o período é um tempo fixo, que padrão é 20ms. Neste exemplo, o código periódico verifica se o temporizador é inferior a 2 segundos e, se for, avança a meio velocidade usando o método ArcadeDrive da classe DifferentialDrive. Se mais de 2 segundos tiverem decorrido, o código para o acionamento do robô. Controle por analógico para teleoperado /** This function is called once each time the robot enters teleoperated mode. */ @Override public void teleopInit() {} /** This function is called periodically during teleoperated mode. */ @Override public void teleopPeriodic() { m_robotDrive.arcadeDrive(-m_controller.getLeftY(), -m_controller.getRightX()); } Assim como no modo Autônomo, o modo Teleop possui funções TeleopInit e TeleopPeriodic. Neste exemplo, não temos nada para fazer em TeleopInit; ele é fornecido apenas para fins ilustrativos. Em TeleopPeriodic, o código utiliza o método ArcadeDrive para mapear o eixo Y do Joystick para o movimento para frente/trás dos motores de acionamento e o eixo X para o movimento de virar. Modo de teste /** This function is called once each time the robot enters test mode. */ @Override public void testInit() {} /** This function is called periodically during test mode. */ @Override public void testPeriodic() {} O Modo de Teste é usado para testar a funcionalidade do robô. Semelhante ao TeleopInit, os métodos TestInit e TestPeriodic são fornecidos aqui apenas para fins ilustrativos. Compilando o projeto no robô Por favor, consulte as instruções aqui para implantar o programa em um robô. Programando seu robô (C++) Essa página oferece para usuários de C++ um ensinamento básico de programação para FRC Ainda que você não esteja usando Java, lembre-se de olhar a página anterior para criar seu projeto de robô Configurações C++ Para projetos em C++, há mais uma etapa para configurar o IntelliSense. Sempre que abrimos um projeto, deveríamos receber um pop-up no canto inferior direito perguntando se desejamos atualizar as configurações do C++. Clique em "Sim" para configurar o IntelliSense. Importações PWM #include #include #include #include #include CTRE #include #include #include #include #include REV #include #include #include #include #include #include Nosso código precisa fazer referência aos componentes do WPILib que estão sendo utilizados. Em C++, isso é feito usando declarações #include;. O programa faz referência a classes como Joystick (para direção), PWMSparkMax / WPI_TalonFX / CANSparkMax (para controle de motores), TimedRobot (a classe base usada no exemplo), Timer (usado para o modo autônomo) e DifferentialDrive (para conectar o controle do joystick aos motores). Definindo as variáveis para nosso robô de exemplo PWM public: Robot() { // We need to invert one side of the drivetrain so that positive voltages // result in both sides moving forward. Depending on how your robot's // gearbox is constructed, you might have to invert the left side instead. m_right.SetInverted(true); m_robotDrive.SetExpiration(100_ms); m_timer.Start(); } private: // Robot drive system frc::PWMSparkMax m_left{0}; frc::PWMSparkMax m_right{1}; frc::DifferentialDrive m_robotDrive{m_left, m_right}; frc::XboxController m_controller{0}; frc::Timer m_timer; }; CTRE public: Robot() { m_right.SetInverted(true); m_robotDrive.SetExpiration(100_ms); // We need to invert one side of the drivetrain so that positive voltages // result in both sides moving forward. Depending on how your robot's // gearbox is constructed, you might have to invert the left side instead. m_timer.Start(); } private: // Robot drive system ctre::phoenix::motorcontrol::can::WPI_TalonFX m_left{1}; ctre::phoenix::motorcontrol::can::WPI_TalonFX m_right{2}; frc::DifferentialDrive m_robotDrive{m_left, m_right}; frc::Joystick m_stick{0}; frc::Timer m_timer; REV Robot() { // We need to invert one side of the drivetrain so that positive voltages // result in both sides moving forward. Depending on how your robot's // gearbox is constructed, you might have to invert the left side instead. m_right.SetInverted(true); m_robotDrive.SetExpiration(100_ms); m_timer.Start(); } private: // Robot drive system rev::CANSparkMax m_left{1, rev::CANSparkMax::MotorType::kBrushless}; rev::CANSparkMax m_right{2, rev::CANSparkMax::MotorType::kBrushless}; frc::DifferentialDrive m_robotDrive{m_left, m_right}; frc::XboxController m_controller{0}; frc::Timer m_timer; O robô de exemplo em nossos exemplos terá um joystick na porta USB 0 para direção arcade e dois motores nas portas PWM 0 e 1 (exemplos do fornecedor usam CAN com IDs 1 e 2). Aqui criamos objetos do tipo DifferentialDrive (m_robotDrive), Joystick (m_stick) e Timer (m_timer). Esta seção do código faz duas coisas: Define as variáveis como membros de nossa classe Robot. Inicializa as variáveis. As inicializações de variáveis para C++ estão na seção privada na parte inferior do programa. Isso significa que elas são privadas para a classe (Robot). O código em C++ também define o tempo de expiração do Motor Safety para 0,1 segundos (o acionamento será desligado se não receber um comando a cada 0,1 segundos) e inicia o Timer usado para o modo autônomo. Inicialização do robô void RobotInit() {} O método RobotInit é executado quando o programa do robô está inicializando, mas após o construtor. O RobotInit para o nosso programa de exemplo não faz nada. Se quisermos executar alguma coisa aqui, poderíamos fornecer o código acima para substituir o padrão. Autônomo simples de exemplo void AutonomousInit() override { m_timer.Restart(); } void AutonomousPeriodic() override { // Drive for 2 seconds if (m_timer.Get() < 2_s) { // Drive forwards half speed, make sure to turn input squaring off m_robotDrive.ArcadeDrive(0.5, 0.0, false); } else { // Stop robot m_robotDrive.ArcadeDrive(0.0, 0.0, false); } } O método AutonomousInit é executado uma vez cada vez que o robô faz a transição para o modo autônomo a partir de outro modo. Neste programa, reiniciamos o Timer neste método. AutonomousPeriodic é executado uma vez a cada período enquanto o robô está no modo autônomo. Na classe TimedRobot, o período é um tempo fixo, que por padrão é de 20ms. Neste exemplo, o código periódico verifica se o temporizador é inferior a 2 segundos e, se for o caso, move-se para frente a meia velocidade usando o método ArcadeDrive da classe DifferentialDrive. Se mais de 2 segundos tiverem se passado, o código para o acionamento do robô. Controle de analógico para teleoperado void TeleopInit() override {} void TeleopPeriodic() override { // Drive with arcade style (use right stick to steer) m_robotDrive.ArcadeDrive(-m_controller.GetLeftY(), m_controller.GetRightX()); } Assim como no modo Autônomo, o modo Teleop possui funções TeleopInit e TeleopPeriodic. Neste exemplo, não temos nada a fazer em TeleopInit; ele é fornecido apenas para fins ilustrativos. Em TeleopPeriodic, o código utiliza o método ArcadeDrive para mapear o eixo Y do joystick no movimento para frente/trás dos motores de acionamento e o eixo X no movimento de viragem. Modo de teste void TestInit() override {} void TestPeriodic() override {} O Modo de Teste é utilizado para testar a funcionalidade do robô. Semelhante ao TeleopInit, os métodos TestInit e TestPeriodic são fornecidos aqui apenas para fins ilustrativos. Compilando o projeto no robô Por favor, consulte as instruções aqui para implantar o programa em um robô. Executando seu programa de teste Visão geral Você deve criar e instalar um programa de teste para sua linguagem escolhida, como visto nas seções anteriores. Operação amarrada Executar o seu programa de teste enquanto conectado à Estação do Condutor via cabo Ethernet ou USB confirmará que o programa foi implantado com sucesso e que a estação do condutor e o roboRIO estão configurados corretamente. O roboRIO deve estar ligado e conectado ao PC através de Ethernet ou USB. Iniciando a FRC Driver Station Clique duas vezes no atalho para iniciar Configurando a Driver Station O DS deve ser configurado com o número da sua equipe para se conectar ao seu robô. Para fazer isso, clique na aba Configuração e insira o número da sua equipe na caixa de número da equipe. Pressione Enter ou clique fora da caixa para que a configuração tenha efeito. Normalmente, os PCs já têm as configurações de rede corretas para que o DS se conecte ao robô, mas, se não, certifique-se de que seu adaptador de rede esteja configurado para DHCP. Confirmação de conectividade Cabo Sem fio Usando o software da Estação do Condutor, clique em Diagnóstico e confirme que as luzes de Enet Link (ou luz do Rádio do Robô, se estiver operando sem fio) e as luzes do Robô estejam verdes. Operando o robô Clique na aba Operação Confirme que a voltagem da bateria é exibida Os indicadores de Comunicação, Código do Robô e Joysticks estão verdes. Coloque o robô no Modo Teleop Clique em Habilitar. Mova os joysticks e observe como o robô responde. Clique em Desabilitar. Operação sem fio Antes de tentar a operação sem fio, a operação com cabo deve ter sido confirmada conforme descrito em Operação com Cabo. Executar o seu programa de teste enquanto conectado à Estação do Condutor via WiFi confirmará se o ponto de acesso está configurado corretamente. Configurando o ponto de acesso Consulte o artigo "Programando seu rádio" para obter detalhes sobre a configuração do rádio do robô para uso como ponto de acesso. Após configurar o ponto de acesso, conecte a estação do condutor ao robô sem fio. O SSID será o número da sua equipe (conforme inserido no Utilitário de Configuração da Ponte). Se você definiu uma chave ao usar o Utilitário de Configuração da Ponte, precisará inseri-la para se conectar à rede. Certifique-se de que o adaptador de rede do computador esteja configurado para DHCP («Obter um endereço IP automaticamente»). Agora você pode confirmar a operação sem fio usando as mesmas etapas em "Confirmar Conectividade e Operar o Robô" acima.