সুচিপত্র:

হেক্সাওয়াকার: 5 টি ধাপ
হেক্সাওয়াকার: 5 টি ধাপ

ভিডিও: হেক্সাওয়াকার: 5 টি ধাপ

ভিডিও: হেক্সাওয়াকার: 5 টি ধাপ
ভিডিও: Как спрятать данные в ячейках Excel? 2024, জুলাই
Anonim
Image
Image
হেক্সাওয়াকার
হেক্সাওয়াকার

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। লা আইডিয়া ইয়ার হেসার আন রোবট অ্যামিস্টোসো কিউ রিকনোসিরা অরডেনেস ডি ভোজ ওয়াই পুয়েদা সেগুইর মিডিয়াঁতে লা ক্যামারা উনা পেলোটা। Algo así como una "mascota" rebotica।

Cabe comentar que la estructura que hemos utilizado para nuestro hexapodo la hemos sacado del robot open source Hexy de ArcBotics।

কোড লিঙ্ক আল কোডিগো:

সরবরাহ

- লিপো ব্যাটারি 7.4V 2700mmAh

- x2 অ্যাডাফ্রুট সার্ভো ড্রাইভার

- x18 মাইক্রো সার্ভস SG90s

- ওয়েবক্যাম প্লেস্টেশন চোখ

-রাস্পবেরি পাই -LM2596 স্টেপ ডাউন -x2 সুইচ -RGB LED

- তারের ভেরিও

ধাপ 1: ধাপ 1: ইমপ্রিমির টোডাস লাস পাইজাস দে লা এস্ট্রাক্টুরা

ধাপ 1: ইমপ্রিরিম টোডাস লাস পাইজাস দে লা ইস্ট্রাক্টুরা
ধাপ 1: ইমপ্রিরিম টোডাস লাস পাইজাস দে লা ইস্ট্রাক্টুরা

Es necesario imprimir todas las piezas।

Aqui podreis encontrar todos los archivos.stl:

Cabe destacar que las hemos impreso con las siguientes propiedades:

উপাদান: পিএলএ

infill: 25%

স্তর উচ্চতা: 0.12

গতি: 55 মিমি/সেকেন্ড

পদক্ষেপ 2: মন্টাজে দে লা এস্ট্রাক্টুরা

মন্টাজে দে লা এস্ট্রাক্টুরা
মন্টাজে দে লা এস্ট্রাক্টুরা

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।

নোটা: না ফিজাইস লস টর্নিলোস ডি লস সার্ভোস অ্যান্টেস ডি ক্যালিব্রার্লোস এন এল অ্যাপার্টো ডি সিডিগো।

ধাপ 3: মন্টাজে দে লা ইলেক্ট্রোনিকা

মন্টাজে দে লা ইলেক্ট্রোনিকা
মন্টাজে দে লা ইলেক্ট্রোনিকা
মন্টাজে দে লা ইলেক্ট্রোনিকা
মন্টাজে দে লা ইলেক্ট্রোনিকা
মন্টাজে দে লা ইলেক্ট্রোনিকা
মন্টাজে দে লা ইলেক্ট্রোনিকা

Aquí va una lista de los ingredientses utilizados y algunos consejos para el montaje।

- x18 মাইক্রো সার্ভস SG90s

- ওয়েবক্যাম প্লেস্টেশন চোখ

-রাস্পবেরি পাই

-LM2596 পদত্যাগ

-x2 সুইচ

- আরজিবি এলইডি

- তারের ভেরিও

Es importante que para conectar 2 adafruits servo ড্রাইভার, 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 de tenos que cambiarlo de signo।

"" "যুগ্ম_কি কনভেনশন: আর - ডান, এল - বাম এফ - সামনে, এম - মধ্যম, বি - পিছন এইচ - হিপ, কে - হাঁটু, এ - গোড়ালি কী: (চ্যানেল, সর্বনিম্ন_পালস_লেংথ, সর্বোচ্চ_পালস_লেংথ)" "" জিপিআইও.সেটওয়ার্নিং (মিথ্যা) 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), 'এলএমকে': (4, 250, 520, -1), 'এলএমএ': (5, 158, 565, -1), 'আরএমএইচ': (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), 'আরবিএ': (23, 210, 645, -1), 'এন': (18, 150, 650, 1)}

ধাপ 5: সফ্টওয়্যার: মডুলোস

সফটওয়্যার: মডুলোস
সফটওয়্যার: মডুলোস

Muldulo de reconocimiento de voz:

Para la বাস্তবায়ন de éste módulo hemos hecho deso de la API de Google 'Speech-to-Text'। Establecemos un stream con el cloud de Google, para obtener las respuestas en texto, y así poder procesarlas para accionar solo en los casos que nos interesa।

Para poder hacer úso de esta API necesitamos tener un proyecto registrado en Google Cloud, y de este descargar las credenciales para poder autenticar el robot।

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 speech-to-text।

El código para realizar el stream está proporcionado por google en su pagina oficial, muy bien documentado:

La función প্রিন্সিপাল ডেল স্ট্রিমিং 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 aviso 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: ইনস্টল করুন খোলা

পাসো 2: প্রবার লা ক্যামারা প্রাইম্রো দে টোডো উনা ভেজ ইন্সটালাদো ওপেনসিভি, লো ক্যু ভামোস এ হেসার এস আন পেকেনো স্ক্রিপ্ট এন পাইথন প্যারা প্রবার লা ক্যামারা। প্যারা এলো হারেমোস ক্যু সে আব্রান ডস ভেন্টানাস, উনা কন লা ইমেজেন অরিজিনাল ওয়াই ওট্রা কন লা ইমেজেন এন ব্ল্যাঙ্কো ওয়াই নিগ্রো।

np হিসাবে numpy আমদানি করুন

আমদানি cv2

ক্যাপ = সিভি ২. ভিডিওক্যাপচার (0)

যখন (সত্য): ret, frame = cap.read () ধূসর = cv2.cvtColor (ফ্রেম, cv2. COLOR_BGR2GRAY) cv2.imshow ('ফ্রেম', ফ্রেম) cv2.imshow ('ধূসর', ধূসর) যদি 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 व्याख्याটি)।

আমদানি sys

np আমদানি হিসাবে 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 cual dificultaría la detección por problemmas 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

np হিসাবে numpy আমদানি করুন

# পিকচার পড়ুন - 1 মানে আমরা বিজিআর -এ ছবিটি চাই

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)

# ছবির জন্য একটি মাস্ক তৈরি করুন

মাস্ক = cv2.in Range (hsv, lower_range, upper_range)

# মুখোশ এবং ছবি উভয়ই পাশাপাশি দেখান

cv2.imshow ('মুখোশ', মুখোশ) cv2.imshow ('ছবি', img)

# ব্যবহারকারীর [ESC] টিপতে অপেক্ষা করুন

যখন (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 colour hsv, que este sea capaz de encontrar de nord de los coordenado 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 (frame, (int (x), int (y)), int (radius), (0, 255), 255), 2) cv2.circle (ফ্রেম, কেন্দ্র, 5, (0, 0, 255), -1) # বৃত্তের মুদ্রণ কেন্দ্র স্থানাঙ্ক mapObjectPosition (int (x), int (y)) # যদি নেতৃত্ব হয় ইতিমধ্যে চালু নেই, LED না হলে LED চালু করুন: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] অবজেক্ট সেন্টার কোঅর্ডিনেট 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: অবজেক্ট ট্র্যাকিং লেলেগামোস আল পাসো ফাইনাল। 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।

রঙ নিম্ন = (-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):

মুদ্রণ ("[অ্যাকশন] গিরার ডেরাচা") 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 se 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, টি = 0.3)

A partir de este punto el programmador ya es libre de realizar modificaciones e ir jugando con parámetros y colores।

প্রস্তাবিত: