Daftar Isi:
- Perlengkapan
- Langkah 1: Langkah 1: Imprimir Todas Las Piezas De La Estructura
- Langkah 2: Montaje De La Estructura
- Langkah 3: Montaje De La Electronica
- Langkah 4: Perangkat Lunak: Calibraje De Servos
- Langkah 5: Perangkat Lunak: Modulo
Video: HexaWalker: 5 Langkah
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-09 20:34
Hemos echo un grupo de estudiantes de la UAB dan robot hexapodo autonomo con una webcam con micrófono mediante la cual puedes interaksi con el. La idea era hacer un robot amistoso que reconociera ordenes de voz y pueda seguir mediaante la cámara una pelota. Algo así como una "mascota" rebotica.
Cabe comentar que la esstructura que hemos utilizado para nuestro hexapodo la hemos sacado del robot open source Hexy de ArcBotics.
Aquí el link al codigo:
Perlengkapan
- baterai lipo 7.4V 2700mmAh
- driver servo adafruit x2
- x18 mikro servo SG90s
- mata playstation webcam
-raspberry pi -LM2596 step down -x2 switch - LED RGB
- kabel varios
Langkah 1: Langkah 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:
bahan: PLA
isi: 25%
tinggi lapisan: 0.12
kecepatan: 55 mm/s
Langkah 2: Montaje De La Estructura
Para el montaje de la esstructura recomendamos seguir la guía del autor de las piezas 3D:
guía:
Tidak diperlukan seguir las instrucciones estrictamente para el buen funcionamiento del robot, ya que en nuestro caso, solo las hemos utilizado como ayuda.
Catatan: tidak ada fijéis los tornillos de los servos antes de calibrarlos en el apartado de código.
Langkah 3: Montaje De La Electronica
Aquí va una lista de los componentes utilizados y algunos consejos para el montaje.- lipo baterry 7.4V 2700mmAh - x2 adafruit servo driver
- x18 mikro servo SG90s
- mata playstation webcam
-raspberry pi
-LM2596 mundur
-x2 sakelar
- LED RGB
- kabel varios
Penting untuk menghubungkan 2 driver servo adafruits, 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 kodigo. Penjelasan en el apartado de código.
Langkah 4: Perangkat Lunak: 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ébería de com que cambiarlo de signo.
""" konvensi joint_key: R - kanan, L - kiri F - depan, M - tengah, B - belakang H - pinggul, K - lutut, A - Kunci pergelangan kaki: (channel, minimum_pulse_length, maximum_pulse_length) """ GPIO.setwarnings (Salah) GPIO.setmode(GPIO. BOARD)
properti_bersama = {
'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) }
Langkah 5: Perangkat Lunak: Modulo
Modulo de reconocimiento de voz:
Para la implementación de éste módulo hemos hecho so de la API de Google 'Speech-to-Text'. Establecemos un streaming 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 diperlukan untuk mendaftar proyecto registrar di Google Cloud, y de este descargar las credenciales untuk poder autenticar el robot.
Para guardar las credenciales en una variable de entorno tenemos que ejecutar el siguiente comando (Raspbian):
ekspor 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 streaming está proporcionado por google en su pagina oficial, muy bien documentado:https://cloud.google.com/speech-to-text/docs/stre…
La función prinsip del streaming es 'listen_print_loop', la encargada de decidir cual es la respuesta que se aproxima más al masukan recibido, y donde hemos controlado las respuestas para poder comunicarle al robot cuando ha de hacer una acción, o para elavisar de voz no es reconocido, para que el robot realice un movimiento que simula no haber entendido al usuario.
El código beradaptasi dengan encuentra en el repositorio de git Hexwalker
github.com/RLP2019/HEXAWALKER/blob/master/…
PASO 1: INSTALL OPENCVHemos seguido la instalación de un profesional como es Adrian Rosebrock, di su 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.
impor numpy sebagai np
impor cv2
tutup = 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'): istirahat
tutup.rilis()
cv2.destroySemuaWindows()
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 interpretar).
sistem impor
import numpy as 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 masalah sulit terdeteksi.
El siguiente paso es con una imagen previamente realizada, crear otro script el cual nos servirá para probar el paso anterior. Lebih banyak hasil yang didapat dari 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.
impor cv2
impor numpy sebagai np
# Baca gambar - 1 berarti kita ingin gambar di BGR
img = cv2.imread('yellow_object.jpg', 1)
# ubah ukuran gambar menjadi 20% di setiap sumbu
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2) # mengonversi gambar BGR ke gambar HSV hsv = cv2.cvtColor(img, cv2. COLOR_BGR2HSV)
# NumPy untuk membuat array untuk menahan rentang bawah dan atas
# The “dtype = np.uint8” berarti tipe data adalah bilangan bulat 8 bit
lower_range = np.array([24, 100, 100], dtype=np.uint8)
upper_range = np.array([44, 255, 255], dtype=np.uint8)
# buat topeng untuk gambar
mask = cv2.inRange(hsv, lower_range, upper_range)
# tampilkan topeng dan gambar secara berdampingan
cv2.imshow('topeng', topeng) cv2.imshow('gambar', img)
# tunggu pengguna menekan [ESC]
while(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 color hsv, que este sea capaz de encontrar las coory. 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.
# hanya lanjutkan jika radius memenuhi ukuran minimum
jika radius > 10: # gambar lingkaran dan centroid pada frame, # kemudian perbarui daftar titik yang dilacak cv2.circle(frame, (int(x), int(y)), int(radius), (0, 255, 255), 2) cv2.circle(frame, center, 5, (0, 0, 255), -1) # cetak koordinat pusat lingkaran mapObjectPosition(int(x), int(y)) # jika lednya belum menyala, nyalakan LED jika tidak ledOn: GPIO.output(redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Object Center berkoordinasi pada X0 = {0} dan 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 tidak ada tindakan nyata.
PASO 5: PELACAKAN OBJEK Llegamos al paso final. 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.
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.
jika (x280):
print ("[TINDAKAN] GIRAR DERECHA") self.hexa.rotate(offset = -15, pengulangan = 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 variabel 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 port tanto más cerca estará nuestro robot en conseguir su objetivo.
jika radius < 105: self.hexa.walk(ayunan = 40, pengulangan = 1, dinaikkan = -30, lantai = 50, t = 0,3)
A partir de este punto el programador ya es libre de realizar modificaciones e ir jugando con parámetros y colores.
Direkomendasikan:
Sistem Peringatan Parkir Terbalik Mobil Arduino - Langkah demi Langkah: 4 Langkah
Sistem Peringatan Parkir Mundur Mobil Arduino | Langkah demi Langkah: Pada proyek kali ini, saya akan merancang Rangkaian Sensor Parkir Mundur Mobil Arduino sederhana menggunakan Sensor Ultrasonik Arduino UNO dan HC-SR04. Sistem peringatan mundur mobil berbasis Arduino ini dapat digunakan untuk Navigasi Otonom, Jarak Robot, dan r
Langkah demi Langkah Membangun PC: 9 Langkah
Langkah demi Langkah Membangun PC: Perlengkapan: Perangkat Keras: MotherboardCPU & Pendingin CPUPSU (Unit catu daya)Penyimpanan (HDD/SSD)RAMGPU (tidak diperlukan)Kasing Alat: Obeng Gelang ESD/pasta matstermal dengan aplikator
Tiga Sirkuit Loudspeaker -- Tutorial Langkah-demi-Langkah: 3 Langkah
Tiga Sirkuit Loudspeaker || Tutorial Langkah-demi-Langkah: Sirkuit Loudspeaker memperkuat sinyal audio yang diterima dari lingkungan ke MIC dan mengirimkannya ke Speaker dari mana audio yang diperkuat diproduksi. Di sini, saya akan menunjukkan kepada Anda tiga cara berbeda untuk membuat Sirkuit Loudspeaker ini menggunakan:
Pendidikan Langkah demi Langkah dalam Robotika Dengan Kit: 6 Langkah
Pendidikan Selangkah demi Selangkah dalam Robotika Dengan Kit: Setelah beberapa bulan membuat robot saya sendiri (silakan lihat semua ini), dan setelah dua kali mengalami bagian yang gagal, saya memutuskan untuk mengambil langkah mundur dan memikirkan kembali strategi dan arahan. Pengalaman beberapa bulan terkadang sangat bermanfaat, dan
Levitasi Akustik Dengan Arduino Uno Langkah-demi-Langkah (8-langkah): 8 Langkah
Akustik Levitation Dengan Arduino Uno Langkah-demi-Langkah (8-langkah): transduser suara ultrasonik L298N Dc female adapter power supply dengan pin dc laki-laki Arduino UNOBreadboardCara kerjanya: Pertama, Anda mengunggah kode ke Arduino Uno (ini adalah mikrokontroler yang dilengkapi dengan digital dan port analog untuk mengonversi kode (C++)