- Helton Maia (professor)
- Bruno Marques (professor)
- Murilo de Lima Barros (aluno)
Este projeto desenvolve um sistema de logística autônoma em ambientes fechados utilizando drone DJI Tello equipado com câmera para identificar e navegar com instruções do usuário. Nossa solução busca otimizar tarefas de transporte de pequenos itens, monitoramento e inventário em escritórios, galpões e etc.
O sistema utiliza uma arquitetura de IA híbrida que combina processamento de imagem com modelos de linguagem de grande escala (LLMs) para transformar intenções do usuário em planos de voo.
-
Navegação Multi-Passo: Diferente de comandos únicos, o sistema gerencia sequências de passos (
MAX_STEPS), permitindo que o drone execute missões complexas como "Procure a porta e atravesse-a" de forma iterativa. -
Gestão de Contexto e Memória: * OpenAI/Gemini: Implementação de histórico de conversa dinâmico que mantém o contexto da missão sem repetir dados redundantes, otimizando o uso de tokens.
-
Stateful Control: O chatbot recebe o estado atual (altura, último comando executado e objetivo global) para decidir o próximo movimento com base no sucesso da ação anterior.
-
Visão Espacial Auxiliada (Grid Overlay): Antes do envio para a IA, cada frame da câmera recebe uma sobreposição de grade 3x3, fornecendo ao modelo uma referência geométrica para melhor percepção de distância e centralização de objetos.
-
Controle de Execução e Segurança:
- Cálculo de Inércia: O sistema calcula automaticamente o tempo de espera necessário para cada comando (rotações vs. translações) antes de capturar o próximo frame para análise.
- Abortagem Instantânea: Interface com suporte a interrupção de sequências em tempo real via sinalizadores de eventos (
abort_sequence_event). - Validação de Comandos: Filtro rigoroso (
fix_commande_snap_to_closest) que ajusta as saídas da IA para valores aceitos pelo SDK da Tello (ex: arredondamento de ângulos e limites de distância).
| Provedor | Modelo | Gestão de Contexto | Especialidade |
|---|---|---|---|
| OpenAI | gpt-4o-mini |
Histórico em JSON com limpeza de buffer de imagem. | Baixa latência e voos curtos. |
| Gemini | gemini-2.5-flash |
Sessão de chat nativa (Stateful). | Alta compreensão de contexto visual. |
| Local | minicpm-v:8b |
Prompt de passo único otimizado. | Privacidade total e execução sem latência de API. |
- Hardware: Drone DJI Tello
- Software: Python, OpenCV, Tkinter
- IA: Chatbot baseado em modelo de linguagem (Gemini/OpenAI/Local)
# Clone o repositório
git clone https://github.com/heltonmaia/proj_drone_tello.git
cd proj_drone_tello# Instale dependências
pip install -r requirements.txt# Caso seja retornado erro requerendo uma biblioteca de áudio
sudo apt-get install portaudio19-dev- Conecte-se à rede Wi‑Fi do drone DJI Tello.
- Execute a interface:
python3 -u main.py
- Na UI:
- Visualize o vídeo ao vivo.
- Digite um comando na caixa de texto, ou grave um comando de voz com até 5 segundos.
- Clique em "Enviar" ou pressione a tecla Enter na caixa de texto
Para usar o chatbot usando modelos via requisições:
- Crie uma chave de API OpenAI e/ou Gemini.
- Insira esta chave em um módulo de nome
utils.pyseguindo a estrutura do exemplo emcodes/modules/utils-example.py. - Escolha os modelos em
codes/modules/chatbot.pyalterando as variáveisGEMINI_MODEL_NAMEeOPENAI_MODEL_NAME, por padrão o projeto usagemini-2.5-flashegpt-4o-mini, respectivamente. - Escolha entre Gemini ou OpenAI na variável
AI_PROVIDERno módulochatbot.py.
Para usar um modelo localmente:
- Baixe o modelo que deseja via
ollama pull "nome_do_modelo", por padrão o projeto usaminicpm-v:8b. Antes de usá-lo, execute o comando abaixo:ollama pull minicpm-v:8b
- Em
codes/modules/chatbot.pydescomente a linhaAI_PROVIDER = 'LOCAL', deixando as outras opções comentadas.

