Სარჩევი:

HexaWalker: 5 ნაბიჯი
HexaWalker: 5 ნაბიჯი

ვიდეო: HexaWalker: 5 ნაბიჯი

ვიდეო: HexaWalker: 5 ნაბიჯი
ვიდეო: 【HEXA NFT 作品&クリエーター紹介】HEXA WALKER Vol.5 HEXANFT展@こはくの天使 2024, ივლისი
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.

დაწერეთ კომენტარი, რომლითაც თქვენ შეგიძლიათ გამოიყენოთ ეს სისტემა, რომელიც გამოიყენება ექოსკოპიაში, რომელიც შეიცავს რობოტს, ღია კოდის Hexy de ArcBotics- ს.

კოდი ბმული codigo:

მარაგები

- ლიპო ბატარეა 7.4V 2700mmAh

- x2 adafruit სერვო დრაივერი

- x18 მიკრო სერვის SG90s

- ვებკამერა playstation eye

-ჟოლოს pi -LM2596 ნაბიჯი ქვემოთ -x2 კონცენტრატორები -RGB LED

- კაბელების ვარიაციები

ნაბიჯი 1: ნაბიჯი 1: Imprimir Todas Las Piezas De La Estructura

ნაბიჯი 1: Imprimir Todas Las Piezas De La Estructura
ნაბიჯი 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 მმ/წმ

ნაბიჯი 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:

არ არის საჭირო იმისათვის, რომ გამოიყენოთ ინსტრუქცია, რომელიც განკუთვნილია რობოტის ფუნქციონირებისთვის, რომელიც განკუთვნილია თქვენი მუშაობისთვის, როგორც დამოუკიდებელი, ისე სოლიდარული.

შენიშვნა: 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 lista de los componentes utilisados y algunos consejos para el montaje.- lipo baterry 7.4V 2700mmAh - x2 adafruit servo driver

- x18 მიკრო სერვის SG90s

- ვებკამერა playstation eye

-ჟოლო პი

-LM2596 გადადგა

-x2 კონცენტრატორები

- RGB LED

- კაბელების ვარიაციები

მნიშვნელოვანია ორი კონფიგურაციის სერვისის დრაივერებისათვის, რაც შეეხება ხიდს A0 de la segunda placa. დეტალური ბმული არის დეტალური ინფორმაცია: https://learn.adafruit.com/16-channel-pwm-servo-d… კოდიგო 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)

ერთობლივი საკუთრება = {

'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

პროგრამული უზრუნველყოფა: Modulos
პროგრამული უზრუნველყოფა: Modulos

Módulo de reconocimiento de voz:

განახორციელოს პროგრამის განხორციელება Google– ის მიერ „Speech-to-Text“. Google– ის ღრუბლის სტრიმინგი, ტექსტის ტექსტის შემდგომი გაფართოება, რაც საშუალებას მოგცემთ შეასრულოთ პროცესები თქვენი პერსონალური ინტერესების შესაბამისად.

Google– ის ღრუბელში, რომელიც ითვალისწინებს ავტორიტეტული რობოტის ავტორს, ეს არის API– ს საჭირო წვდომის წყარო.

Para guardar las credenciales en una variable to 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 deso de la API de speech-to-text.

El código para realizar el streaming está proporcionado for google en suge of official, myy bien documentado:

ძირითადი ფუნქცია, რომელიც ითარგმნება როგორც "listen_print_loop", encargada de decidir cual es la respuesta que 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 avisar 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: დააინსტალირეთ OPENCV

PASO 2: PROBAR LA CAMARA Primero de todo una vez instalado opencv, lo que vamos a hacer es un pequeño script in 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. ვიდეო გადაღება (0)

while (True): ret, frame = cap.read () ნაცრისფერი = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('ნაცრისფერი', ნაცრისფერი) თუ cv2.waitKey (1) & 0xFF == ორდ ('q'): შესვენება

cap. გამოშვება ()

cv2.destroyAllWindows ()

PASO 3: DETECCIÓN DEL COLOR CON OPENCV Para el siguiente paso lo que vamos a realizar is una detección de color. ამ ყველაფრისთვის, პირველ რიგში, უნდა განხორციელდეს სკრიპტი, რომელიც არ იძლევა ნებადართულ კონვერტირებას და ფერს BGR a HSV (ფორმატირებული და ღია ინტერპრეტაციის ფორმატით).

იმპორტის სისტემა

იმპორტი 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 არ არის დაბეჭდილი consola el límite por debajo y el límite por arriba, el cual nos servirá para que la la გამოძიების tenga una gama de colores entre dos colores hsv y no lonicamente uno, cficicultarí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 detear) 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 ბიტიანი მთელი რიცხვი

ქვედა_რეიდი = np.array ([24, 100, 100], dtype = np.uint8)

ზედა დიაპაზონი = np.array ([44, 255, 255], dtype = np.uint8)

# შექმენით ნიღაბი სურათისთვის

ნიღაბი = cv2.inRange (hsv, lower_range, above_range)

# აჩვენეთ ორივე ნიღაბი და სურათი გვერდიგვერდ

cv2.imshow ("ნიღაბი", ნიღაბი) cv2.imshow ("სურათი", img)

# დაელოდეთ მომხმარებელს დააჭიროს [ESC]

ხოლო (1): k = cv2.waitKey (0) თუ (k == 27): შესვენება 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 koordenadas x e. ეს არის ის ფაქტი, რომ ის შექმნილია რადიოსათვის რადიოსათვის, რომელიც ითვალისწინებს ზღვის მერის მე -10 ნომერს, რომელიც არეგულირებს თქვენს ადგილს და გვთავაზობს არა მხოლოდ თქვენს კოორდინატებში, არამედ მათ შორისაც.

# გააგრძელეთ მხოლოდ იმ შემთხვევაში, თუ რადიუსი აკმაყოფილებს მინიმალურ ზომას

თუ რადიუსი> 10: # დახაზეთ წრე და ცენტროიდი ჩარჩოზე, # მაშინ განაახლეთ cv2 თვალთვალის მქონე წერტილების სია. წრე (ჩარჩო, (int (x), int (y)), int (რადიუსი), (0, 255, 255), 2) cv2. წრე (ჩარჩო, ცენტრი, 5, (0, 0, 255), -1) # ბეჭდვის ცენტრის წრე კოორდინატების რუკა ობიექტიპოზიცია ჯერ არ არის ჩართული, ჩართეთ LED თუ არა ledOn: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("

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: ობიექტის თვალყურის დევნება Llegamos al paso ფინალი. Una vez realizados los anteriores puntos, estaremos listos para poder configurar un par demetre y poner 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.

ფერი ქვედა = (-2, 100, 100)

ფერი ზედა = (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):

ბეჭდვა ("[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á is utilisar 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)

ეს არის თავისუფალი პროგრამის შემსრულებელი, რომელიც თავისუფალია რეალიზაციის მოდიფიკაციისა და ფერით.

გირჩევთ: