Inhoudsopgave:

HexaWalker: 5 stappen
HexaWalker: 5 stappen

Video: HexaWalker: 5 stappen

Video: HexaWalker: 5 stappen
Video: 【HEXA NFT 作品&クリエーター紹介】HEXA WALKER Vol.5 HEXANFT展@こはくの天使 2024, Juli-
Anonim
Image
Image
HexaWalker
HexaWalker

Hemos echo un grupo de estudiantes de la UAB un robot hexapodo autonomo met een webcam met microfono mediante la cual puedes interactuar con el. Het idee uit het tijdperk van de robot is ontstaan uit een zoektocht naar een seguir tussen de camera en de pelota. Algo así como una "mascota" rebotica.

Het is mogelijk om de open source software van ArcBotics te gebruiken.

Aquí el link al codigo:

Benodigdheden

- lipo-batterij 7.4V 2700mmAh

- x2 adafruit-servostuurprogramma

- x18 micro-servo's SG90s

- webcam playstation oog

-raspberry pi -LM2596 step down -x2 schakelaars - RGB LED

- verschillende kabels

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

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

Es necesario imprimir todas las piezas.

Aqui podreis encontrar todos los archivos.stl:

Uitgangspunt voor wat betreft hemos impreso con las siguientes propiedades:

materiaal: PLA

vulling: 25%

laaghoogte: 0.12

snelheid: 55 mm/s

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

Er is geen noodzaak om de instructies voor het uitvoeren van de functie van robot, ya que en nuestro caso, solo las hemos utilizado como ayuda.

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

Stap 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

U kunt kiezen uit een lijst van gebruikte onderdelen en accessoires voor de montage.- lipo-batterij 7.4V 2700mmAh - x2 adafruit-servostuurprogramma

- x18 micro-servo's SG90s

- webcam playstation oog

-frambozenpi

-LM2596 stap naar beneden

-x2 schakelaars

- RGB-LED

- verschillende kabels

Es belangrijke 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 codigo. Explicado en apartado de código.

Stap 4: Software: Calibraje De Servo's

U kunt een aantal configuraties instellen voor de maximale en minimale servo's van dennen die u kunt koppelen aan het archief van hexapod_core.py.

cada servo identificado según la leyenda de abajo, door cada servo se tiene que indicar, el pin de conexión al servo driver, pulso mini, pulso máximo en el ultimo parámetro es por si el servo esta funcionando al revés que cambiarlo de signo.

""" gewrichtssleutelconventie: R - rechts, L - links F - voor, M - midden, B - achter H - heup, K - knie, A - Enkelsleutel: (kanaal, minimum_pulse_length, maximum_pulse_length) """ GPIO.setwarnings (Fals) 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) }

Stap 5: Software: Modulos

Software: Modulos
Software: Modulos

Módulo de reconocimiento de voz:

Voor de implementatie van de este módulo hecho úso de la API van Google 'Speech-to-Text'. Het is mogelijk om streaming met de cloud van Google te vinden, voor het beantwoorden van vragen en voor tekst, en voor het proces van solo's en voor andere zaken.

Voor het gebruik van de esta API die nodig is om te worden geregistreerd en voor Google Cloud, en voor het downloaden van een certificaat voor de autenticar el robot.

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

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

Maak gebruik van de beschikbare gegevens voor het uitvoeren van een bewerking van de API voor spraak-naar-tekst.

El codigo para realizar el streaming está proporcionado por google en su pagina oficial, muy bien documentado:https://cloud.google.com/speech-to-text/docs/stre…

De belangrijkste functie van de streaming en 'listen_print_loop', de uiteindelijke beslissing en de meest recente invoer, en de controle over de communicatie tussen de robot kan op een toevallige, of op de andere manier verschijnen 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 volgt de professionele installatie van Adrian Rosebrock, op de pagina web:

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

importeer numpy als np

import cv2

cap = cv2. VideoCapture(0)

while(True): ret, frame = cap.read() grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) cv2.imshow('frame', frame) cv2.imshow('gray', grey) if cv2.waitKey (1) & 0xFF == ord('q'): pauze

cap.release()

cv2.destroyAllWindows()

