Përmbajtje:

HexaWalker: 5 hapa
HexaWalker: 5 hapa

Video: HexaWalker: 5 hapa

Video: HexaWalker: 5 hapa
Video: 【HEXA NFT 作品&クリエーター紹介】HEXA WALKER Vol.5 HEXANFT展@こはくの天使 2024, Korrik
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 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.

Komentoni një strukturë që përdorni të gjithë sistemin tuaj për përdorim hexapodo në hemos si një robot me burim të hapur Hexy de ArcBotics.

Aquí el link al codigo:

Furnizimet

- bateri lipo 7.4V 2700mmAh

- x2 adafruit servo shofer

- x18 mikro servo SG90s

- webcam playstation eye

-mjedër pi -LM2596 hap poshtë -çelsin x2 -RGB LED

- varietetet e kabllove

Hapi 1: Hapi 1: Imprimir Todas Las Piezas De La Estructura

Hapi 1: Imprimir Todas Las Piezas De La Estructura
Hapi 1: Imprimir Todas Las Piezas De La Estructura

Eshte necesario imprimir todas las piezas.

Aqui podreis encontrar todos los archivos.stl:

Cabe destacar que las hemos impreso con las siguientes propiedades:

materiali: PLA

mbush: 25%

lartësia e shtresës: 0.12

shpejtësia: 55 mm/s

Hapi 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:

Nuk është e nevojshme të përdorni një udhëzim për funksionimin e një funksioni robotik, i cili mund të përdoret vetëm nga një person, i cili mund të përdoret vetëm nga ju.

Shënim: asnjë fije e los tornillos de los servos antes de calibrarlos en el apartado de código.

Hapi 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

Aqua va una lista de los componentes useizados y algunos consejos para el montaje.- lipo baterry 7.4V 2700mmAh - x2 adafruit servo driver

- x18 mikro servo SG90s

- webcam playstation eye

-mjedër pi

-LM2596 tërhiqeni

-x2 çelsin

- LED RGB

- varietetet e kabllove

Importantshtë e rëndësishme për para 2 lidhje me drejtuesit e shërbimeve, duke u lidhur me urën A0 de la segunda placa. Lidhje e vlefshme është për detajet: https://learn.adafruit.com/16-channel-pwm-servo-d… Respecto a los servos el orden en el que conectes los pines es indiferente ose que tendrás que configurar los mas adelante en el código. Explicado en el apartado de código.

Hapi 4: Softueri: Calibraje De Servos

Antes de nada se tiene que configurar los pulms máximos dhe mínimo de vuestros servos así como los pines donde estén conectados në el arkivo 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.

"" "Konventa e kyçeve të përbashkëta: R - djathtas, L - majtas F - përpara, M - mes, B - mbrapa H - ijë, K - gju, A - çelësi i kyçit të këmbës: (kanali, gjatësia minimale_pulse, maksimumi_pulsi_gjatësia)" "" GPIO.setwarnings (E rreme) GPIO.setmode (GPIO. BOARD)

