Բովանդակություն:

HexaWalker: 5 քայլ
HexaWalker: 5 քայլ

Video: HexaWalker: 5 քայլ

Video: HexaWalker: 5 քայլ
Video: 【HEXA NFT 作品&クリエーター紹介】HEXA WALKER Vol.5 HEXANFT展@こはくの天使 2024, Հուլիսի
Anonim
Image
Image
HexaWalker
HexaWalker

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í como una «mascota» rebotica:

Cabe comentar que la estructura que hemos utilisado para nuestro hexapodo la hemos sacado del robot բաց կոդով Hexy de ArcBotics.

Aquí el link al codigo ՝

Պարագաներ

- lipo baterry 7.4V 2700mmAh

- x2 adafruit servo վարորդ

- x18 միկրո սերվեր SG90s

- վեբ -տեսախցիկ playstation eye

-ազնվամորի pi -LM2596 քայլ ներքև -x2 անջատիչներ -RGB LED

- մալուխների տարբերակներ

Քայլ 1. Քայլ 1. Imprimir Todas Las Piezas De La Estructura

Քայլ 1. Imprimir Todas Las Piezas De La Estructura
Քայլ 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 մմ/վ

Քայլ 2: Montaje De La Estructura

Montaje De La Estructura
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

Montaje De La Electronica
Montaje De La Electronica
Montaje De La Electronica
Montaje De La Electronica
Montaje De La Electronica
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 վարորդ

- x18 միկրո սերվեր SG90s

- վեբ -տեսախցիկ playstation eye

-ազնվամորի պի

-LM2596 նահանջեք

-x2 անջատիչներ

- RGB LED

- մալուխների տարբերակներ

Շատ կարևոր է կապի 2 ադաֆրուիտ սերվո վարորդների համար, որոնք գտնվում են A0 de la segunda placa հասցեում: Այս հղումը անհրաժեշտ է մանրամասն տեղեկությունների համար. Https://learn.adafruit.com/16-channel-pwm-servo-d… կոդիգո Explicado en el apartado de código.

Քայլ 4: Softwareրագրակազմ. 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 վարորդ, 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.

"" "Համատեղ_բանալին. R - աջ, L - ձախ F - առջև, M - միջին, B - հետև H - ազդր, K - ծնկ, A - կոճ բանալին. (ալիք, նվազագույն_պուլս_երկարություն, առավելագույն_պուլս_երկարություն" "" "GPIO.setwarnings (Կեղծ) GPIO.setmode (GPIO. BOARD)

համատեղ_գույք = {

«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: Softwareրագրակազմ. Modulos

Softwareրագրային ապահովում ՝ Modulos
Softwareրագրային ապահովում ՝ Modulos

Módulo de reconocimiento de voz:

Para la implementación de éste módulo hemos hecho úso de la API de Google 'Speech-to-Text': Establecemos un streaming with el cloud de Google, para obtener las respuestas en texto, y así poder procesarlas for accionar solo en los casos que nos interesa.

Հաշվի առնելով, որ API- ն պետք է գրանցի գրանցումը Google Cloud- ի միջոցով, այն կարող է ձեռք բերել վարկանիշներ ՝ օգտագործելով ռոբոտի ավտոմատ կառավարման համար:

Para guardar las credenciales en una variable de 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:

Հեռարձակման հիմնական գործառույթը `« listen_print_loop », որը պարունակում է որոշումներ, որոնք թույլ են տալիս մուտքագրել ռեկորդային ռեսուրսներ, որոնք կօգնեն ձեզ վերահսկել ձեր ռոբոտը, որը նախատեսված է ռոբոտների համար, որոնք նախատեսված են ձեր մեքենայի համար, կամ para avisar, կամ 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 OPENCV Hemos seguido la instalación de un profesional 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 in 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 (շրջանակ, cv2. COLOR_BGR2GRAY) cv2.imshow («շրջանակ», շրջանակ) cv2.imshow («մոխրագույն», մոխրագույն), եթե cv2.waitKey (1) & 0xFF == օրդ ('ք'). Ընդմիջում

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 no nos allowa convertir un color en orden BGR a HSV (formato en el que opencv es capaz de interpretar).

ներմուծել համակարգեր

ներմուծել numpy as np ներմուծել cv2 կապույտ = sys.argv [1] կանաչ = sys.argv [2] կարմիր = sys.argv [3] գույն = np.uint8 (

Una vez hayamos hecho la conversión de nuestro color deseado, el script noos 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 detear) 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 բիթանոց ամբողջ թիվ է

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 koenoendoas. En este caso lo que crearemos será un script for 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 koordenadas x e y.

# շարունակեք միայն այն դեպքում, երբ շառավիղը համապատասխանում է նվազագույն չափին

եթե շառավիղը> 10: # գծեք շրջանակը և կենտրոնաձևը շրջանակի վրա, # այնուհետև թարմացրեք հետագծվող կետերի ցանկը cv2.circle (շրջանակ, (int (x), int (y)), int (շառավիղ), (0, 255, 255), 2) cv2. Շրջան (շրջանակ, կենտրոն, 5, (0, 0, 255), -1) # շրջանագծի տպագիր կենտրոն կոորդինատների քարտեզ արդեն միացված չէ, միացրեք LED- ը, եթե ոչ ledOn: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Object Center coordenates at X0 = {0} and 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.

ՓԱՍՈ 5. ՕԲՅԵԿՏՆԵՐԻ Հետապնդում Llegamos al paso եզրափակիչ: 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.

գույնի Ստորին = (-2, 100, 100)

գույնը Վերին = (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 (օֆսեթ = -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 for 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:

A partir de este punto el programador ya es libre de realizar modificaciones e ir jugando con parámetros y colores.

Խորհուրդ ենք տալիս: