Talaan ng mga Nilalaman:

HexaWalker: 5 Hakbang
HexaWalker: 5 Hakbang

Video: HexaWalker: 5 Hakbang

Video: HexaWalker: 5 Hakbang
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Hulyo
Anonim
Image
Image
HexaWalker
HexaWalker

Ang mga ito ay echo un grupo de estudiantes de la UAB un robot hexapodo autonomo con una webcam con micrófono mediante la cual puedes interactiveuar 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 es konstrura que hemos utilizado para nuestro hexapodo la hemos sacado del robot open source Hexy de ArcBotics.

I-link ang link sa codigo:

Mga gamit

- lipo baterry 7.4V 2700mmAh

- x2 adafruit servo driver

- x18 micro servos na SG90s

- mata sa playstation ng webcam

-raspberry pi -LM2596 hakbang pababa -x2 switch - RGB LED

- varios ng mga kable

Hakbang 1: Hakbang 1: Imprimir Todas Las Piezas De La Es konstrura

Hakbang 1: Imprimir Todas Las Piezas De La Es konstrura
Hakbang 1: Imprimir Todas Las Piezas De La Es konstrura

Es necesario imprimir todas las piezas.

Aqui podreis encontrar todos los archivos.stl:

Ipinagtala ng mga miyembro ng lungsod ang mga propiedad:

materyal: PLA

infill: 25%

taas ng layer: 0.12

bilis: 55 mm / s

Hakbang 2: Montaje De La Esonstrura

Montaje De La Estructura
Montaje De La Estructura

Para sa montaje de la estructura recomendamos seguir la guía del autor 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.

Nota: walang fijéis los tornillos de los servos antes de calibrarlos en el apartado de código.

Hakbang 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

Narito ang isang lista de los sangkap ng mga gumagamit ng algunos consejos para el montaje.- lipo baterry 7.4V 2700mmAh - x2 adafruit servo driver

- x18 micro servos na SG90s

- mata sa playstation ng webcam

-raspberry pi

-LM2596 bumaba

-x2 switch

- RGB LED

- varios ng mga kable

Mahalaga para sa conectar 2 adafruits servo driver, se suelde el bridge A0 de la segunda placa. Pag-link na ito ay detallado: https://learn.adafruit.com/16-channel-pwm-servo-d… Pagtugon sa isang 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.

Hakbang 4: Software: Calibraje De Servos

Mga 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 petunjuk, 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 - kanan, L - kaliwa F - harap, M - gitna, B - likod H - balakang, K - tuhod, A - Susi ng bukung-bukong: (channel, minimum_pulse_length, maximum_pulse_length)" "" GPIO.setwarnings (Maling) 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)}

Hakbang 5: Software: Modulos

Software: Modulos
Software: Modulos

Módulo de reconocimiento de voz:

Para sa pagpapatupad ng éste módulo hemos hecho úso de la API de Google 'Speech-to-Text'. Ang mga Establecemos un streaming sa el cloud ng Google, para makakuha ng respeto sa texto, at ang poder na ito ay magagawa para mag-solo solo at los casos que nos interesa.

Para sa poder hacer úso de esta API na kinakailangan upang mai-registrate ang Google Cloud, maaari kang mag-isip ng mga kredito para sa poder na awtomatiko sa isang robot.

Para sa guardar las credenciales en una variable de entorno tenemos que ejecutar el siguiente comando (Raspbian):

i-export ang 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 por google en su pagina oficial, muy bien documentado:

Ang punong guro ng fun streaming ay ang streaming ng 'listen_print_loop', ang encargada de decidir cual es la respuesta que se aproxima más al input recibido, y donde hemos controlado las respuestas para sa poder comunicarle al robot cuando ha de hacer una acción, o para sa iyong posisyon 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 installación de un profesional como es Adrian Rosebrock, en su pàgina web:

PASO 2: PROBAR LA CAMARA Primero de todo una vez installado opencv, lo que vamos a hacer es un pequeño script en python para probar la camara. Para sa mga haremos que se abran dos ventanas, una con la imagen original y otra con la imagen en blanco y negro.

i-import ang numpy bilang np

import cv2

cap = cv2. VideoCapture (0)

habang (Totoo): ret, frame = cap.read () grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('grey', grey) kung cv2.waitKey (1) & 0xFF == ord ('q'): masira

cap.release ()

cv2.destroyAllWindows ()

PASO 3: DETECCIÓN DEL COLOR CON OPENCV Para sa mga sigurente na 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).

import sys

import numpy as np import cv2 blue = sys.argv [1] green = sys.argv [2] red = sys.argv [3] color = 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. Narito ang mga resulta ng isang resulta ng mga imahe ng mga pasahero (tulad ng kulay na makita ang isang detalyado) convertida en una máscara, aislando todos los colores que no se encuentren en ese rango hsv que hemos definido.

import cv2

i-import ang numpy bilang np

# Basahin ang larawan - Ang ibig sabihin ng 1 ay nais namin ang imahe sa BGR

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

# baguhin ang laki sa imahe sa 20% sa bawat axis

img = cv2.resize (img, (0, 0), fx = 0.2, fy = 0.2) # i-convert ang imahe ng BGR sa isang imahe na HSV hsv = cv2.cvtColor (img, cv2. COLOR_BGR2HSV)

# NumPy upang lumikha ng mga arrays upang hawakan ang mas mababa at itaas na saklaw

# Ang "dtype = np.uint8" ay nangangahulugang ang uri ng data ay isang 8 bit integer

lower_range = np.array ([24, 100, 100], dtype = np.uint8)

upper_range = np.array ([44, 255, 255], dtype = np.uint8)

# Lumikha ng mask para sa imahe

mask = cv2.inRange (hsv, lower_range, upper_range)

# ipakita ang parehong mask at ang imahe sa tabi-tabi

cv2.imshow ('mask', mask) cv2.imshow ('imahe', img)

# maghintay sa gumagamit upang pindutin ang [ESC]

habang (1): k = cv2.waitKey (0) kung (k == 27): masira ang 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 coordenadas x e y del centro de nuestro En este caso lo que crearemos será un script para que cuando el radio de nuestro objeto sea mayor a 10, nabili un circulo sobre el objeto y nos vaya mostrando por pantalla la posición en tiempo real sus coordenadas x e y.

# magpatuloy lamang kung ang radius ay nakakatugon sa isang minimum na sukat

kung radius> 10: # iguhit ang bilog at centroid sa frame, # pagkatapos ay i-update ang listahan ng mga sinusubaybayan na puntos cv2.circle (frame, (int (x), int (y)), int (radius), (0, 255, 255), 2) cv2.circle (frame, center, 5, (0, 0, 255), -1) # print center ng bilog na coordinate mapObjectPosition (int (x), int (y)) # kung ang led ay hindi pa naka-on, i-on ang LED kung hindi ledOn: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Ang Object Center ay nakikipag-ugnay sa X0 = {0} at Y0 = {1} ". Format (x, y))

Sa pamamagitan ng isang 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 sa mga gumagamit ng 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.

kung (x 280):

print ("[ACTION] GIRAR DERECHA") self.hexa.rotate (offset = -15, repetitions = 1)

Narito ang 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 sa 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. Maaari mong malaman kung paano ang robot ay nagtatrabaho sa radio at sa pamamagitan ng iyong cerca estará nuestro robot at conseguir su objetivo.

kung radius <105: self.hexa.walk (swing = 40, repetitions = 1, tinaas = -30, floor = 50, t = 0.3)

Isang partir de este punto ng programador na ito ay libre ng realizar modificaciones na ir jugando con parámetros at colores.

Inirerekumendang: