Índice:
- Etapa 1: componentes necessários
- Etapa 2: Estrutura Corporal
- Etapa 3: Fiação e codificação
- Etapa 4: Raspberry Pi e reconhecimento de imagem
- Etapa 5: LCD e alto-falante
- Etapa 6: etapas finais
Vídeo: NAIN 1.0 - o robô humanóide básico usando Arduino: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
O Nain 1.0 terá basicamente 5 módulos destacáveis-
1) Braço - que pode ser controlado via servos.
2) Rodas - que podem ser controladas com motores cc.
3) Perna - Nain será capaz de alternar entre rodas ou pernas para o movimento.
4) Cabeça - sua cabeça pode ser controlada para vários acenos.
5) Módulo de câmera - que pode ter interface para acesso de reconhecimento facial.
Junto com este NAIN será capaz de falar e interagir com os usuários e pode mostrar as horas por seu relógio embutido. Terá um controle sem fio via Wi-fi / Bluetooth.
Etapa 1: componentes necessários
- Servo motores -4
- Arduino Mega - 1
- Raspberry Pi - 1
- Câmera Usb -1
- Palestrante -1
- Motores DC -2
- L293D -1
- Pacote de bateria - 1
- Rodas -2
- Rodas giratórias - 2
Junto com eles, você precisará de tiras quadradas de alumínio para fazer o corpo e parafusos e porcas para encaixá-los corretamente.
Etapa 2: Estrutura Corporal
A estrutura do corpo será feita de hastes quadradas de alumínio leve que ajudarão na fácil montagem.
A partir de agora monte-os conforme mostrado na figura e também corte os espaços adequados para os servo motores serem fixados nos braços.
Anexe uma base de madeira hexagonal na parte inferior.
Abaixo da base de madeira, coloque os motores DC e as rodas como fazemos em qualquer robô seguidor de linha.
Curiosamente, adicione duas rodas giratórias - uma na frente e outra na parte de trás do robô.
Etapa 3: Fiação e codificação
Para conectar os diferentes módulos, consulte os códigos anexados nesta parte.
Em primeiro lugar, testamos cada módulo usando códigos independentes e, em seguida, combinamos todos em um e controlamos o movimento das rodas e braços usando um módulo bluetooth.
Etapa 4: Raspberry Pi e reconhecimento de imagem
O reconhecimento de imagem é realizado usando uma câmera USB e Raspberry Pi.
Para isso, você precisará instalar a biblioteca OPEN CV no seu Pi.
Você pode fazer isso aqui -
Em seguida, você precisará executar o reconhecimento de imagem usando a cascata de haar.
Você pode fazer isso aqui -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc
Depois de estudar o link acima e segui-lo, fiz algumas alterações no código final que usei e que estou colando abaixo -
GERADOR DE DADOS:
importcv2
cam = cv2. VideoCapture (0)
detector = cv2. CascadeClassifier ('Classifiers / face.xml')
i = 0
deslocamento = 50
name = raw_input ('insira sua id')
enquanto verdadeiro:
ret, im = cam.read ()
cinza = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
faces = detector.detectMultiScale (cinza, scaleFactor = 1,2, minNeighbors = 5, minSize = (100, 100), sinalizadores = cv2. CASCADE_SCALE_IMAGE)
para (x, y, w, h) nas faces:
i = i + 1
cv2.imwrite ("dataSet / face." + name + '.' + str (i) + ".jpg", cinza [y-offset: y + h + offset, x-offset: x + w + offset])
cv2.rectângulo (im, (x-50, y-50), (x + w + 50, y + h + 50), (225, 0, 0), 2)
cv2.imshow ('im', im [deslocamento y: y + h + deslocamento, deslocamento x: x + w + deslocamento])
se cv2.waitKey (100) & 0xFF == ord ('q'):
pausa
# quebra se o número da amostra for maior que 20
elif (i> 20):
pausa
cam.release ()
cv2.destroyAllWindows ()
Ele criará um conjunto de dados de suas fotos que será usado para autenticação.
TREINADOR:
importcv2, os
importar numpy como np
da imagem de importação PIL
reconhecedor = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Classifiers / face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
path = 'dataSet'
def get_images_and_labels (path):
image_paths = [os.path.join (path, f) para f em os.listdir (path)]
# imagens conterão imagens de rostos
imagens =
# rótulo conterá o rótulo atribuído à imagem
rótulos =
para image_path em image_paths:
# Leia a imagem e converta para tons de cinza
image_pil = Image.open (image_path).convert ('L')
# Converta o formato da imagem em numpy array
image = np.array (image_pil, 'uint8')
# Obtenha o rótulo da imagem
nbr = int (os.path.split (image_path) [- 1].split (".") [1].replace ("face-", ""))
# nbr = int (''. join (str (ord (c)) para c em nbr))
imprimir nbr
# Detecta o rosto na imagem
faces = faceCascade.detectMultiScale (imagem)
# Se um rosto for detectado, acrescente o rosto às imagens e o rótulo aos rótulos
para (x, y, w, h) nas faces:
images.append (imagem [y: y + h, x: x + w])
labels.append (nbr)
cv2.imshow ("Adicionando faces ao conjunto de treinamento …", imagem [y: y + h, x: x + w])
cv2.waitKey (10)
# retorna a lista de imagens e a lista de rótulos
devolver imagens, etiquetas
imagens, rótulos = get_images_and_labels (caminho)
cv2.imshow ('teste', imagens [0])
cv2.waitKey (1)
reconhecizer.train (imagens, np.array (etiquetas))
reconhecizer.save ('treinador / treinador.yml')
cv2.destroyAllWindows ()
DETECTOR
importcv2
importar numpy como np
importar os
c = 0
reconhecedor = cv2.face.createLBPHFaceRecognizer ()
reconhecizer.load ('trainer / trainer.yml')
cascadePath = "Classifiers / face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
cam = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
fontscale = 1
fontcolor = (255, 255, 255)
enquanto verdadeiro:
ret, im = cam.read ()
cinza = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale (cinza, 1.2, 5)
para (x, y, w, h) nas faces:
cv2.rectângulo (im, (x-50, y-50), (x + w + 50, y + h + 50), (225, 0, 0), 2)
Id = reconhecizer.predict (cinza [y: y + h, x: x + w])
if (Id <70):
if (Id == 1):
Id = "Shashank"
elif (Id == 2):
if (c == 0):
Id = "Shivam"
c = c + 1
os.system ("espeak 'Welcome Shivam Access Concedido'")
outro:
Id = "Shivam"
outro:
Id = "Desconhecido"
cv2.putText (im, str (Id), (x, y + h), fontface, fontscale, fontcolor)
cv2.imshow ('im', im)
se cv2.waitKey (10) & 0xFF == ord ('q'):
pausa
cam.release ()
cv2.destroyAllWindows ()
Etapa 5: LCD e alto-falante
Eu também usei um display LED I2C e um alto-falante.
O LED é controlado via Arduino Mega e seu código é fornecido no código final.
Para alto-falante, ele está conectado ao Raspberry Pi e usa o utilitário eSpeak.
Você pode encontrar sua referência aqui -
Etapa 6: etapas finais
Monte tudo e prepare-se para o estrondo.
Recomendado:
Como fazer um robô humanóide: 8 etapas
Como fazer um robô humanóide: Ei, pessoal! Espero que você já tenha gostado de minha instrução anterior " Estação meteorológica on-line (NodeMCU) " e você está pronto para um novo, depois do robô modelo SMARS que montamos da última vez, o projeto de hoje também é sobre robôs aprendendo e
Robô humanóide feito à mão avançado de código aberto MIA-1 !: 4 etapas
Robô humanóide feito à mão avançado de código aberto MIA-1 !: Olá a todos, hoje mostrarei como fiz o robô MIA-1, que não é apenas avançado e único, mas também de código aberto e pode ser feito sem impressão 3D !! Sim, você entendeu, este robô é totalmente feito à mão. E o código aberto significa - você obtém o
OSSOS o robô humanóide: 11 etapas (com fotos)
OSSOS, o Robô Humanóide: Feliz Dia das Bruxas a todos !!! Para comemorar o Halloween deste ano, pensei que seria uma ótima ideia construir um robô adequado para a ocasião. Um esqueleto humanóide dançante !!! Sempre quis projetar e construir meu próprio robô humanóide, então este foi o p
ASPIR: Robô humanóide impresso em 3D em tamanho real: 80 etapas (com imagens)
ASPIR: Robô humanóide impresso em 3D em tamanho real: O robô de suporte autônomo e inspiração positiva (ASPIR) é um robô humanóide impresso em 3D de código aberto e em tamanho real que qualquer um pode construir com direção e determinação suficientes. dividimos este enorme Instructable de 80 passos em 10 e
Robô humanóide baseado em Arduino usando servo motores: 7 etapas (com imagens)
Robô humanóide baseado em Arduino usando servo motores: Olá a todos, Este é meu primeiro robô humanóide, feito de folha de espuma de PVC. Está disponível em várias espessuras. Aqui, usei 0,5 mm. Neste momento, este robô pode simplesmente andar quando eu ligo. Agora estou trabalhando para conectar o Arduino e o celular por meio de Bluetooth