Tabla de contenido:
- Paso 1: componentes necesarios
- Paso 2: Estructura corporal
- Paso 3: cableado y codificación
- Paso 4: Raspberry Pi y reconocimiento de imágenes
- Paso 5: LCD y altavoz
- Paso 6: Pasos finales
Video: NAIN 1.0 - el robot humanoide básico que usa Arduino: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Nain 1.0 tendrá básicamente 5 módulos desmontables-
1) Armado - que se puede controlar mediante servos.
2) Ruedas - que se pueden controlar con motores de corriente continua.
3) Pierna: Nain podrá cambiar entre ruedas o piernas para moverse.
4) Cabeza: su cabeza se puede controlar con varios movimientos de cabeza.
5) Módulo de cámara, que se puede conectar para el acceso al reconocimiento facial.
Junto con esto, NAIN podrá hablar e interactuar con los usuarios y podrá mostrarle la hora mediante su reloj incorporado. Tendrá un control inalámbrico mediante Wi-Fi / Bluetooth.
Paso 1: componentes necesarios
- Servomotores -4
- Arduino Mega - 1
- Frambuesa Pi - 1
- Cámara USB -1
- Altavoz -1
- Motores DC -2
- L293D -1
- Paquete de batería - 1
- Ruedas -2
- Ruedas giratorias - 2
Junto con estos, necesitará tiras cuadradas de aluminio para hacer que el cuerpo y los tornillos y tuercas se ajusten correctamente.
Paso 2: Estructura corporal
La estructura de la carrocería estará hecha de varillas cuadradas de aluminio livianas que ayudarán a ensamblarla fácilmente.
A partir de ahora, móntelos como se muestra en la figura y también corte los espacios adecuados para que los servomotores se unan a los brazos.
Coloque una base de madera hexagonal en la parte inferior.
Debajo de la base de madera, coloque los motores de CC y las ruedas como lo hacemos en cualquier robot seguidor de línea.
Curiosamente, agregue dos ruedas giratorias, una en la parte delantera y otra en la parte posterior del robot.
Paso 3: cableado y codificación
Para conectar los diferentes módulos, consulte los códigos adjuntos en esta parte.
Primero probamos cada módulo usando códigos independientes y luego los combinamos todos en uno y controlamos el movimiento de ruedas y brazos usando un módulo bluetooth.
Paso 4: Raspberry Pi y reconocimiento de imágenes
El reconocimiento de imágenes se realiza mediante una cámara USB y una Raspberry Pi.
Para eso, necesitará instalar la biblioteca OPEN CV en su Pi.
Puede hacerlo desde aquí:
Luego, deberá realizar el reconocimiento de imágenes utilizando Haar Cascade.
Puede hacerlo desde aquí:
Después de estudiar el enlace anterior y seguir eso, he realizado algunos cambios en el código final que he usado y que estoy pegando a continuación:
GENERADOR DE CONJUNTOS DE DATOS:
importcv2
cam = cv2. VideoCapture (0)
detector = cv2. CascadeClassifier ('Clasificadores / face.xml')
i = 0
desplazamiento = 50
name = raw_input ('ingrese su identificación')
mientras que es cierto:
ret, im = cam.read ()
gris = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
caras = detector.detectMultiScale (gris, scaleFactor = 1.2, minNeighbors = 5, minSize = (100, 100), flags = cv2. CASCADE_SCALE_IMAGE)
para (x, y, w, h) en caras:
yo = yo + 1
cv2.imwrite ("dataSet / face." + nombre + '.' + str (i) + ".jpg", gris [desplazamiento y: desplazamiento y + h + desplazamiento x: desplazamiento x + w + desplazamiento])
cv2.rectangle (im, (x-50, y-50), (x + w + 50, y + h + 50), (225, 0, 0), 2)
cv2.imshow ('im', im [desplazamiento y: y + h + desplazamiento, x-desplazamiento: x + w + desplazamiento])
si cv2.waitKey (100) & 0xFF == ord ('q'):
rotura
# romper si el número de muestra es más de 20
elif (i> 20):
rotura
cam.release ()
cv2.destroyAllWindows ()
Creará un conjunto de datos de sus fotos que se utilizará para la autenticación.
ENTRENADOR:
importcv2, os
importar numpy como np
de la imagen de importación PIL
reconocedor = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Clasificadores / face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
ruta = 'conjunto de datos'
def get_images_and_labels (ruta):
image_paths = [os.path.join (ruta, f) para f en os.listdir (ruta)]
# imágenes contendrán imágenes de caras
imágenes =
# etiquetas contendrá la etiqueta que está asignada a la imagen
etiquetas =
para image_path en image_paths:
# Leer la imagen y convertirla a escala de grises
image_pil = Image.open (image_path).convert ('L')
# Convierta el formato de imagen en una matriz numpy
imagen = np.array (image_pil, 'uint8')
# Obtener la etiqueta de la imagen
nbr = int (os.path.split (image_path) [- 1].split (".") [1].replace ("face-", ""))
# nbr = int (''. join (str (ord (c)) para c en nbr))
imprimir nbr
# Detecta el rostro en la imagen
caras = faceCascade.detectMultiScale (imagen)
# Si se detecta un rostro, agregue el rostro a las imágenes y la etiqueta a las etiquetas
para (x, y, w, h) en caras:
images.append (imagen [y: y + h, x: x + w])
tags.append (nbr)
cv2.imshow ("Añadiendo caras al conjunto de entrenamiento…", imagen [y: y + h, x: x + w])
cv2.waitKey (10)
# devuelve la lista de imágenes y la lista de etiquetas
devolver imágenes, etiquetas
imágenes, etiquetas = get_images_and_labels (ruta)
cv2.imshow ('prueba', imágenes [0])
cv2.waitKey (1)
Recognizer.train (imágenes, np.array (etiquetas))
Recognizer.save ('entrenador / entrenador.yml')
cv2.destroyAllWindows ()
DETECTOR
importcv2
importar numpy como np
importar sistema operativo
c = 0
reconocedor = cv2.face.createLBPHFaceRecognizer ()
Recognizer.load ('trainer / trainer.yml')
cascadePath = "Clasificadores / face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
cam = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
fontscale = 1
fontcolor = (255, 255, 255)
mientras que es cierto:
ret, im = cam.read ()
gris = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
caras = faceCascade.detectMultiScale (gris, 1.2, 5)
para (x, y, w, h) en caras:
cv2.rectangle (im, (x-50, y-50), (x + w + 50, y + h + 50), (225, 0, 0), 2)
Id = Recognizer.predict (gris [y: y + h, x: x + w])
si (Id <70):
si (Id == 1):
Id = "Shashank"
elif (Id == 2):
si (c == 0):
Id = "Shivam"
c = c + 1
os.system ("espeak 'Bienvenido Acceso a Shivam concedido'")
demás:
Id = "Shivam"
demás:
Id = "Desconocido"
cv2.putText (im, str (Id), (x, y + h), fontface, fontscale, fontcolor)
cv2.imshow ('im', im)
si cv2.waitKey (10) & 0xFF == ord ('q'):
rotura
cam.release ()
cv2.destroyAllWindows ()
Paso 5: LCD y altavoz
También he utilizado una pantalla LED I2C y un altavoz.
El LED se controla a través de Arduino Mega y su código se proporciona en el código final.
Para Speaker, está conectado con Raspberry Pi y usa eSpeak Utility.
Puede encontrar su referencia aquí:
Paso 6: Pasos finales
Reúna todo y prepárese para la explosión.
Recomendado:
Una máquina de miedo de Halloween que usa un PIR, una calabaza impresa en 3D y el bromista de audio / broma práctico Troll Arduino compatible: 5 pasos
Una máquina de miedo de Halloween que usa un PIR, una calabaza impresa en 3D y el bromista de audio / broma práctico Troll Arduino compatible: el tablero Troll creado por Patrick Thomas Mitchell de EngineeringShock Electronics, y fue totalmente financiado en Kickstarter no hace mucho tiempo. Recibí mi recompensa unas semanas antes para ayudar a escribir algunos ejemplos de uso y construir una biblioteca Arduino en un intento
Robot humanoide basado en Arduino que usa servomotores: 7 pasos (con imágenes)
Robot humanoide basado en Arduino que usa servomotores: Hola a todos, Este es mi primer robot humanoide, hecho con una lámina de espuma de PVC. Está disponible en varios espesores. Aquí, usé 0,5 mm. En este momento, este robot solo puede caminar cuando lo enciendo. Ahora estoy trabajando para conectar Arduino y Mobile a través de Bluetooth
¡Un pequeño sistema de alarma que usa una placa compatible con Arduino súper diminuta !: 10 pasos
¡Un pequeño sistema de alarma que usa una placa compatible con Arduino súper diminuta !: Hola, hoy vamos a hacer un pequeño proyecto genial. Vamos a construir un diminuto dispositivo de alarma que mide la distancia entre él y un objeto frente a él. Y cuando el objeto se mueva más allá de una distancia establecida, el dispositivo le notificará con un
24 - Una bomba que hace tic-tac que te pide que dejes tu teléfono: 5 pasos
24: una bomba que hace tic-tac que le pide que deje su teléfono: 24 (antes conocido como llave) es un temporizador que anima a los usuarios a dejar el teléfono y concentrarse en otras tareas, en lugar de perder el tiempo en el teléfono. Fue diseñado para ser como una bomba para proporcionar un mejor resultado del cambio de comportamiento debido a su int
Programe su PC para que se apague automáticamente asignando a qué hora desea que lo haga: 4 pasos
Programe su PC para que se apague automáticamente asignando la hora a la que desea que haga eso: hey, esa es otra instrucción tomada de mi vida diaria … la última vez tuve que descargar un montón de software a mi PC y tuve que dejar que se descargara durante la noche, no quería mantener mi PC encendida toda la noche después de terminar las descargas y en el s