Sisukord:
- Tarvikud
- 1. samm: 1. samm: Imprimir Todas Las Piezas De La Estructura
- 2. samm: Montaje De La Estructura
- 3. samm: Montaje De La Electronica
- 4. samm: tarkvara: Calibraje De Servos
- Samm 5: Tarkvara: Modulos
Video: HexaWalker: 5 sammu
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-09 20:34
Hemos echo un grupo de estudiantes de la UAB and robot hexapodo autonomo with a webcam con micrófono mediante la cual puedes interactuar con el. La idee ajastu hacer un robot amistoso que reconociera ordenes de voz y pueda seguir mediante la cámara una pelota. Algo así como una "mascota" rebotica.
Cabe kommentaar que la estructura que hemos utilizado para nuestro hexapodo la hemos sacado del robot open source Hexy de ArcBotics.
Veebilehe link:
Tarvikud
- lipoakud 7.4V 2700mmAh
- x2 adafruit servojuht
- x18 mikro -servot SG90
- veebikaamera playstation eye
-vaarikas pi -LM2596 astuda alla -x2 lülitid -RGB LED
- kaabli variatsioonid
1. samm: 1. samm: 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:
materjal: PLA
täitmine: 25%
kihi kõrgus: 0,12
kiirus: 55 mm/s
2. samm: Montaje De La Estructura
Para el montaje de la estructura soovituslik segu guira del autor de las piezas 3D:
guia:
No es vajadus seguir las instruktsions estrictamente para el buen funcionamiento del robot, ya que en nuestro caso, solo las hemos utilizado como ayuda.
Märkus: no fijéis los tornillos de los servos antes de calibrarlos en el apartado de código.
3. samm: Montaje De La Electronica
Aqua va una list de los komponentes utilizados y algunos consejos para el montaje.- lipo patareid 7.4V 2700mmAh - x2 adafruit servo draiver
- x18 mikro -servot SG90
- veebikaamera playstation eye
-vaarika pi
-LM2596 astuge alla
-x2 lülitid
- RGB LED
- kaabli variatsioonid
Oluline on see, et teil on 2 adafruits servo draiverit, see on sild A0 de la segunda placa. See 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 código. Explicado en el apartado de código.
4. samm: tarkvara: Calibraje De Servos
Antes de nada se tiene que configurar los pulsos máximos y mínimo de vuestros servos así como los pines donde estén conectados en el archivo hexapod_core.py.
cada servo esta identifikatsioon 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 signo.
"" "ühiste võtmete kokkulepe: R - parem, L - vasak F - ees, M - keskel, B - taga H - puusa, K - põlv, A - pahkluu võti: (kanal, minimaalne_impulssipikkus, maksimaalne_pulsi_pikkus)" "" GPIO.setwarnings [Vale] GPIO.setmode (GPIO. BOARD)
ühisomandid = {
„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)}
Samm 5: Tarkvara: Modulos
Reconocimiento de voz:
Google'i rakenduse „Kõne tekstiks” rakenduse rakendamise rakenduse rakendamiseks ja rakendamiseks. Establecemos un streaming on Google Cloud, para obtener las respuestas en texto, y así poder processarlas for accionar solo and los casos que nos interesa.
Google Pod, Google Desk, y de este descargar las credenciales para poder autenticar el robot.
Para Guardar las credenciales ja una variable de entorno tenemos que ejecutar el siguiente comando (raspbian):
eksport 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.
El Código para realizar el streaming está proportsionado por google en su pagina official, muy bien documentado:
Mängu põhivõimalus voogesituse ja kuulamisprindi loo jaoks de voz no es reconocido, para que el robot realice un movimiento que simula no haber entendido al usuario.
El Código adaptado se encuentra en el repositorio de git Hexawalker
github.com/RLP2019/HEXAWALKER/blob/master/…
PASO 1: INSTALL OPENCVHemos seguido instación de un professional como es Adrian Rosebrock, veebis:
PASO 2: PROBAR LA CAMARA Esialgne ülesanne, mis on installitud 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.
import numpy np -na
import cv2
cap = cv2. VideoCapture (0)
samas (tõene): ret, frame = cap.read () hall = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY) cv2.imshow ('raam', raam) cv2.imshow ('hall', hall), kui cv2.waitKey (1) & 0xFF == ord ('q'): vaheaeg
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 permita convertir un color en orden BGR a HSV (formato en el que opencv es capaz de interpretar).
impordi süsteem
import numpy kui np import cv2 sinine = sys.argv [1] roheline = sys.argv [2] punane = sys.argv [3] värv = 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 problem 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 definido.
import cv2
import numpy np -na
# Lugege pilti - 1 tähendab, et tahame pilti BGR -is
img = cv2.imread ('kollane_objekt.jpg', 1)
# muutke kujutise suurust 20% -ni igal teljel
img = cv2.resize (img, (0, 0), fx = 0.2, fy = 0.2) # teisenda BGR -pilt HSV -kujutiseks hsv = cv2.cvtColor (img, cv2. COLOR_BGR2HSV)
# NumPy, et luua massiive alumise ja ülemise vahemiku hoidmiseks
# „Dtype = np.uint8” tähendab, et andmetüüp on 8 -bitine täisarv
madalam_vahemik = np.massiiv ([24, 100, 100], dtype = np.uint8)
ülemine_vahemik = np.massiiv ([44, 255, 255], dtype = np.uint8)
# looge pildile mask
mask = cv2.inRange (hsv, alumine_vahemik, ülemine_vahemik)
# kuvab kõrvuti nii maski kui ka pildi
cv2.imshow ('mask', mask) cv2.imshow ('pilt', img)
# oodake, kuni kasutaja vajutab nuppu [ESC]
samas (1): k = cv2.waitKey (0) if (k == 27): break cv2.destroyAllWindows ()
PASO 4. En este caso lo que crearemos será un script para que cuando el radio de nuestro objeto sea May a 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.
# jätkake ainult siis, kui raadius vastab minimaalsele suurusele
kui raadius> 10: # joonista raamile ring ja tsentroid, siis uuenda jälgitavate punktide loendit cv2.circle (frame, (int (x), int (y)), int (radius), (0, 255), 255), 2) cv2.ring (raam, keskpunkt, 5, (0, 0, 255), -1) # ringikeskuse koordinaatide printimise keskus mapObjectPosition (int (x), int (y)) # kui LED on ei ole juba sisse lülitatud, lülitage LED sisse, kui ei ole LED On: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Objektikeskus koordineerib punktides X0 = {0} ja Y0 = {1} ". Vorming (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 será girar a la derecha nuestro robot, girar a la izquierda o bien no realizar ningún movimiento al no salir por ningún límite.
PASO 5: OBJEKTIDE JÄLGIMINE Llegamos al paso final. Una vez realizados los anteriores puntos, estaremos listos para poder configurar un par de parámetros y poner a funcionar nuestra detección. 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.
kui (x 280):
print ("[ACTION] GIRAR DERECHA") self.hexa.rotate (nihe = -15, kordused = 1)
Lo que estamos realizando con los condicionales anteriores 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 variable 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 ¡, más grande será su raadio ja por tanto más cerca estará nuestro robot en decguir su objetivo.
kui raadius <105: ise.heksakõnd (kõik = 40, kordused = 1, tõstetud = -30, põrand = 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.
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
4 sammu aku sisemise takistuse mõõtmiseks: 4 sammu
4 sammu aku sisemise takistuse mõõtmiseks: Siin on 4 lihtsat sammu, mis aitavad mõõta taigna sisemist takistust