PASO 3: DETECCIÓN DEL COLOR CON OPENCV Parael siguiente paso loque vamos a realizar es una detección de color. Para ello, primero de todo vamos a realizar un script que nos permita convertir un colour en orden BGR a HSV (format en el que opencv es capaz de interpretar).

import systeem

import numpy als np import cv2 blauw = sys.argv[1] groen = sys.argv[2] rood = sys.argv[3] kleur = np.uint8(

U kunt kiezen voor een nieuwe kleur die u kunt afdrukken, u kunt afdrukken door de raad van bestuur en er is een beperkte toegang tot de volgende kleuren, er is geen verschil tussen de kleuren en de kleuren die u kunt kleuren cual dificultaría la detección por problemas de luz o contraste.

Het volgende is een afbeelding die vooraf is gemaakt, een otro-script is gemaakt en een servirá para probar el paso anterior. Bekijk de meest recente resultaten met het beeld van de pasemos (met de kleur die u kunt detecteren) om te zetten in een aantal, op het eiland beschikbare kleuren die u niet kunt zien en hoe u de hemos definido kunt bepalen.

import cv2

importeer numpy als np

# Lees de afbeelding - De 1 betekent dat we de afbeelding in BGR willen hebben

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

# formaat van afbeelding wijzigen naar 20% in elke as

img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2) # converteer BGR-afbeelding naar een HSV-afbeelding hsv = cv2.cvtColor(img, cv2. COLOR_BGR2HSV)

# NumPy om arrays te maken voor het onder- en bovenbereik

# De "dtype = np.uint8" betekent dat het gegevenstype een 8-bits geheel getal is

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

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

# maak een masker voor afbeelding

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

# toon zowel het masker als de afbeelding naast elkaar

cv2.imshow('masker', masker) cv2.imshow('afbeelding', img)

# wacht tot de gebruiker op [ESC] drukt

while(1): k = cv2.waitKey(0) if(k == 27): breek cv2.destroyAllWindows()

PASO 4: POSICIONAMIENTO DEL OBJETO Er is een mogelijkheid om een camera te openen en een funcionamiento en hayamos-configuratie te hebben, een minimum aan kleur en een maximum aan kleuren die in de loop van de dag zijn gemaakt. Het is mogelijk om een script te maken voor de 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.

# ga alleen verder als de straal voldoet aan een minimummaat

als straal > 10: # teken de cirkel en het zwaartepunt op het frame, # werk vervolgens de lijst met gevolgde punten bij cv2.circle(frame, (int(x), int(y)), int(radius), (0, 255), 255), 2) cv2.circle(frame, center, 5, (0, 0, 255), -1) # print middelpunt van cirkelcoördinaten mapObjectPosition(int(x), int(y)) # als de led is niet al aan, zet de LED aan indien niet ledOn: GPIO.output(redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Objectcentrum coördineert op X0 = {0} en Y0 = {1}".format(x, y))

Het is mogelijk om een volgende stap in het proces te zetten om de grenzen te bepalen van de nieuwe robot, die een nieuw leven kan leiden.

PASO 5: OBJECT TRACKING Llegamos al paso finale. U kunt een overzicht van eerdere punten, een lijst van configuraties voor het configureren en uitvoeren van een funcionaire nuestra-detección instellen. Voor het eerst gebruiken van verschillende kleuren, van kleur kan het grootste en kleine deel van het lichaam en het doel worden gecreëerd.

kleurLaag = (-2, 100, 100)

kleurBovenste = (18, 255, 255)

También necesitaremos las coordenadas x e y para el limite derecho el el limite izquierdo elegidos en el paso anterior.

als (x 280):

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

Er is een realizondo met de voorwaarden van tevoren en decir que si nuestra coordenada x es meer 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 donde calculamos el radio para marcar otro limite en caso de proximidad de la pelota. Dit is een echte robot die een nieuwe robot kan spelen, meer grote series op radio en een nieuwere robot die gebruikmaakt van objecten.

als straal < 105: self.hexa.walk (swing = 40, herhalingen = 1, verhoogd = -30, vloer = 50, t = 0,3)

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

Aanbevolen: