Skip to content

OctaTechProject/MaoRoboticaMediapipe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto: Controle de Braço Robótico com Visão Computacional e Arduino

image

📋 Índice

Visão Geral

Funcionalidades

Tecnologias Utilizadas

Estrutura do Projeto

Pré-requisitos

Instalação e Configuração

Como Usar

Arquitetura do Sistema

Documentação Técnica

Exemplos de Uso

Solução de Problemas

Contribuição

Licença

🎯 Visão Geral

Este projeto inovador combina visão computacional e robótica para criar um sistema que permite controlar um braço robótico através de gestos manuais. Utilizando a câmera do computador, o sistema detecta a posição dos dedos da mão em tempo real e traduz esses movimentos em comandos para servomotores conectados a uma placa Arduino.

Aplicações

  • Controle intuitivo de dispositivos robóticos

  • Sistemas de reabilitação física

  • Interface homem-máquina natural

  • Educação em robótica e visão computacional

Funcionalidades

  • Detecção em Tempo Real: Reconhecimento de mãos usando MediaPipe

  • Controle de Múltiplos Servos: Controle individual de 5 dedos robóticos

  • Interface Visual: Feedback visual dos pontos de referência da mão

  • Lógica Intuitiva: Mapeamento natural entre gestos humanos e movimentos robóticos

  • Configuração Flexível: Fácil adaptação para diferentes hardware

Tecnologias Utilizadas

Hardware

  • Arduino Uno (ou compatível)

  • 5x Servomotores (SG90 ou similar)

  • Webcam ou câmera USB

  • Conexões e cabos

Software

  • Python 3.9 (recomendado)

  • OpenCV - Processamento de imagem

  • MediaPipe - Detecção de mãos

  • PyFirmata - Comunicação com Arduino

  • Arduino IDE - Para upload do Firmata

📁 Estrutura do Projeto

projeto-braco-robotico/

│
├── main.py                # Script principal com detecção de mãos
├── servo_braco3d.py       # Controle dos servomotores
├── testar-dedos.py        # Script de teste dos servos
├── requirements.txt       # Dependências do projeto
├── README.md              # Documentação
└── assets/                # Imagens e recursos
    ├── diagrama.png
    ├── setup_fisico.jpg
    └── demonstracao.gif

🔧 Pré-requisitos

Hardware

  • Arduino Uno/Nano

  • 5x Servomotores

  • Webcam

  • Cabos jumper

  • Protoboard

Software

  • Python 3.9

  • Arduino IDE

  • Bibliotecas listadas em requirements.txt

Instalação e Configuração

  1. Configuração do Arduino https://via.placeholder.com/600x400/FF6B6B/FFFFFF?text=Configura%C3%A7%C3%A3o+Arduino

  2. Instale a Arduino IDE download aqui

  3. Conecte o Arduino via USB

  4. Carregue o StandardFirmata:

  • Abra Arduino IDE

  • Vá em Arquivo → Exemplos → Firmata → StandardFirmata

  • Selecione a porta correta em Ferramentas → Porta

  • Faça o upload para o Arduino

2. Configuração do Python

# Clone o repositório
git clone https://github.com/seu-usuario/controle-braco-robotico.git
cd controle-braco-robotico

# Crie um ambiente virtual (opcional mas recomendado)
python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate    # Windows

# Instale as dependências
pip install -r requirements.txt

3. Conexões Físicas

https://via.placeholder.com/600x400/4ECDC4/FFFFFF?text=Conex%C3%B5es+dos+Servos

Servo - Pino Arduino - Dedo

Servo1 12 Polegar

Servo2 11 Indicador

Servo3 10 Médio

Servo4 9 Anelar

Servo5 8 Mínimo

Nota: Alimente os servos com fonte externa se necessário.

Como Usar

Teste dos Servomotores

python testar-dedos.py

Este script testa cada servo individualmente, movendo-os sequencialmente.

Execução do Sistema Principal

python main.py

https://via.placeholder.com/600x400/45B7D1/FFFFFF?text=Interface+de+Detec%C3%A7%C3%A3o

Controles por Gestos

Gestos Ação do Robô

Mão aberta -> Todos os dedos abertos

Mão fechada -> Todos os dedos fechados

Dedo estendido -> Dedo correspondente aberto

Dedo dobrado -> Dedo correspondente fechado

Arquitetura do Sistema

Diagrama de Fluxo

[Webcam] → [OpenCV] → [MediaPipe] → [Processamento] → [PyFirmata] → [Arduino] → [Servomotores]
     ↓
[Feedback Visual]

Componentes Principais

  1. Captura de Vídeo (main.py)
  • Acesso à webcam via OpenCV

  • Pré-processamento de frames

  1. Detecção de Mãos (main.py)
  • MediaPipe para landmarks da mão

  • Extração de coordenadas dos dedos

  1. Lógica de Controle (main.py)
  • Cálculo de distâncias entre pontos

  • Mapeamento para estados abertos/fechados

  1. Controle de Servos (servo_braco3d.py)
  • Interface com Arduino

  • Movimentação suave dos servos

Documentação Técnica

Pontos de Referência da Mão https://via.placeholder.com/600x400/F7B731/FFFFFF?text=Landmarks+da+M%C3%A3o

O MediaPipe identifica 21 pontos de referência na mão:

  • Polegar: Pontos 1-4

  • Indicador: Pontos 5-8

  • Médio: Pontos 9-12

  • Anelar: Pontos 13-16

  • Mínimo: Pontos 17-20

  • Base: Ponto 0

Algoritmo de Detecção

# Cálculo de distâncias para cada dedo
distPolegar = abs(pontos[17][0] - pontos[4][0])
distIndicador = pontos[5][1] - pontos[8][1]
distMedio = pontos[9][1] - pontos[12][1]
distAnelar = pontos[13][1] - pontos[16][1]
distMinimo = pontos[17][1] - pontos[20][1]

Mapeamento Servo-Dedo

# Configuração dos pinos
pin1 = 12  # Polegar
pin2 = 11  # Indicador  
pin3 = 10  # Médio
pin4 = 9   # Anelar
pin5 = 8   # Mínimo

Exemplos de Uso

Caso 1: Controle Básico

# Abre todos os dedos
for pin in [12, 11, 10, 9, 8]:
    mao.abrir_fechar(pin, 1)  # Abrir

Caso 2: Movimento Sequencial

# "Onda" com os dedos
for pin in [8, 9, 10, 11, 12]:
    mao.abrir_fechar(pin, 1)
    time.sleep(0.5)
    mao.abrir_fechar(pin, 0)

Solução de Problemas

Problemas Comuns

  1. Arduino não detectado
  • Verifique a porta COM no código

  • Teste com testar-dedos.py primeiro

  1. Servos não se movem
  • Verifique alimentação elétrica

  • Confirme conexões dos pinos

  1. Detecção de mãos instável
  • Melhore a iluminação do ambiente

  • Ajuste posição da câmera

  1. Erros de importação
  • Reinstale requirements: pip install -r requirements.txt

  • Verifique versão do Python (3.9 recomendado)

Códigos de Debug

# Adicione no main.py para debug
print(f"Distâncias: P:{distPolegar}, I:{distIndicador}, M:{distMedio}")

🤝 Contribuição

Contribuições são bem-vindas! Por favor:

1. Fork o projeto

2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)

3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')

4. Push para a branch (git push origin feature/AmazingFeature)

5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

📞 Contato

Desenvolvido por OctaTelecom

Email: **

GitHub: @OctaTechProject

Vídeo Tutorial:

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages