Índice:
- Suprimentos
- Etapa 1: Etapa 1: Imprimir Todas Las Piezas De La Estructura
- Etapa 2: Montaje De La Estructura
- Etapa 3: Montaje De La Electronica
- Etapa 4: Software: Calibraje De Servos
- Etapa 5: Software: Módulos
Vídeo: HexaWalker: 5 etapas
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-09 20:34
Hemos echo um grupo de estudiantes da UAB um robô hexapodo autônomo com uma webcam com micrófono mediante a interação pessoal com ele. A ideia era hacer um robô amistoso que reconociera ordenes de voz y pueda seguir mediante la cámara una pelota. Algo así como una "mascota" rebotica.
Cabe comentar que a estrutura que hemos utilizado para o novo hexapodo hemos sacado do robô de código aberto Hexy de ArcBotics.
Aquí el link al codigo:
Suprimentos
- lipo baterry 7,4V 2700mmAh
- x2 adafruit servo driver
- x18 micro servos SG90s
- webcam playstation eye
-raspberry pi -LM2596 step down -x2 switches - RGB LED
- cabos varios
Etapa 1: Etapa 1: Imprimir Todas Las Piezas De La Estructura
Es necesario imprimir todas as piezas.
Aqui podreis encontrar todos los archivos.stl:
Cabe destacar que las hemos impreso con las siguientes propiedades:
material: PLA
preenchimento: 25%
altura da camada: 0,12
velocidade: 55 mm / s
Etapa 2: Montaje De La Estructura
Para a montagem da estrutura, recomendamos seguir a guia do autor das telas 3D:
guía:
Não é necessário seguir as instruções estritamente para o funcionamento do robô, você que no novo caso, apenas os hemos utilizados como ayuda.
Nota: no fijéis los tornillos de los servos antes de calibrarlos en el apartado de code.
Etapa 3: Montaje De La Electronica
Aquí va uma lista de los componentes utilizados y algunos consejos para el montaje.- lipo baterry 7.4V 2700mmAh - x2 adafruit servo driver
- x18 micro servos SG90s
- webcam playstation eye
-Raspberry Pi
-LM2596 descer
-x2 interruptores
- LED RGB
- cabos varios
É importante que para conectar 2 servo drivers adafruits, selecione a ponte A0 da 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 conecta los pines es indiferente ya que tendrás que configurar los mas adelante en el código. Explicado no separado de código.
Etapa 4: Software: Calibraje De Servos
Antes de nada se tiver que configurar os pulsos máximos e mínimos de vuestros servos assim como os pinheiros não estão conectados no arquivo hexapod_core.py.
cada servo esta identificado segundo a lei de abajo, por cada servo se tem que indicar, o pino de conexão ao servo driver, pulso mínimo, pulso máximo e o último parámetro é por si o servo funcionando al revés de como debería, solo tenies que cambiarlo de signo.
"" "convenção de teclas de junção: R - direita, L - esquerda F - frontal, M - meio, B - costas H - quadril, K - joelho, A - Tecla de tornozelo: (canal, comprimento_de_pulso mínimo, comprimento_de_pulsão máximo)" "" GPIO.setwarnings (Falso) 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)}
Etapa 5: Software: Módulos
Módulo de reconocimiento de voz:
Para a implementação de éste módulo hemos hecho úso da API do Google 'Speech-to-Text'. Estabelecemos um streaming com a nuvem do Google, para obter las respuestas em texto, e assim poder procesarlas para accionar solo en los casos que nos interesa.
Para podermos usar esta API, precisamos ter um projeto registrado no Google Cloud, e este descargar as credencias para poder autenticar o robô.
Para guardar las credenciales em uma variável de entorno tenemos que ejecutar o comando siguiente (Raspbian):
exportar GOOGLE_APPLICATION_CREDENTIALS = "/ tu / ruta / hacia / las / credenciales.json"
Uma vez que ele foi executado este comando e podemos ter a API de fala para texto.
O código para realizar o streaming está proporcionado pelo google em sua página oficial, muy bien documentado:
A função principal do streaming é 'listen_print_loop', a encargada de decidir cual é a resposta que se aproxima mais do recebimento de entrada, e donde hemos controlado as respostas para poder comunicar-se com o robô quando há de hacer uma ação, ou para avisarle que o comando de voz no es reconocido, para que o robô realice um movimento que simula no haber entendido al usuario.
O código adaptado se encuentra no repositório de git Hexawalker
github.com/RLP2019/HEXAWALKER/blob/master/…
PASO 1: INSTALAR OPENCVHemos seguido a instalação de um profissional como es Adrian Rosebrock, em sua 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 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.
importar numpy como np
import cv2
cap = cv2. VideoCapture (0)
while (True): ret, frame = cap.read () gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('gray', gray) se cv2.waitKey (1) & 0xFF == ord ('q'): pausa
cap.release ()
cv2.destroyAllWindows ()
PASO 3: DETECCIÓN DEL COLOR CON OPENCV Para o siguiente paso lo que vamos a realizar es una detección de color. Para ello, primeiro de tudo vamos realizar um script que nos permita converter uma cor em orden BGR para HSV (formato en el que opencv es capaz de interpretar).
import sys
import numpy como 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 é 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 all los colores that no se encuentren en ese rango hsv that hemos definido.
import cv2
importar numpy como np
# Leia a imagem - O 1 significa que queremos a imagem em BGR
img = cv2.imread ('yellow_object.jpg', 1)
# redimensionar imagem para 20% em cada eixo
img = cv2.resize (img, (0, 0), fx = 0.2, fy = 0.2) # converter imagem BGR em uma imagem HSV hsv = cv2.cvtColor (img, cv2. COLOR_BGR2HSV)
# NumPy para criar matrizes para manter o intervalo inferior e superior
# O “dtype = np.uint8” significa que o tipo de dados é um número inteiro de 8 bits
intervalo_inferior = np.array ([24, 100, 100], dtype = np.uint8)
Upper_range = np.array ([44, 255, 255], dtype = np.uint8)
# crie uma máscara para a imagem
mask = cv2.inRange (hsv, lower_range, upper_range)
# exibe a máscara e a imagem lado a lado
cv2.imshow ('máscara', máscara) cv2.imshow ('imagem', img)
# esperar que o usuário pressione [ESC]
while (1): k = cv2.waitKey (0) if (k == 27): break cv2.destroyAllWindows ()
PASO 4: POSICIONAMIENTO DEL OBJETO En este paso probaremos que uma vez a camara se encuentre en funcionamiento y hayamos configurado nuestro rango mínimo y máximo de cor hsv, que este mar capaz de encontrar as coordenadas x e y del centro de nuestro objeto. Neste caso, se crearemos será um script para que acesse o rádio de nosso objeto sea mayor a 10, dibuje um círculo sobre o objeto y nos vaya mostrando por pantalla a posição em tiempo real sus coordenadas x e y.
# só prossegue se o raio atingir um tamanho mínimo
se raio> 10: # desenhe o círculo e o centroide no quadro, # então atualize a lista de pontos rastreados cv2.circle (quadro, (int (x), int (y)), int (raio), (0, 255, 255), 2) cv2.circle (frame, center, 5, (0, 0, 255), -1) # imprimir as coordenadas do centro do círculo mapObjectPosition (int (x), int (y)) # se o led for ainda não estiver ligado, ligue o LED se não ledOn: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Coordenadas do centro de objetos em X0 = {0} e Y0 = {1} ". Formato (x, y))
Vamos ver se vamos conseguir es no siguiente paso poder jugar com as coordenadas para estabelecer os límites de lo que será girar a la derecha nuestro robot, girar a la izquierda ou bien no realizar ningún movimiento al no salir por ningún límite.
PASO 5: RASTREAMENTO DE OBJETOS Llegamos al paso final. Uma vez realizada los anteriores puntos, estaremos listos para poder configurar un par de parámetros y poner a funcionar nuestra detección. Para podermos usar como anteriormente hemos dicho, os parâmetros da cor hsv máximo e mínimo para poder criar a máscara e dtectar o 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):
print ("[AÇÃO] GIRAR DERECHA") self.hexa.rotate (deslocamento = -15, repetições = 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. No caso do mar mais grande, gire a la derecha.
Para o caso no caso em que se deseja fazer uma viagem adelante para que se realize, é utilizar a variável dónde calculamos o rádio para marcar otro límite em caso de proximidade da pelota. Cuanto mas cerca desta pelota de novo robô ¡, mais grande será no rádio e por tanto mais cerca do nuestro robô para conseguir seu objetivo.
se raio <105: self.hexa.walk (balanço = 40, repetições = 1, elevado = -30, piso = 50, t = 0,3)
A partir deste ponto o programador você está livre para realizar modificações e ir jugando com parâmetros e cores.
Recomendado:
Como fazer uma antena dupla BiQuade 4G LTE Etapas fáceis: 3 etapas
Como Fazer Antena Dupla BiQuade 4G LTE Etapas fáceis: Na maioria das vezes que enfrentei, não tenho uma boa intensidade de sinal para meus trabalhos do dia-a-dia. Então. Procuro e tento diferentes tipos de antena, mas não funciona. Depois de perder tempo, encontrei uma antena que espero fazer e testar, porque não é um princípio de construção
Design de jogo no Flick em 5 etapas: 5 etapas
Design de jogos no Flick em 5 etapas: o Flick é uma maneira realmente simples de fazer um jogo, especialmente algo como um quebra-cabeça, romance visual ou jogo de aventura
Detecção de rosto no Raspberry Pi 4B em 3 etapas: 3 etapas
Detecção de rosto no Raspberry Pi 4B em 3 etapas: Neste Instructable, vamos realizar a detecção de rosto no Raspberry Pi 4 com Shunya O / S usando a Biblioteca Shunyaface. Shunyaface é uma biblioteca de reconhecimento / detecção de rosto. O projeto visa alcançar a detecção mais rápida e velocidade de reconhecimento com
Espelho de cortesia DIY em etapas fáceis (usando luzes de tira LED): 4 etapas
Espelho de toucador DIY em etapas fáceis (usando tiras de LED): Neste post, fiz um espelho de toucador DIY com a ajuda de tiras de LED. É muito legal e você deve experimentá-los também
Arduino Halloween Edition - Tela pop-out de zumbis (etapas com imagens): 6 etapas
Arduino Halloween Edition - Tela pop-out de zumbis (etapas com imagens): Quer assustar seus amigos e fazer barulho no Halloween? Ou apenas quer fazer uma boa pegadinha? Esta tela pop-out de zumbis pode fazer isso! Neste Instructable, vou ensiná-lo a criar facilmente zumbis usando o Arduino. O HC-SR0