Innehållsförteckning:
- Tillbehör
- Steg 1: Steg 1: Imprimir Todas Las Piezas De La Estructura
- Steg 2: Montaje De La Estructura
- Steg 3: Montaje De La Electronica
- Steg 4: Programvara: Calibraje De Servos
- Steg 5: Programvara: moduler
Video: HexaWalker: 5 steg
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-09 20:34
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 idé era hacer un robot amistoso que reconociera ordenes de voz y pueda seguir mediante la cámara una pelota. Algo así como una "mascota" rebotica.
Vi kan kommentera det som vi kan använda för att använda hexapodo till hemos sacado för robot med öppen källkod Hexy de ArcBotics.
Aquí el link al codigo:
Tillbehör
- lipobatteri 7,4V 2700mmAh
- x2 adafruit servodriver
- x18 mikroservos SG90s
- webbkamera playstation öga
-raspberry pi -LM2596 steg ner -x2 switchar -RGB LED
- kablar varios
Steg 1: Steg 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:
material: PLA
fyllning: 25%
lagerhöjd: 0,12
hastighet: 55 mm/s
Steg 2: Montaje De La Estructura
Para el montaje de la estructura recomendamos seguir la guía del author de las piezas 3D:
guía:
No es necesario seguir las instrucciones estrictamente para el buen funcionamiento del robot, ya que en nuestro caso, solo las hemos utilizado como ayuda.
Notera: no fijéis los tornillos de los servos antes de calibrarlos en el apartado de código.
Steg 3: Montaje De La Electronica
Aqua va una lista de los componentes utilizados and algunos consejos para el montaje. - lipo baterry 7.4V 2700mmAh - x2 adafruit servo driver
- x18 mikroservos SG90s
- webbkamera playstation öga
-Raspberry Pi
-LM2596 steg ner
-x2 omkopplare
- RGB LED
- kablar varios
Es importante que para conectar 2 adafruits servo drivers, 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 configar los mas adelante en el código. Explicado en el apartado de código.
Steg 4: Programvara: Calibraje De Servos
Antes de nada se tiene que configurar los pulsos máximos y minimo de vuestros servos así como los pines donde estén conectados en el archivo 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 signo.
"" "gemensam_nyckelkonvention: R - höger, L - vänster F - fram, M - mitten, B - bak H - höft, K - knä, A - Ankelnyckel: (kanal, minsta_puls_längd, maximal_puls_längd)" "" GPIO.setwarnings (Falskt) GPIO.setmode (GPIO. BOARD)
joint_properties = {
'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)}
Steg 5: Programvara: moduler
Módulo de reconocimiento de voz:
Para la implementación de éste módulo hemos hecho úso de la API for Google 'Speech-to-Text'. Det går att streama med moln från Google, för att vi kan svara på text och skriva ut processer för att hantera en enskild lösning.
För podern kan vi använda API: et för att registrera en Google Cloud och kan ladda ner autentiska robotar.
Para guardar las credenciales en una variable de entorno tenemos que ejecutar el siguiente comando (Raspbian):
exportera GOOGLE_APPLICATION_CREDENTIALS = "/tu/ruta/hacia/las/credenciales.json"
Du kan också använda den här typen av API för tal-till-text.
El código for realizar el streaming está proporcionado por Google en su page oficial, muy bien documentado:
La función principal del streaming es 'listen_print_loop', la encargada de decidir cual es la respuesta que se aproxima más al input recibido, and donde hemos controlado las respuestas for poder comunicarle al robot cuando ha de hacer una acción, o para avisarle que el comando 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 la instalación de un professionel como es 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.
importera numpy som np
importera cv2
cap = cv2. VideoCapture (0)
medan (True): ret, frame = cap.read () grå = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('grå', grå) om cv2.waitKey (1) & 0xFF == ord ('q'): bryt
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).
importera sys
import numpy som np import cv2 blå = sys.argv [1] grön = sys.argv [2] röd = sys.argv [3] färg = 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 unnicamente 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 definido.
importera cv2
importera numpy som np
# Läs bilden - 1 betyder att vi vill ha bilden i BGR
img = cv2.imread ('yellow_object.jpg', 1)
# ändra storlek till 20% i varje axel
img = cv2.resize (img, (0, 0), fx = 0.2, fy = 0.2) # konvertera BGR -bild till en HSV -bild hsv = cv2.cvtColor (img, cv2. COLOR_BGR2HSV)
# NumPy för att skapa matriser för att hålla lägre och övre intervall
# “Dtype = np.uint8” betyder att datatypen är ett 8 -bitars heltal
lägre område = np.array ([24, 100, 100], dtype = np.uint8)
upper_range = np.array ([44, 255, 255], dtype = np.uint8)
# skapa en mask för bilden
mask = cv2.inRange (hsv, lower_range, upper_range)
# visa både masken och bilden sida vid sida
cv2.imshow ('mask', mask) cv2.imshow ('image', img)
# vänta tills användaren trycker på [ESC]
medan (1): k = cv2.waitKey (0) if (k == 27): bryt 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 minimo y máximo de color hsv, que este sea capaz de encontrar las coordenadas x e y del centro de nuest. 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.
# fortsätt bara om radien uppfyller en minsta storlek
om radie> 10: # rita cirkeln och centroid på ramen, # uppdatera sedan listan över spårade punkter cv2.cirkel (ram, (int (x), int (y)), int (radie), (0, 255, 255), 2) cv2.circle (ram, centrum, 5, (0, 0, 255), -1) # skriv ut centrum för cirkelkoordinater mapObjectPosition (int (x), int (y)) # om lysdioden är inte redan tänd, tänd lysdioden om den inte ledOn: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Object Center samordnar vid X0 = {0} och 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 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: OBJECT TRACKING Llegamos al paso final. Om du vill göra fler anteriores kan du välja en lista över poderkonfigurationer och funktioner för en ny funktionalitet. 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.
om (x 280):
print ("[ACTION] GIRAR DERECHA") self.hexa.rotate (offset = -15, repetitions = 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 radio y por tanto más cerca estará nuestro robot en conseguir su objetivo.
om radie <105: self.hexa.walk (swing = 40, repetitioner = 1, höjd = -30, golv = 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.
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Steg-för-steg-utbildning i robotik med ett kit: 6 steg
Steg-för-steg-utbildning i robotik med ett kit: Efter ganska många månader av att bygga min egen robot (se alla dessa), och efter att två gånger ha misslyckats med delar, bestämde jag mig för att ta ett steg tillbaka och tänka om min strategi och riktning. De flera månaders erfarenhet var ibland mycket givande och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)