# Olá robô - Controle do Robô (Blocos Java)



# Controle do robô

____

Compreendidos os princípios básicos de controle de atuadores e obtenção de feedback de sensores a partir do Olá Robô - Test Bed, é hora de começar a configurar e programar nosso robô para controle Teleoperado e Autônomo!

| Seção | Objetivos da seção |
| --- | --- |
| Criando um robô básico | Apresenta um potencial robô para trabalhar, assim como o arquivo de configuração utilizado nas seções seguintes.
| Noções básicas de transmissão | Diferenças entre drivetrains diferencial e omnidirecional e seu impacto nos tipos de controle teleoperado. |

>Antes de continuar, é recomendado completar, no mínimo, um drivetrain. Existem algumas opções diferentes dependendo do kit que está sendo utilizado. Para este guia, o Class Bot V2 é utilizado. [Consulte o guia de montagem](https://docs.revrobotics.com/duo-build/ftc-starter-kit-class-bot) para obter instruções completas de montagem para o Class Bot V2!

## **Criar um robô básico**

A imagem abaixo destaca os principais componentes de hardware do Class Bot V2. Esses componentes são importantes para entender o processo de configuração.

<p align=center >
<img src="https://docs.stemos.com.br/uploads/images/gallery/2023-12/skv3-class-bot-complete.png" alt="module" width="80%"/>
</p>

A seção de Configuração do Olá Robô concentrou-se na configuração dos componentes no Test Bed. Para avançar nas seções de programação do Controle do Robô, é necessário criar um novo arquivo de configuração para os componentes no robô. É sua escolha quais nomes de variáveis você deseja atribuir ao seu robô, mas, para referência, este guia usará os seguintes nomes para cada componente de hardware.

| Componente de Hardware | Tipo de Hardware | Nome |
| --- | --- | --- |
| Motor direito | REV Robotics UltraPlanetary HD Hex Motor | right motor |
| Motor esquerdo | REV Robotics UltraPlanetary HD Hex Motor | left motor |
| Braço motor | REV Robotics Core Hex Motor | arm |
| Garra servo | Servo | claw |
| Sensor de toque | REV Touch Sensor | touch |

## **Noções básicas de transmissão**

Antes de continuar, é importante entender o comportamento mecânico de diferentes drivetrains. As duas categorias mais comuns de drivetrains são Diferencial e Omnidirecional. O drivetrain do Class Bot é um drivetrain diferencial. A tabela abaixo destaca as principais características desses dois tipos de drivetrains.

<p align=center >
<img src="https://docs.stemos.com.br/uploads/images/gallery/2023-12/drivetrains.png" alt="module" width="80%"/>
</p>

| Tração diferencial | Omnidirecional |
| --- | --- |
| Tipo mais comum de transmissão | Pode se mover em qualquer direção |
| Se move ao longo de um eixo central | Varia a força em cada roda para se mover lateralmente ou linearmente |
| Aplica mais potência de um dos lados para para mudar a direção | Programação mais complexa |
| Pode ter diferentes nomes (4WD, 6WD, West Coast..) | Precisa de mais de dois motores |

## **Tipos de controle teleoperado**

Existem várias maneiras de controlar um robô teleoperado. Ao usar o REV Control System, isso é feito com um dispositivo de Driver Station e gamepads. Existem várias maneiras de usar um controlador para movimentar um drivetrain diferencial. Duas das formas convencionais são Tank Drive e Arcade Drive.

### **Tração Tank**

Para o Tank Drive, cada lado do drivetrain diferencial é mapeado para seu próprio joystick. Alterar a posição de cada joystick permite que o drivetrain vire e mude sua direção. Existe um código de exemplo no aplicativo Controlador do Robô para controlar um drivetrain diferencial dessa maneira.

### **Arcade Drive**

Para o Arcade Drive, cada lado do drivetrain diferencial é controlado por um único joystick. Alterar a posição do joystick muda a potência aplicada a cada lado do drivetrain, permitindo um comando específico. Os controles de Arcade Drive geralmente têm o movimento esquerda/direita do joystick configurado para girar o robô em torno do seu eixo, com o movimento para frente/para trás fazendo o robô avançar e retroceder. Mais informações sobre Arcade Drive podem ser encontradas nas próximas seções.

Com o robô configurado e uma compreensão básica de drivetrains e tipos de controle teleoperado, podemos avançar para a programação do drivetrain para movimentar o robô.