Sadržaj:
- Supplies
- Korak 1: Korak 1: Imprimir Todas Las Piezas De La Estructura
- Korak 2: Montaje De La Estructura
- Korak 3: Montaje De La Electronica
- Korak 4: Softver: Calibraje De Servos
- Korak 5: Softver: Modulos
Video: HexaWalker: 5 koraka
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-09 20:34
Hemos echo un grupo de estudiantes de la UAB and robot hexapodo autonomo with una webcam con micrófono mediaan la cual puedes interactar 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í como una "mascota" rebotica.
Komentar za estrukturu hemosa koristi nuestro hexapodo la hemos saado del robota otvorenog koda Hexy de ArcBotics.
Aquí el link al codigo:
Supplies
- Lipo baterija 7.4V 2700mmAh
- x2 adafruit servo upravljački program
- x18 mikro servo pogoni SG90s
- web kamera playstation eye
-raspberry pi -LM2596 step down -x2 prekidači -RGB LED
- različiti kablovi
Korak 1: Korak 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:
materijal: PLA
ispuna: 25%
visina sloja: 0,12
brzina: 55 mm/s
Korak 2: Montaje De La Estructura
Para el montaje de la estructura recomendamos seguir la guía autora autora 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.
Napomena: no fijéis los tornillos de los servos antes de calibrarlos en el apartado de código.
Korak 3: Montaje De La Electronica
Na popisu se nalaze komponente koje koriste komponente i koje su usklađene za instalaciju.- Lipo baterry 7.4V 2700mmAh - x2 adavorirani servo upravljački program
- x18 mikro servo pogoni SG90s
- web kamera playstation eye
-mašina pi
-LM2596 siđite
-x2 prekidači
- RGB LED
- različiti kablovi
Važno je spojiti 2 adaptera servo upravljačkih programa, koji se nalaze na mostu A0 sa lagunom za postavljanje. En link esta detalado: 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.
Korak 4: Softver: 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 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.
"" "konvencija zajedničkog ključa: R - desno, L - lijevo F - prednja, M - srednja, B - zadnja H - kuk, K - koljeno, A - Ključ za gležanj: (kanal, minimalna_dužina_pulsa, maksimalna_dužina_pulsa)" "" GPIO.setwarnings (Netačno) GPIO.setmode (GPIO. BOARD)
zajednička svojstva = {
'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)}
Korak 5: Softver: Modulos
Módulo de reconocimiento de voz:
Kako biste implementirali ovaj modul koji je u funkciji API-ja Google-a 'Speech-to-Text'. Establecemos un streaming with el cloud iz Google -a, za pronalaženje respuestas u tekstu, i kao podprocesor za akciju solo ili los casos que interese.
Ako želite podnijeti zahtjev za API koji vam je potreban, potrebno je provesti registraciju na Google Cloudu, a vi želite preuzeti vjerodajnice za poder autentičnog robota.
Para guardar las credenciales en una variable de entorno tenemos que ejecutar el siguiente comando (Raspbian):
izvezi GOOGLE_APPLICATION_CREDENTIALS = "/tu/ruta/hacia/las/credenciales.json"
Ne možete realizirati ovu komandu s podešavanjem vašeg API-ja za govor u tekst.
El código para realizar el streaming está proporcionado na google-u na službenoj stranici, sa više dokumenata:
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 avisarle que el coo 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: INSTALIRAJTE OTVORENOHemos je postavio profesionalnu zajednicu s Adrianom Rosebrockom, na web stranici:
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.
uvoz numpy kao np
import cv2
cap = cv2. VideoCapture (0)
while (Tačno): ret, frame = cap.read () sivo = cv2.cvtColor (okvir, cv2. COLOR_BGR2GRAY) cv2.imshow ('okvir', okvir) cv2.imshow ('sivo', sivo) ako je cv2.waitKey (1) & 0xFF == ord ('q'): prekid
cap.release ()
cv2.destroyAllWindows ()
PASO 3: DETECCIÓN DEL COLOR CON OPENCV Para el siguiente paso lo que vamos and realizar es una detección de color. Para ello, primero de todo vamos a realizator skripte que nos permita converterr color and orden BGR a HSV (format en el que opencv es mogućnost interpretacije).
import sys
uvoz numpy kao np uvoz cv2 plavo = sys.argv [1] zeleno = sys.argv [2] crveno = sys.argv [3] boja = 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 in 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
uvoz numpy kao np
# Pročitajte sliku - 1 znači da želimo sliku u BGR -u
img = cv2.imread ('yellow_object.jpg', 1)
# promijenite veličinu slike na 20% u svakoj osi
img = cv2.resize (img, (0, 0), fx = 0,2, fy = 0,2) # pretvoriti BGR sliku u HSV sliku hsv = cv2.cvtColor (img, cv2. COLOR_BGR2HSV)
# NumPy za kreiranje nizova za držanje donjeg i gornjeg raspona
# "Dtype = np.uint8" znači da je tip podataka 8 -bitni cijeli broj
donji_opseg = np.array ([24, 100, 100], dtype = np.uint8)
gornji_razpon = np.array ([44, 255, 255], dtype = np.uint8)
# kreirajte masku za sliku
maska = cv2.inRange (hsv, donji_donji, gornji_dodat)
# prikazuje i masku i sliku jednu pored druge
cv2.imshow ('maska', maska) cv2.imshow ('slika', img)
# čekajte da korisnik pritisne [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 funkcionamiento y hayamos configurado nuestro rango mínimo y máximo de color hsv, que este sea capaz de encontrar las coordenadas x e y delto centro de nuestro Objects 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 objectto y nos vaya mostrando por pantalla la pozición en tiempo real sus coordenadas x e y.
# nastavite samo ako radijus zadovoljava minimalnu veličinu
ako je radijus> 10: # nacrtajte krug i centroid na okviru, # zatim ažurirajte listu praćenih tačaka cv2.circle (okvir, (int (x), int (y)), int (radijus), (0, 255, 255), 2) cv2.circle (okvir, centar, 5, (0, 0, 255), -1) # centar za štampanje koordinata kruga mapObjectPosition (int (x), int (y)) # ako je LED dioda još nije uključeno, uključite LED ako nije LEDOn: GPIO.izlaz (crveno, GPIO. HIGH) ledOn = Istinska def mapObjectPosition (x, y): print ("[INFO] Centar objekata koordinira na X0 = {0} i 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
PASO 5: PRAĆENJE OBJEKATA Llegamos al paso final. Una vez realizados los anteriores puntos, estaremos listos para poder configurar un par de parámetros y poner a funkcionar nuestra detección. Para ello utilizaremos como anteriormente hemos dicho, los parámetros del color hsv maximo y minimo 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.
if (x 280):
ispis ("[AKCIJA] GIRAR DERECHA") self.hexa.rotate (pomak = -15, ponavljanja = 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 realizuje i koristi varijablu 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 i por tanto más cerca estará nuestro robot en conciguir su objektivo.
ako je radijus <105: self.hexa.walk (zamah = 40, ponavljanja = 1, podignuto = -30, pod = 50, t = 0,3)
Deo de este punto el programador es libre de realizar modificaciones e jugando con parámetros y colores.
Preporučuje se:
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način da napravite igru, posebno nešto poput zagonetke, vizuelnog romana ili avanturističke igre
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: 3 koraka
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: U ovom uputstvu ćemo izvršiti otkrivanje lica na Raspberry Pi 4 sa Shunya O/S koristeći biblioteku Shunyaface. Shunyaface je biblioteka za prepoznavanje/otkrivanje lica. Cilj projekta je postići najbržu brzinu otkrivanja i prepoznavanja sa
Kako napraviti brojač koraka?: 3 koraka (sa slikama)
Kako napraviti brojač koraka?: Nekada sam se dobro snašao u mnogim sportovima: hodanje, trčanje, vožnja bicikla, igranje badmintona itd. Volim jahanje da bih brzo putovao. Pa, pogledaj moj trbušni trbuh … Pa, u svakom slučaju, odlučujem ponovo početi vježbati. Koju opremu treba pripremiti?
Brojač koraka - Mikro: Bit: 12 koraka (sa slikama)
Brojač koraka - Micro: Bit: Ovaj projekat će biti brojač koraka. Za mjerenje koraka koristit ćemo senzor akcelerometra koji je ugrađen u Micro: Bit. Svaki put kada se Micro: Bit protrese, broju ćemo dodati 2 i prikazati ga na ekranu
Broj koraka / koraka: 3 koraka
পেনড্রাইভ / মেমোরি কার্ডে ভাইরাসের ভাইরাসের হারিয়ে সমাধান সমাধান সমাধান সমাধান সমাধান পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি এখন এখন এখন।।।।।। Zaštita podataka, pristup prečicama / virusima