Sommario:
- Forniture
- Passaggio 1: Passaggio 1: Imprimir Todas Las Piezas De La Estructura
- Fase 2: Montaggio De La Estructura
- Passaggio 3: montaggio dell'elettronica
- Fase 4: Software: Calibraje De Servos
- Passaggio 5: Software: Modulos
Video: HexaWalker: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Hemos echo un grupo de estudiantes de la UAB un robot hexapodo autonomo con una webcam con micrófono mediante la cual puedes interactuar con el. La idea era hacer un robot amistoso que reconociera ordenes de voz y pueda seguir mediante la cámara una pelota. Algo así come una "mascota" rebotica.
Come commentare la struttura degli emoticon utilizzati per il nuovo esame degli emoticon del robot open source Hexy di ArcBotics.
Aquí el link al codigo:
Forniture
- batteria lipo 7.4V 2700mmAh
- servo driver x2 adafruit
- x18 micro servi SG90s
- occhio webcam playstation
-raspberry pi -LM2596 step down -x2 interruttori - LED RGB
- cavi vari
Passaggio 1: Passaggio 1: Imprimir Todas Las Piezas De La Estructura
Es necesario imprimir todas las piezas.
Aqui podreis encontrar todos los archivos.stl:
Cabe destacar que las hemos impreso con las siguientes propiedades:
materiale: PLA
riempimento: 25%
altezza dello strato: 0,12
velocità: 55 mm/s
Fase 2: Montaggio De La Estructura
Para el montaje de la estructura recomendamos seguir la guida dell'autore de las piezas 3D:
guida:
No es necesario seguir las instrucciones estrictamente para el buen funcionamiento del robot, ya que en nuestro caso, solo las hemos utilizado como ayuda.
Nota: no fijéis los tornillos de los servos antes de calibrarlos en el apartado de código.
Passaggio 3: montaggio dell'elettronica
Acquisisci una lista di componenti utilizados e algunos consejos per il montaggio.- lipo batterry 7.4V 2700mmAh - x2 adafruit servo driver
- x18 micro servi SG90s
- occhio webcam playstation
-lampone pi
-LM2596 scendere
-x2 interruttori
- LED RGB
- cavi vari
Es importante que para conectar 2 adafruits servo driver, se suelde el bridge A0 de la segunda placa. En este link esta detallado: https://learn.adafruit.com/16-channel-pwm-servo-d… Respecto a los servos el orden en el que conectes los pines es indiferente ya que tendrás que configurar los mas adelante en el codice. Explicado en el apartado de código.
Fase 4: Software: Calibraje De Servos
Prima di tutto se vuoi configurare i pulsanti massimi e minimi di tutti i servi come i pini e tutti i collegamenti nell'archivio hexapod_core.py.
cada servo esta identificado según la leyenda de abajo, por cada servo se tiene que indicar, el pin de conexión al servo driver, pulso mínimo, pulso máximo y el ultimo parámetro es por si el servo esta funcionando al revés de como debería, solo tenies que cambiarlo de sign.
Convenzione """ joint_key: R - destra, L - sinistra F - anteriore, M - centrale, B - posteriore H - anca, K - ginocchio, A - Tasto caviglia: (canale, lunghezza_minima_impulso, lunghezza_massima_impulso) """ GPIO.setwarnings (Falso) GPIO.setmode(GPIO. BOARD)
proprietà_congiunte = {
'LFH': (0, 248, 398, -1), 'LFK': (1, 195, 492, -1), 'LFA': (2, 161, 580, -1), 'RFH': (31, 275, 405, 1), 'RFK': (30, 260, 493, -1), 'RFA': (29, 197, 480, -1), 'LMH': (3, 312, 451, -1), 'LMK': (4, 250, 520, -1), 'LMA': (5, 158, 565, -1), 'RMH': (28, 240, 390, 1), 'RMK': (27, 230, 514, -1), 'RMA': (26, 150, 620, -1), 'LBH': (6, 315, 465, 1), 'LBK': (8, 206, 498, -1), 'LBA': (7, 150, 657, -1), 'RBH': (25, 320, 480, 1), 'RBK': (24, 185, 490, -1), 'RBA': (23, 210, 645, -1), 'N': (18, 150, 650, 1) }
Passaggio 5: Software: Modulos
Modulo di riconoscimento della voce:
Per l'implementazione di questo modulo hemos hecho anche per l'API di Google 'Speech-to-Text'. Establecemos un streaming con el cloud de Google, para obtener las respuestas en texto, y así poder procesarlas para accionar solo en los casos que nos interesa.
Per poter utilizzare questa API è necessario tenere un progetto registrato su Google Cloud, ed è necessario scaricare le credenziali per autenticare il robot.
Per salvare le credenziali in una variabile di entorno tenemos que ejecutar el siguiente comando (Raspbian):
esporta GOOGLE_APPLICATION_CREDENTIALS="/tu/ruta/hacia/las/credenciales.json"
Una vez hemos realizado esta comando ya podemos hacer úso de la API de speech-to-text.
Il codice per la realizzazione dello streaming è proporzionato da Google nella pagina ufficiale, molto più documentato:https://cloud.google.com/speech-to-text/docs/stre…
La funzione principale dello streaming es 'listen_print_loop', l'encargada de decir cual es la risposta che se aproxima más al input recibido, y donde hemos controlado les respuestas para poder al robot cuando hacer una azione, o il comando avisarle que que de voz no es reconocido, para que el robot relice un movimiento que simula no haber entendido al usuario.
El codice adattato se encuentra en el repository de git Hexawalker
github.com/RLP2019/HEXAWALKER/blob/master/…
PASO 1: INSTALL OPENCVHemos seguido la instalación de un profesional come Adrian Rosebrock, en su pàgina web:
PASO 2: PROBAR LA CAMARA Primero de todo una vez instalado opencv, lo que vamos a hacer es un pequeño script en python para probar la camara. Para ello haremos que se abran dos ventanas, una con la imagen original y otra con la imagen en blanco y negro.
importa numpy come np
importa cv2
cap = cv2. VideoCapture(0)
while(True): ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) cv2.imshow('frame', frame) cv2.imshow('gray', gray) if cv2.waitKey (1) & 0xFF == ord('q'): break
cap.release()
cv2.destroyAllWindows()
PASO 3: DETECCIÓN DEL COLOR CON OPENCV Para el siguiente paso lo que vamos a realizar es una detección de color. Para ello, primero de todo vamos a realizar un script que nos allowa convertir un color en orden BGR a HSV (formato en el que opencv es capaz de interpretar).
sistema di importazione
import numpy as np import cv2 blue = sys.argv[1] green = sys.argv[2] red = sys.argv[3] color = np.uint8(
Una vez hayamos hecho la conversión de nuestro color deseado, el script nos printará por consola el límite por debajo y el límite por arriba, el cual nos servirá para que la detección tenga una gama de colores entre dos colores hsv y no únicamente uno, lo cual dificultaría la detección por problemas de luz o contraste.
El siguiente paso es con una imagen previamente realizada, crear otro script el cual nos servirá para probar el paso anterior. Lo que nos mostrará como resultado será la imagen que nosotros le pasemos (con el color u objeto a detectar) convertida en una máscara, aislando todos los colores que no se encuentren en ese rango hsv que hemos definedo.
importa cv2
importa numpy come np
# Leggi la foto - L'1 significa che vogliamo l'immagine in BGR
img = cv2.imread('yellow_object.jpg', 1)
# ridimensiona l'immagine al 20% in ogni asse
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2) # converte l'immagine BGR in un'immagine HSV hsv = cv2.cvtColor(img, cv2. COLOR_BGR2HSV)
# NumPy per creare array per contenere l'intervallo inferiore e superiore
# Il "dtype = np.uint8" significa che il tipo di dati è un intero a 8 bit
intervallo_inferiore = np.array([24, 100, 100], dtype=np.uint8)
intervallo_superiore = np.array([44, 255, 255], dtype=np.uint8)
# crea una maschera per l'immagine
mask = cv2.inRange(hsv, intervallo_inferiore, intervallo_superiore)
# mostra sia la maschera che l'immagine fianco a fianco
cv2.imshow('maschera', maschera) cv2.imshow('immagine', img)
# attendi che l'utente prema [ESC]
while(1): k = cv2.waitKey(0) if(k == 27): break cv2.destroyAllWindows()
PASO 4: POSICIONAMIENTO DEL OBJETO En este paso probaremos que una vez la camara se encuentre en funcionamiento y hayamos configurado nuestro rango mínimo y máximo de color hsv, que este sea capaz de encontrar las coordenadas de nue y obje del centro. En este caso lo que crearemos será un script para que cuando el radio de nuestro objeto sea mayor a 10, dibuje un circulo sobre el objeto y nos vaya mostrando por pantalla la posición en tiempo real sus coordenadas x e y.
# procedi solo se il raggio soddisfa una dimensione minima
se raggio > 10: # disegna il cerchio e il baricentro sulla cornice, # quindi aggiorna la lista dei punti tracciati cv2.circle(frame, (int(x), int(y)), int(radius), (0, 255, 255), 2) cv2.circle(frame, center, 5, (0, 0, 255), -1) # stampa le coordinate del centro del cerchio mapObjectPosition(int(x), int(y)) # se il led è non è già acceso, accende il LED se non è ledOn: GPIO.output(redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Object Center coordina a X0 = {0} e Y0 = {1}".format(x, y))
Con esto lo que vamos a conseguir es en el siguiente paso poder jugar con las coordenadas para establecer los límites de lo que vamos girar a la derecha nuestro robot, girar a la izquierda o bien no realizar ningún movimiento al no límite por ning.ún
PASO 5: INSEGUIMENTO DEGLI OGGETTI Llegamos al paso finale. Una volta realizzati i punti precedenti, è possibile visualizzare gli elenchi per il monitoraggio e configurare i parametri e il rilevamento di una nuova funzione. Para ello utilizaremos como anteriormente hemos dicho, los parámetros del color hsv máximo y mínimo para poder crear la máscara y dtectar el objeto.
colorLower = (-2, 100, 100)
colorUpper = (18, 255, 255)
También necesitaremos las coordenadas x e y para el límite derecho y el límite izquierdo elegidos en el paso anterior.
se (x 280):
print ("[AZIONE] GIRAR DERECHA") self.hexa.rotate(offset = -15, ripetizioni = 1)
Lo que stamos realizando con los condizionali anteriori es decir que si nuestra coordenada x es más pequeña que 220, gire a la izquierda. En el caso de que sea más grande, gire a la derecha.
Para el caso en el que se quiera avanzar hacia adelante lo que se realizará es utilizar la variabile dónde calculamos el radio para marcar otro límite en caso de proximidad de la pelota. Cuanto mas cerca este la pelota de nuestro robot ¡, più grande será su radio e tanto più cerca estará nuestro robot en conseguir su objetivo.
se raggio < 105: self.hexa.walk(swing = 40, ripetizioni = 1, raise = -30, floor = 50, t = 0.3)
A partir de este punto el programador ya es libre de realizar modificaciones e ir jugando con parámetros y colores.
Consigliato:
Come realizzare un'antenna doppia biQuade 4G LTE Semplici passaggi: 3 passaggi
Come realizzare un'antenna doppia biQuade 4G LTE Semplici passaggi: La maggior parte delle volte che ho affrontato, non ho una buona potenza del segnale per i miei lavori quotidiani. Così. Cerco e provo diversi tipi di antenna ma non funziona. Dopo aver perso tempo ho trovato un'antenna che spero di realizzare e testare, perché è principio costruttivo non
Rilevamento del volto su Raspberry Pi 4B in 3 passaggi: 3 passaggi
Rilevamento del volto su Raspberry Pi 4B in 3 passaggi: In questo Instructable eseguiremo il rilevamento del volto su Raspberry Pi 4 con Shunya O/S utilizzando la libreria Shunyaface. Shunyaface è una libreria di riconoscimento/rilevamento facciale. Il progetto mira a raggiungere la massima velocità di rilevamento e riconoscimento con
Specchio per il trucco fai-da-te in semplici passaggi (usando le strisce luminose a LED): 4 passaggi
Specchio per il trucco fai-da-te in semplici passaggi (usando le strisce luminose a LED): in questo post, ho realizzato uno specchio per il trucco fai-da-te con l'aiuto delle strisce LED. Sono davvero fantastici e devi provarli anche tu
Gioca a Doom sul tuo iPod in 5 semplici passaggi!: 5 passaggi
Gioca a Doom sul tuo iPod in 5 semplici passaggi!: una guida passo passo su come eseguire il dual-boot di Rockbox sul tuo iPod per giocare a Doom e a dozzine di altri giochi. È qualcosa di veramente facile da fare, ma molte persone rimangono stupite quando mi vedono giocare a doom sul mio iPod e si confondono con le istruzioni
Come installare plugin in WordPress in 3 passaggi: 3 passaggi
Come installare plugin in WordPress in 3 passaggi: In questo tutorial ti mostrerò i passaggi essenziali per installare il plugin wordpress sul tuo sito web. Fondamentalmente puoi installare i plugin in due modi diversi. Il primo metodo è tramite ftp o tramite cpanel. Ma non lo elencherò perché è davvero completo