
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36



Hemos echo un grupo de estudiantes de la UAB un robot hexapodo autonomo con una webcam con micrófono mediaan 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.
Кабелен коментар que la estructura que hemos utilizado para nuestro hexapodo la hemos sacado del robot с отворен код Hexy de ArcBotics.
Aquí el link al codigo:
Консумативи
- батерия lipo 7.4V 2700mmAh
- x2 adafruit серво драйвер
- x18 микро сервомотора SG90s
- уеб камера playstation eye
-raspberry pi -LM2596 стъпка надолу -x2 превключватели -RGB LED
- разнообразни кабели
Стъпка 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 es necesario seguir las instrucciones estrictamente para el buen funcionamiento del robot, ya que en nuestro caso, solo las hemos utilizado como ayuda.
Забележка: 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 list de los componentntes utilizados y algunos consejos para el montaje.- lipo baterry 7.4V 2700mmAh - x2 adafruit servo драйвер
- x18 микро сервомотора SG90s
- уеб камера playstation eye
-малина пи
-LM2596 слизат
-x2 превключватели
- RGB LED
- разнообразни кабели
Es importante que para conectar 2 adafruits servo drivers, se suelde el bridge A0 de la segunda placa. En este link esta 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.
"" "конвенция за съвместен ключ: R - надясно, L - ляво F - предна, M - средна, B - задна H - ханш, K - коляно, A - Ключ на глезена: (канал, минимална дължина на импулса, максимална дължина на импулса)" "" 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:
За прилагане на éste módulo hemos hecho úso de la API от Google „Speech-to-Text“. Establecemos un streaming с el cloud в Google, за обтегатори, които са изпратени в текстово съобщение, и като поделен процесор за акционерно соло в лос касос с интерес.
За да можете да използвате този API, трябва да използвате API за проекто регистрация в Google Cloud, за да изтеглите Las credenciales за по -автентичен робот.
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 govor-to-text.
El código para realizar el streaming está proporcionado por google en su page oficial, 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 avisarle que el comando 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/…
ПАСО 1: ИНСТАЛИРАНЕ НА ОТВОРЕНИТЕHemos сегуидо ла инсталацията на професионални como е Adrian Rosebrock, en на страницата на уебсайта:
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 () grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('grey', grey) if 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. 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
внос numpy като 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 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 u objeto a detectar) 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)
# създайте маска за изображение
mask = cv2.inRange (hsv, lower_range, upper_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 coordenadas x e y delto centro de nuestro Object. 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 (рамка, (int (x), int (y)), int (радиус), (0, 255, 255), 2) cv2.circle (рамка, център, 5, (0, 0, 255), -1) # център за печат на координати на кръг mapObjectPosition (int (x), int (y)) # ако светодиодът е още не е включен, включете светодиода, ако не 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
ПАСО 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.
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):
print ("[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 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)
A partr de este punto el programador ya es libre de realizar modificaciones e ir jugando con parámetros y colores.
Препоръчано:
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: 7 стъпки

Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: Понякога вибрациите са причина за сериозни проблеми в много приложения. От валове и лагери на машината до работа на твърдия диск, вибрациите причиняват повреда на машината, ранна подмяна, ниска производителност и нанасят сериозен удар върху точността. Мониторинг
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: 3 стъпки

Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: КУПЕТЕ (щракнете върху теста, за да закупите/посетете уеб страницата) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH използва се за програмиране на STM микроконтролери
Как да направите 4G LTE двойна BiQuade антена Лесни стъпки: 3 стъпки

Как да направя 4G LTE двойна BiQuade антена лесни стъпки: През повечето време, с което се сблъсквах, нямам добра сила на сигнала за ежедневните ми работи. Така. Търся и опитвам различни видове антени, но не работи. След загубено време намерих антена, която се надявам да направя и изпробвам, защото тя не градивен принцип
Дизайн на играта с бързо движение в 5 стъпки: 5 стъпки

Дизайн на игра с Flick в 5 стъпки: Flick е наистина прост начин да направите игра, особено нещо като пъзел, визуален роман или приключенска игра
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки

Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати