Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Βήμα 1: Imprimir Todas Las Piezas De La Estructura
- Βήμα 2: Montaje De La Estructura
- Βήμα 3: Montaje De La Electronica
- Βήμα 4: Λογισμικό: Calibraje De Servos
- Βήμα 5: Λογισμικό: Modulos
Βίντεο: HexaWalker: 5 βήματα
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 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 ide 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.
Cabe comentar que la estructura que hemos utilisado para nuestro hexapodo la hemos sacado del robot open source Hexy de ArcBotics.
Aquí el link al codigo:
Προμήθειες
- lipo baterry 7.4V 2700mmAh
- x2 adafruit servo πρόγραμμα οδήγησης
- x18 micro servos SG90s
- κάμερα web playstation eye
-spraberry pi -LM2596 step down -x2 switch -RGB LED
- καλώδια varios
Βήμα 1: Βήμα 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:
υλικό: PLA
συμπλήρωση: 25%
ύψος στρώματος: 0,12
ταχύτητα: 55 mm/s
Βήμα 2: Montaje De La Estructura
Para el montaje de la estructura recomendamos seguir la guía del autor de las piezas 3D:
guía:
Δεν είναι απαραίτητο να λάβετε οδηγίες για την εκτέλεση των λειτουργιών του ρομπότ, το οποίο μπορεί να χρησιμοποιηθεί, μόνοι σας, χρησιμοποιώντας μόνο σας.
Σημείωση: no fijéis los tornillos de los servos antes de calibrarlos en el apartado de código.
Βήμα 3: Montaje De La Electronica
Aquí va una lista de los componentes utilizados y algunos consejos para el montaje.- lipo baterry 7.4V 2700mmAh - x2 adafruit servo driver
- x18 micro servos SG90s
- κάμερα web playstation eye
-σμέουρα πι
-LM2596 αποχωρήστε
-x2 διακόπτες
- LED RGB
- καλώδια varios
Es importante que para conectar 2 adafruits servo drivers, se suelde el bridge A0 de la segunda placa. Σχετικός σύνδεσμος είναι 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: Λογισμικό: 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 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.
"" "joint_key convention: R - right, L - left F - front, M - middle, B - back H - hip, K - knee, A - Ankle key: (channel, minimum_pulse_length, maximum_pulse_length)" "GPIO.setwarnings (Λάθος) 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)}
Βήμα 5: Λογισμικό: Modulos
Módulo de reconocimiento de voz:
Παράλληλα με την εφαρμογή του συστήματος, θα πρέπει να χρησιμοποιήσετε το API της Google "Speech-to-Text". Establecemos un streaming con el cloud de Google, para obtener las respuestas en texto, y así poder proserlas para accionar solo en los casos que nos interesa.
Για να χρησιμοποιήσετε το API που χρειάζεται για να εγγραφείτε για να εγγραφείτε στο Google Cloud, μπορείτε να το διαπιστώσετε για τις πιστώσεις του podent autenticar el robot.
Para guardar las credenciales en una variable in entorno tenemos que ejecutar el siguiente comando (Raspbian):
εξαγωγή 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á proporcionado for google en su page of official, 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, y donde hemos controlado las respuestas para poder comunicarle al robot cuando ha de hacer una acción, o para avisar 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 professional professional com 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.
εισαγωγή numpy ως np
εισαγωγή cv2
cap = cv2. VideoCapture (0)
while (True): ret, frame = cap.read () gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('γκρι', γκρι) αν cv2.waitKey (1) & 0xFF == ord ('q'): διάλειμμα
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. Παραδείγματος χάριν, το πρώτο βήμα για την επίτευξη ενός σεναρίου που δεν επιτρέπει την μετατροπή του χρώματος για το BGR a HSV (formato en el que opencv es capaz de interpretar).
εισαγωγή sys
εισαγωγή numpy ως np εισαγωγή cv2 μπλε = sys.argv [1] πράσινο = sys.argv [2] κόκκινο = sys.argv [3] color = np.uint8 (
Una vez hayamos hecho la conversión de nuestro color deseado, el script no 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 lonicamente uno 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 detector) convertida en una máscara, aislando todos los colores que no se encuentren en ese rango hsv que hemos definido.
εισαγωγή cv2
εισαγωγή numpy ως np
# Διαβάστε την εικόνα - Το 1 σημαίνει ότι θέλουμε την εικόνα σε BGR
img = cv2.imread ('yellow_object.jpg', 1)
# αλλαγή μεγέθους εικόνας σε 20% σε κάθε άξονα
img = cv2.resize (img, (0, 0), fx = 0.2, fy = 0.2) # μετατροπή εικόνας BGR σε εικόνα HSV hsv = cv2.cvtColor (img, cv2. COLOR_BGR2HSV)
# NumPy για δημιουργία συστοιχιών για διατήρηση χαμηλότερου και άνω εύρους
# Το "dtype = np.uint8" σημαίνει ότι ο τύπος δεδομένων είναι ακέραιος 8 bit
lower_range = np.array ([24, 100, 100], dtype = np.uint8)
άνω_περιοχή = np.array ([44, 255, 255], dtype = np.uint8)
# δημιουργήστε μια μάσκα για την εικόνα
μάσκα = cv2.inRange (hsv, lower_range, above_range)
# εμφανίζει τόσο τη μάσκα όσο και την εικόνα δίπλα-δίπλα
cv2.imshow ("μάσκα", μάσκα) cv2.imshow ("εικόνα", img)
# αναμονή για να πατήσει ο χρήστης [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 centroedoas x e e centrodoadas. 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.
# προχωρήστε μόνο εάν η ακτίνα πληροί ένα ελάχιστο μέγεθος
αν ακτίνα> 10: # σχεδιάστε τον κύκλο και το κεντροειδές στο πλαίσιο, # τότε ενημερώστε τη λίστα των σημείων παρακολούθησης cv2.circle (frame, (int (x), int (y)), int (radius), (0, 255, 255), 2) cv2.circle (πλαίσιο, κέντρο, 5, (0, 0, 255), -1) # κέντρο εκτύπωσης συντεταγμένων κύκλου mapObjectPosition (int (x), int (y)) # εάν το led είναι δεν είναι ήδη ενεργοποιημένο, ενεργοποιήστε τη λυχνία LED εάν δεν είναι ledOn: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Object Center συντεταγμένες στα X0 = {0} και Y0 = {1} ". Μορφή (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. 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.
αν (x 280):
εκτύπωση ("[ACTION] GIRAR DERECHA") self.hexa.rotate (offset = -15, επαναλήψεις = 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.
αν ακτίνα <105: self.hexa.walk (κούνια = 40, επαναλήψεις = 1, σηκωμένη = -30, πάτωμα = 50, t = 0,3)
Ένα μέρος που μπορεί να σας βοηθήσει να πραγματοποιήσετε αλλαγές στον τρόπο με τον οποίο μπορείτε να διαμορφώσετε τα χρώματα σας.
Συνιστάται:
Πώς να φτιάξετε 4G LTE Double BiQuade Antenna Εύκολα Βήματα: 3 Βήματα
Πώς να κάνετε εύκολα 4G LTE διπλή κεραία BiQuade Antenna: Τις περισσότερες φορές αντιμετώπισα, δεν έχω καλή ισχύ σήματος στις καθημερινές μου εργασίες. Ετσι. Searchάχνω και δοκιμάζω διάφορους τύπους κεραίας αλλά δεν δουλεύω. Μετά από σπατάλη χρόνου βρήκα μια κεραία που ελπίζω να φτιάξω και να δοκιμάσω, γιατί δεν είναι η βασική αρχή
Σχεδιασμός παιχνιδιών στο Flick σε 5 βήματα: 5 βήματα
Σχεδιασμός παιχνιδιών στο Flick σε 5 βήματα: Το Flick είναι ένας πραγματικά απλός τρόπος δημιουργίας ενός παιχνιδιού, ειδικά κάτι σαν παζλ, οπτικό μυθιστόρημα ή παιχνίδι περιπέτειας
Σύστημα ειδοποίησης αντίστροφης στάθμευσης αυτοκινήτου Arduino - Βήματα βήμα προς βήμα: 4 βήματα
Σύστημα ειδοποίησης αντίστροφης στάθμευσης αυτοκινήτου Arduino | Βήματα βήμα προς βήμα: Σε αυτό το έργο, θα σχεδιάσω ένα απλό κύκλωμα αισθητήρα στάθμευσης αντίστροφης στάθμευσης αυτοκινήτου Arduino χρησιμοποιώντας Arduino UNO και υπερηχητικό αισθητήρα HC-SR04. Αυτό το σύστημα ειδοποίησης αυτοκινήτου με βάση το Arduino μπορεί να χρησιμοποιηθεί για αυτόνομη πλοήγηση, κλίμακα ρομπότ και άλλα εύρη
Ανίχνευση προσώπου στο Raspberry Pi 4B σε 3 βήματα: 3 βήματα
Ανίχνευση προσώπου στο Raspberry Pi 4B σε 3 βήματα: Σε αυτό το Instructable πρόκειται να πραγματοποιήσουμε ανίχνευση προσώπου στο Raspberry Pi 4 με το Shunya O/S χρησιμοποιώντας τη βιβλιοθήκη Shunyaface. Το Shunyaface είναι μια βιβλιοθήκη αναγνώρισης/ανίχνευσης προσώπου. Το έργο στοχεύει στην επίτευξη της ταχύτερης ταχύτητας ανίχνευσης και αναγνώρισης με
DIY Vanity Mirror σε εύκολα βήματα (χρησιμοποιώντας φώτα λωρίδας LED): 4 βήματα
DIY Vanity Mirror σε εύκολα βήματα (χρησιμοποιώντας φώτα λωρίδας LED): Σε αυτήν την ανάρτηση, έφτιαξα ένα DIY Vanity Mirror με τη βοήθεια των λωρίδων LED. Είναι πραγματικά υπέροχο και πρέπει να τα δοκιμάσετε επίσης