pronat e përbashkëta = {

'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)}

Hapi 5: Softueri: Modulos

Softueri: Modulos
Softueri: Modulos

Mjeti i rikonkurrimit të vozit:

Për zbatimin e éste módulo hemos hecho laso de la API nga Google 'Speech-to-Text'. Mund të transmetohen me një cloud në Google, për t'iu përgjigjur përgjigjeve në tekst, si dhe për të përpunuar procese për një solucion aksidental në los casos që nuk na interesojnë.

Për shembull, ju duhet të regjistroni një API të regjistruar në regjistrin tuaj në Google Cloud, për të krijuar një kredit për një robot autentik.

Para ruajtjes së besimit në një ndryshim të madh të hyrjes në një kohë të caktuar në shoqëri (Raspbian):

eksporto GOOGLE_APPLICATION_CREDENTIALS = "/tu/ruta/hacia/las/credenciales.json"

Una vez hemos realizimin është një komando e podemos hacer úso de la API nga fjalimi në tekst.

El código para realizar el streaming está proporcionado për google në faqen tuaj zyrtare, mund të dokumentoni:

Funksioni kryesor i transmetimit është 'listen_print_loop', për të përcaktuar vendimin që të merrni një përgjigje se si të hyni në recribido, nëse ju dëshironi të kontrolloni të gjitha shërbimet për të komunikuar me robotët, si dhe për një avisar, ose para avisar nuk do të rikonfirmoni, para se të keni një robot realice un movimiento que simula nuk haber entendido al usuario.

El código adaptado se encuentra en el repositorio de git Hexawalker

github.com/RLP2019/HEXAWALKER/blob/master/…

PASO 1: INSTALO OPENCV Hemos se instalación de un com professional profesional Adrian Rosebrock, en su pàgina web:

PASO 2: PROBAR LA CAMARA Primero për të bërë një instalim të hapur, këtu është një skenar i pacaktuar në python para probar la camara. Për më tepër, ju mund të shikoni se cilat janë ato, të cilat mund të quhen origjinale dhe të tjera, të cilat mund të shihen në një zezë.

importoni numpy si np

import cv2

cap = cv2. VideoCapture (0)

ndërsa (E vërtetë): ret, kornizë = kap.lex () gri = cv2.cvtColor (kornizë, cv2. COLOR_BGR2GRAY) cv2.imshow ('kornizë', kornizë) cv2.imshow ('gri', gri) nëse cv2.waitKey (1) & 0xFF == ord ('q'): pushim

kapak. lëshim ()

cv2.destroyAllWindows ()

PASO 3: ZBULIMI I DEL COLOR CON OPENCV Për më tepër, ju mund të kuptoni se si të realizoni një ngjyrë të panjohur. Për më tepër, fillimisht për të kryer një skenar që nuk lejon të konvertohet me një ngjyrë dhe për të rregulluar BGR a HSV (formatimi i tij është i hapur për interpretimin).

import sys

import numpy si np import cv2 blu = sys.argv [1] jeshile = sys.argv [2] e kuqe = sys.argv [3] ngjyra = np.uint8 (

Una vez hayamos hecho la conversión de nuestro color deseado, el script nuk printohet nga consola el límite por debajo y el límite por arriba, el cual nos servirá para que la la zbulimin e një gama të ngjyrave për të hyrë në ngjyra hsv y no lonicamente uno 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 (ngjyrën dhe objektin tuaj të zbulimit) të konvertuar në një pamje të veçantë, në aislando todos los colours que no se encuentren en ese rango hsv que hemos definido.

import cv2

importoni numpy si np

# Lexoni fotografinë - 1 do të thotë që ne duam imazhin në BGR

img = cv2.imread ('yellow_object.jpg', 1)

# ndrysho madhësinë e imazhit në 20% në secilin aks

img = cv2.resize (img, (0, 0), fx = 0.2, fy = 0.2) # shndërroni imazhin BGR në një imazh HSV hsv = cv2.cvtColor (img, cv2. COLOR_BGR2HSV)

# NumPy për të krijuar vargje për të mbajtur gamën e poshtme dhe të sipërme

# "Dtype = np.uint8" do të thotë që lloji i të dhënave është një numër i plotë 8 bitësh

niveli më i ulët = np.array ([24, 100, 100], dtype = np.uint8)

niveli i sipërm = np. array ([44, 255, 255], dtype = np.uint8)

# krijoni një maskë për imazhin

maskë = cv2.inRange (hsv, rangu i poshtëm, niveli i sipërm)

# shfaqni maskën dhe imazhin krah për krah

cv2.imshow ('maskë', maskë) cv2.imshow ('imazh', img)

# prisni që përdoruesi të shtypë [ESC]

ndërsa (1): k = cv2.waitKey (0) nëse (k == 27): thyej 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 bashkëroenadas x. En este caso lo que crearemos será un script for cuando el radio nga nuestro objeto sea kryetari i 10, ju duhet të qarkulloni në mënyrë sobre el objeto ynos vaya mostrando por pantalla la posición en tiempo real sus coordenadas x e y.

# vazhdoni vetëm nëse rrezja plotëson një madhësi minimale

nëse rrezja> 10: # vizatoni rrethin dhe centroidin në kornizë, # atëherë përditësoni listën e pikave të gjurmuara cv2.circle (frame, (int (x), int (y)), int (radius), (0, 255, 255), 2) cv2. Rreth (kornizë, qendër, 5, (0, 0, 255), -1) # qendra e printuar e rrethit koordinon hartënObjectPosition (int (x), int (y)) # nëse led është jo tashmë i ndezur, ndizni LED nëse nuk është ledOn: GPIO.output (redLed, GPIO. HIGH) ledOn = E vërtetë def mapObjectPosition (x, y): print ("[INFO] Koordinatat e Qendrës së Objektit në X0 = {0} dhe 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: ZBULIMI I OBJEKTIT Llegamos al paso final. Una vez realizados los anteriores puntos, lista e listave për poder configurar un par demetric dhe poner një funksionues të zbulimit të zbulimit. Përdorimi i përdorimit të anteriormente hemos dicho, los parámetros del color hsv máximo y mínimo para poder crear la máscara y dtectar el objeto.

ngjyraLower = (-2, 100, 100)

ngjyraUpper = (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.

nëse (x 280):

print ("[ACTION] GIRAR DERECHA") self.hexa.rotate (kompensim = -15, përsëritje = 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á është përdorur nga variabla e ndryshuar në llogaritjet e radios para marcar otro límite en caso de proximidad de la pelota. Për shembull, ju mund të përdorni një robot nu, më së shumti një radio të madhe për një robot nuestro, i cili më pas ju sugjeron.

nëse rrezja <105: self.hexa.walk (lëkundje = 40, përsëritje = 1, ngritur = -30, dysheme = 50, t = 0.3)

Një pjesë e vlerësuar e programuesit të lirë të realizimit të modifikimeve dhe i ngjyrosjes së tyre në parimetra të ngjyrave.

Recommended: