สารบัญ:

HexaWalker: 5 ขั้นตอน
HexaWalker: 5 ขั้นตอน

วีดีโอ: HexaWalker: 5 ขั้นตอน

วีดีโอ: HexaWalker: 5 ขั้นตอน
วีดีโอ: ปากกาหายากที่สุดในเกม #5 | Find The Markers Roblox 2024, กรกฎาคม
Anonim
Image
Image
เฮกซาวอล์คเกอร์
เฮกซาวอล์คเกอร์

Hemos echo un grupo de estudiantes de la UAB un robot hexapodo autonomo con una webcam กับ microfono mediante la cual puedes โต้ตอบกับ 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" รีโบติกา

Cabe comentar que la estructura que hemos utilizado para nuestro hexapodo la hemos sacado del robot โอเพ่นซอร์ส Hexy de ArcBotics

ลิงค์ที่เกี่ยวข้อง al codigo:

เสบียง

- แบตลิโพ 7.4V 2700mmAh

- ไดรเวอร์เซอร์โว adafruit x2

- x18 ไมโครเซอร์โว SG90s

- เว็บแคม playstation eye

-raspberry 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 ลาส 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 แนะนำ seguir la guía del autor de las piezas 3D:

เกีย:

ไม่มีความจำเป็นในการใช้งานตามคำแนะนำของคำแนะนำเกี่ยวกับหุ่นยนต์สำหรับหุ่นยนต์, ยาที่ใช้กันทั่วไปในคาสิโน, ใช้งานเดี่ยวและใช้งานฟรี

หมายเหตุ: no fijéis los tornillos de los servos antes de calibrarlos en el apartado de código

ขั้นตอนที่ 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

ส่วนประกอบ การใช้งาน และ algunos สำหรับ el montaje.- lipo baterry 7.4V 2700mmAh - x2 adafruit servo driver

- x18 ไมโครเซอร์โว SG90s

- เว็บแคม playstation eye

-ราสเบอร์รี่ปี่

-LM2596 ก้าวลง

-x2 สวิตช์

- RGB LED

- สายเคเบิลต่างๆ

สิ่งที่สำคัญสำหรับ conectar 2 ไดรเวอร์เซอร์โวของ adafruits, se suelde el bridge A0 de la segunda placa ลิงก์ este esta detallado: https://learn.adafruit.com/16-channel-pwm-servo-d… เกี่ยวกับ a los servos el orden en el que conectes los pines es indiferente ya que tendrás que configurar los mas adelante en el โคดิโก คำอธิบาย en el apartado de código.

ขั้นตอนที่ 4: ซอฟต์แวร์: Calibraje De Servos

Antes de nada se tiene que กำหนดค่า 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 revcionando เดียว เก แคมเบียร์โล เด ซิญโญ

""" joint_key Convention: R - right, L - left F - front, M - middle, B - back H - hip, K - knee, A - Ankle key: (channel, maximum_pulse_length, maximum_pulse_length) """ 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
ซอฟต์แวร์: Modulos

โมดูโล เด เรโคโนซิเมียนโต เด วอซ:

Para la Impalación de éste módulo hemos hecho úso de la API ของ Google 'Speech-to-Text' สถานะการสตรีมกับระบบคลาวด์ของ Google สำหรับความช่วยเหลือและข้อความที่เกี่ยวข้อง

พารามิเตอร์สำหรับนักพัฒนาและ API ที่จำเป็นต้องใช้ในการลงทะเบียนบน Google Cloud, และ 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 ของคำพูดเป็นข้อความ

El código para realizar el streaming está proporcionado por google en su pagina oficial, เอกสารประกอบ:https://cloud.google.com/speech-to-text/docs/stre…

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 ac de hacer en de voz no es reconocido, หุ่นยนต์สำหรับ que el realice un movimiento que simula no haber entendido al usuario

เอล código adaptado se encuentra en el repositorio de git Hexawalker

github.com/RLP2019/HEXAWALKER/blob/master/…

PASO 1: INSTALL OPENCVHemos seguido la instalación de un profesional como es Adrian Rosebrock, en su pàgina web:

PASO 2: PROBAR LA CAMARA Primero สิ่งที่ต้องทำ 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 และ negro

นำเข้า numpy เป็น np

นำเข้า cv2

หมวก = cv2. VideoCapture(0)

while(True): ret, frame = cap.read() grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) cv2.imshow('frame', frame) cv2.imshow('gray', grey) ถ้า cv2.waitKey (1) & 0xFF == ord('q'): แตก

หมวกปล่อย ()

cv2.destroyAllWindows()

PASO 3: DETECCIÓN DEL COLOR CON OPENCV Para el siguiente paso lo que vamos a realizar es una detección de สี Para ello, primero de todo vamos a realizar un script que nos permita convertir un color en orden BGR a HSV (รูปแบบ en el que opencv es capaz de interpretar)

นำเข้าsys

นำเข้าจำนวนเป็น 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 ที่ยังไม่ได้ทำสี 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 ล่วงหน้า Lo que nos mostrará como resultado será la imagen que nosotros le pasemos (con el color u objeto a detectar) แปลง 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)

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

#สร้างหน้ากากให้ภาพ

หน้ากาก = cv2.inRange (hsv, lower_range, upper_range)

#แสดงทั้งหน้ากากและภาพเคียงข้างกัน

cv2.imshow('mask', mask) cv2.imshow('image', img)

#รอผู้ใช้กด [ESC]

while(1): k = cv2.waitKey(0) if(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 เดอ co encontrae เดอ encontra en este caso lo que crearemos será un script para que cuando el radio de nuestro นายกเทศมนตรีทะเล a 10, พูดคุยทั่วไป เกี่ยวกับ 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 ถ้าไม่ได้ ledOn: GPIO.output(redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Object Center coordenates at X0 = {0} and Y0 = {1}".format(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 ín ín n ภาพเคลื่อนไหว

PASO 5: การติดตามวัตถุ Llegamos al paso รอบชิงชนะเลิศ Una vez realizados los anteriores puntos, estaremos listos para poder configurar un par de parametros 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 และ dtectar el objeto.

colorLower = (-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 ล่วงหน้า

ถ้า (x 280):

พิมพ์ ("[ACTION] GIRAR DERECHA") self.hexa.rotate(offset = -15, repetitions = 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 การคำนวณ el radio para marcar otro límite en caso de proximidad de la pelota Cuanto mas cerca este la pelota de nuestro หุ่นยนต์ ¡, 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 partir de este punto el programador ya es libre de realizar modificaciones e ir jugando con parametros y colores.

แนะนำ: