| Nome | R.A. |
|---|---|
| André Solano F. R. Maiolini | 19.02012-0 |
| Durval Consorti Soranz de Barros Santos | 22.01097-0 |
| Leonardo Roberto Amadio | 22.01300-8 |
https://www.youtube.com/watch?v=4js4HJ5Gtuk
Este repositĂłrio contĂ©m todo o software embarcado para o projeto Tatu-Bomba, um RobĂ´ de Reconhecimento Tático (inspirado no TTR - Throwable Tactical Robot da Recon Robotics). O objetivo Ă© desenvolver uma plataforma de vigilância mĂłvel capaz de ser controlada remotamente, transmitindo vĂdeo em tempo real.
A arquitetura de software Ă© distribuĂda em dois processadores principais que trabalham em conjunto para alcançar um desacoplamento entre o controle de alto e baixo nĂvel.
- Raspberry Pi Zero 2 W (CĂ©rebro): Atua como o computador principal de bordo. É responsável pelas tarefas de alta complexidade, como processamento de vĂdeo, comunicação em rede (Wi-Fi), e a execução da lĂłgica principal do robĂ´.
- ESP32 (Controlador de Tempo Real): Funciona como um microcontrolador auxiliar dedicado. Ele lida com todas as tarefas de tempo real que exigem precisĂŁo e baixa latĂŞncia, como o controle dos motores e a leitura de sensores de alta frequĂŞncia (encoders e IMU).
- PC / Dashboard (Estação de Controle): Uma interface de operador que se comunica com o robĂ´ via Wi-Fi atravĂ©s do protocolo MQTT para enviar comandos e receber o stream de vĂdeo e a telemetria.
A seguir, tem-se o diagrama de blocos dos componentes eletrônicos utilizados para a construção da plataforma do robô:
O diagrama abaixo ilustra a interação entre os componentes arquiteturais principais do sistema:
graph TD
subgraph "PC Command Center"
A[PyQt Dashboard]
B(MQTT Broker)
A -- "localhost" <--> B
end
subgraph "Robot Platform"
subgraph H["Raspberry Pi Zero 2W"]
C["Robot Client (MQTT)"]
D["Video Server (MJPEG)"]
end
subgraph E["ESP32S NodeMcu"]
F["UART Task"]
G["Sensor Motor Task"]
end
end
B -- "Wi-Fi (MQTT)" <--> C
A -- "Wi-Fi (HTTPS)" <--> D
C -- "UART (Serial)" <--> F
Este repositório está organizado nos seguintes diretórios principais:
Software/
|
├── esp32_firmware/ # Código do firmware utilizando PlatformIO
│ ├── .pio
│ ├── platformio.ini
| ├── ...
│ └── README.md # Explicação da arquitetura e funcionamento
│
├── pc_command_center/ # Código para rodar no computador (acesso)
│ ├── dashboard/ # Dashboard para controle do robô
│ ├── venv/ # Ambiente virtual Python
| ├── ...
│ └── README.md # Explicação para utilização
|
├── rpi_software/ # Código do software rodando na RPi
│ ├── robot_client/ # Ponte de comunicação
│ ├── video_server/ # Servidor de streaming de vĂdeo
| ├── services/ # Configurações serviços 'systemd'
| ├── config.py # Configurações gerais dos serviços
| ├── ...
│ └── README.md # Explicação da arquitetura e funcionamento
|
├── ...
├── README.md # Explicação geral do projeto
└── .gitignore
O cérebro do robô, escrito em Python. Suas responsabilidades incluem:
- Ponte de Comunicação: Traduz mensagens MQTT do dashboard em comandos seriais para o ESP32 e, inversamente, converte os dados de telemetria do ESP32 em publicações MQTT.
- Streaming de VĂdeo: Executa um servidor web que captura o feed da câmera e o transmite em formato MJPEG para o dashboard.
- Gerenciamento de Estado: Mantém o estado de conexão do robô utilizando o mecanismo Last Will do MQTT.
➡️ Clique aqui para acessar o README completo do software da RPi
O controlador de tempo real do robĂ´, escrito em C++/Arduino com FreeRTOS. Suas responsabilidades incluem:
- Controle Preciso dos Motores: Gera sinais PWM para a ponte H a partir dos comandos recebidos.
- Leitura de Sensores: LĂŞ os encoders de roda e a IMU em uma frequĂŞncia constante e elevada.
- Envio de Telemetria: Agrupa todos os dados dos sensores em um pacote binário e o envia via UART para a Raspberry Pi.
➡️ Clique aqui para acessar o README completo do firmware do ESP32
O dashboard roda na máquina do usuário - com uma interface intuitiva, desenvolvida usando PyQt - permitindo a leitura da telemetria e controle de movimentação (alĂ©m da visualização do vĂdeo).
➡️ Clique aqui para acessar o README completo do dashboard
- ✅ Controle Remoto via Wi-Fi: Movimentação confiável através de uma interface de controle.
- âś… Streaming de VĂdeo em Tempo Real: TransmissĂŁo de vĂdeo de baixa latĂŞncia da câmera do robĂ´ para o operador.
- âś… Telemetria Completa: Envio de dados vitais como tensĂŁo da bateria e dados de odometria (encoders e IMU) para o dashboard.
- ⏳ Modo Sentinela (Futuro): Utilizar IA para detectar e rastrear alvos de forma autônoma.
- ⏳ Patrulha por Waypoints (Futuro): Executar rotas pré-definidas de forma autônoma com base na odometria.
Os requisitos funcionais descrevem o que o sistema deve fazer.
| ID | Requisito | Prioridade | Critério de Aceitação |
|---|---|---|---|
| RF01 | O sistema deve permitir o controle de movimento do robĂ´ (frente, trás, rotação) atravĂ©s da interface no dashboard. | ObrigatĂłrio | O robĂ´ responde aos comandos de movimento do joystick virtual com um atraso perceptĂvel inferior a 500 ms. |
| RF02 | O sistema deve transmitir vĂdeo em tempo real da câmera do robĂ´ para o dashboard do operador. | ObrigatĂłrio | O feed de vĂdeo Ă© exibido no dashboard, cumprindo os critĂ©rios de performance definidos em RNF01. |
| RF03 | O robĂ´ deve ser ativado e desativado fisicamente atravĂ©s de um pino removĂvel. | Opcional | Com o pino removido, os motores nĂŁo respondem a nenhum comando. Ao reinserir o pino, a operação Ă© restaurada. |
| RF04 | O robĂ´ deve enviar dados de telemetria (nĂvel da bateria em volts e status da conexĂŁo) para o dashboard. | ObrigatĂłrio | Os valores de tensĂŁo elĂ©trica e o status “online/offline” sĂŁo exibidos corretamente no dashboard. |
| RF05 | O sistema deve detectar a presença de ameaças no campo de visĂŁo da câmera usando um modelo de visĂŁo computacional. | Opcional | O sistema desenha uma caixa delimitadora (bounding box) em torno da ameaça detectada no feed de vĂdeo em tempo real. |
| RF06 | O robô deve ser capaz de executar uma sequência de movimentos pré-definida (modo patrulha). | Opcional | O robô executa com sucesso uma sequência (ex: “frente 1 m, girar 90°, frente 1 m”) carregada de um arquivo de configuração. |
Os requisitos nĂŁo funcionais descrevem como o sistema deve operar, definindo suas qualidades.
| ID | Requisito | Prioridade |
|---|---|---|
| RNF01 | O streaming de vĂdeo deve ter uma taxa de atualização de no mĂnimo 30 FPS e uma latĂŞncia ponta-a-ponta inferior a 500 ms. | ObrigatĂłrio |
| RNF02 | A bateria deve fornecer uma autonomia de operação de no mĂnimo 30 minutos em condições de uso moderado. | ObrigatĂłrio |
| RNF03 | A comunicação Wi-Fi deve ser estável em um raio de no mĂnimo 20 metros em ambiente interno. | ObrigatĂłrio |
| RNF04 | A interface de controle deve permitir que um novo operador execute tarefas básicas rapidamente. | Obrigatório |
| RNF05 | O software deve ser modular, com baixo acoplamento entre os componentes de comunicação, controle e interface. | Obrigatório |
| RNF06 | O sistema deve ser tolerante a falhas de comunicação, descartando mensagens corrompidas ou malformadas sem travar. | Obrigatório |
| RNF07 | O robô deve entrar em modo de segurança (parar os motores) se a comunicação com o operador for perdida por um tempo pré-determinado. | Obrigatório |
| RNF08 | O peso total do robĂ´ montado, incluindo a bateria, deve ser inferior a 1 kg. | Opcional |
| Categoria | Componente | Qtd. | Preço Unitário (R$) | Subtotal (R$) |
|---|---|---|---|---|
| EletrĂ´nica Principal | Raspberry Pi Zero 2W | 1 | R$ 250,00 | R$ 250,00 |
| Pi Camera (CompatĂvel 5MP) | 1 | R$ 47,00 | R$ 47,00 | |
| Cabo Adaptador Câmera Raspberry Pi | 1 | R$ 15,00 | R$ 15,00 | |
| CartĂŁo MicroSD 32GB | 1 | R$ 35,10 | R$ 35,10 | |
| ESP32S NodeMCU (ESP-12) | 1 | R$ 47,90 | R$ 47,90 | |
| IMU MPU6050 (MĂłdulo) | 1 | R$ 16,05 | R$ 16,05 | |
| PotĂŞncia e Atuadores | Bateria Li-Ion 3S (11.1V) | 1 | R$ 0,00 | R$ 0,00 |
| Conversor DC-DC Step-down 5V | 1 | R$ 18,90 | R$ 18,90 | |
| Ponte H TB6612FNG (MĂłdulo) | 1 | R$ 30,00 | R$ 30,00 | |
| Motor DC (150 RPM c/ Eng. Metal) | 2 | R$ 28,49 | R$ 56,98 | |
| Distribuidor de Energia (PDB/Bornes) | 1 | R$ 15,00 | R$ 15,00 | |
| Sensores | Encoder (LM393 - MĂłdulo c/ Disco) | 2 | R$ 11,00 | R$ 22,00 |
| Chassi (Estrutura) | 1kg Filamento ABS (Cinza) | 1 | R$ 110,00 | R$ 110,00 |
| Tubo PVC 100mm (40cm) | 1 | R$ 12,00 | R$ 12,00 | |
| Tampas PVC 100mm | 2 | R$ 7,00 | R$ 14,00 | |
| Mecânica (Miscelânea) | Fuso dupla rosca M8 (com castanha)¹ | 1 | R$ 12,00 | R$ 12,00 |
| Rolamentos 608zz | 4 | R$ 2,50 | R$ 10,00 | |
| Parafusos, Porcas, Fios (Diversos) | 1 | R$ 25,00 | R$ 25,00 | |
| Total Estimado: | R$ 736,93 |

