Mục lục:
- Quân nhu
- Bước 1: Bước 1: Imprimir Todas Las Piezas De La Estructura
- Bước 2: Montaje De La Estructura
- Bước 3: Montaje De La Electronica
- Bước 4: Phần mềm: Calibraje De Servos
- Bước 5: Phần mềm: Modulos
Video: HexaWalker: 5 bước
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-09 20:34
Hemos echo un grupo de estudiantes de la UAB un robot hexapodo autonomo con una webcam con micrófono mediante la cual puedes tương tácuar con el. La idea era hacer un robot amistoso que regnociera ordenes de voz y pueda seguir mediante la cámara una pelota. Algo así como una "mascota" rebotica.
Cabe comentar que la estructura que hemos usedizado para nuestro hexapodo la hemos sacado del robot mã nguồn mở Hexy de ArcBotics.
Aquí el link al codigo:
Quân nhu
- lipo baterry 7.4V 2700mmAh
- x2 trình điều khiển servo adafruit
- x18 micro servos SG90s
- mắt máy chơi game webcam
-raspberry pi -LM2596 bước xuống -x2 công tắc - LED RGB
- các loại cáp
Bước 1: Bước 1: Imprimir Todas Las Piezas De La Estructura
Es necesario printmir todas las piezas.
Aqui podreis encontrar todos los archivos.stl:
Cabe destacar que las hemos impreso con las siguientes propiedades:
vật chất: PLA
điền vào: 25%
chiều cao lớp: 0,12
tốc độ: 55 mm / s
Bước 2: Montaje De La Estructura
Para el montaje de la estructura recomendamos seguir la guía del autor de las piezas 3D:
guía:
No es necesario seguir las Guiducciones estrictamente para el buen funcionamiento del rô bốt, ya que en nuestro caso, solo las hemos Operatingizado como ayuda.
Nota: no fijéis los tornillos de los servos antes de calrarlos en el apartado de código.
Bước 3: Montaje De La Electronica
Các thành phần Aquí va una lista de los useizados y algunos consejos para el montaje.- lipo baterry 7.4V 2700mmAh - Trình điều khiển servo x2 adafruit
- x18 micro servos SG90s
- mắt máy chơi game webcam
-raspberry pi
-LM2596 bước xuống
-x2 công tắc
- Đèn LED RGB
- các loại cáp
Es importante que para conectar 2 adafruits servo driver, se suelde el bridge A0 de la segunda emba. 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 indferente ya que tensrás que configurar los mas adelante en el código. Explicado en el apartado de código.
Bước 4: Phần mềm: 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 Idificado 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.
"" "quy ước phím khớp: R - phải, L - trái F - trước, M - giữa, B - sau H - hông, K - đầu gối, A - Phím cổ chân: (kênh, tối thiểu_pulse_length, max_pulse_length)" "" GPIO.setwarnings (Sai) 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)}
Bước 5: Phần mềm: Modulos
Módulo de regnocimiento 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 Featsa.
Para poder hacer úso de esta API necesitamos tener un proyecto registerrado vi Google Cloud, y de este descargar las credenciales para poder autenticar el robot.
Para Guardar las credenciales en una biến de entorno tenemos que ejecutar el siguiente comando (Raspbian):
xuất 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á ratiocionado bởi google en su pagina of Justice, muy bien documentado:
La función major del streaming es 'listening_print_loop', la encargada de decidir cual es la respuesta que se aproxima más al input Recogbido, y donde hemos controlado las respuestas para poder comunicarle al robot cuando ha de hacer una acción, o para avisarle que el comando de voz no es recnocido, para que el robot realice un phimmiento 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: CÀI ĐẶT OPENCVHemos seguido la instalación de un profesional como es Adrian Rosebrock, en 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.
nhập numpy dưới dạng np
nhập cv2
cap = cv2. VideoCapture (0)
while (True): ret, frame = cap.read () gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('gray', gray) if cv2.waitKey (1) & 0xFF == ord ('q'): ngắt
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 allowa converttir un color en orden BGR a HSV (formato en el que opencv es capaz depretar).
nhập hệ thống
import numpy dưới dạng np import cv2 blue = sys.argv [1] green = sys.argv [2] red = sys.argv [3] color = np.uint8 (
Una vez hayamos hecho la seekió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 una, lo cual dificultaría la detección bởi 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 detar) converttida en una máscara, aislando todos los colres que no se encuentren en ese rango hsv que hemos Defdo.
nhập cv2
nhập numpy dưới dạng np
# Đọc hình ảnh - Điều 1 có nghĩa là chúng tôi muốn hình ảnh trong BGR
img = cv2.imread ('yellow_object.jpg', 1)
# thay đổi kích thước hình ảnh thành 20% trong mỗi trục
img = cv2.resize (img, (0, 0), fx = 0.2, fy = 0.2) # chuyển đổi hình ảnh BGR thành hình ảnh HSV hsv = cv2.cvtColor (img, cv2. COLOR_BGR2HSV)
# NumPy để tạo mảng để giữ dải ô dưới và dải trên
# “Dtype = np.uint8” có nghĩa là kiểu dữ liệu là số nguyên 8 bit
low_range = np.array ([24, 100, 100], dtype = np.uint8)
upper_range = np.array ([44, 255, 255], dtype = np.uint8)
# tạo mặt nạ cho hình ảnh
mask = cv2.inRange (hsv, low_range, upper_range)
# hiển thị cả mặt nạ và hình ảnh cạnh nhau
cv2.imshow ('mask', mask) cv2.imshow ('image', img)
# đợi người dùng nhấn [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 coordenadas x e y del centro de nuestro objeto. En este caso lo que crearemos será un script para que cuando el radio de nuestro objeto sea thị trưởng a 10, dibuje un roundo sobre el objeto y nos vaya mostrando por pantalla la posición en tiempo real sus coordenadas x e y.
# chỉ tiếp tục nếu bán kính đáp ứng kích thước tối thiểu
nếu radius> 10: # vẽ đường tròn và tâm trên khung, # sau đó cập nhật danh sách các điểm được theo dõi cv2.circle (frame, (int (x), int (y)), int (radius), (0, 255, 255), 2) cv2.circle (frame, center, 5, (0, 0, 255), -1) # in trung tâm của bản đồ tọa độ vòng trònObjectPosition (int (x), int (y)) # nếu led là chưa bật, hãy bật đèn LED nếu chưa ledOn: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Trung tâm đối tượng coordenates tại X0 = {0} và 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íearch de lo que será girar a la derecha nuestro robot, girar a la izquierda o bien no realizar ningún phimmiento al no salir por ningún límite.
PASO 5: THEO DÕI ĐỐI TƯỢNG trận chung kết Llegamos al paso. Una vez realizados thua anteriores puntos, estaremos listos para poder configurar un par de parámetros y poner a funcionar nuestra detección. Para ello utizaremos 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.
nếu (x 280):
print ("[ACTION] GIRAR DERECHA") self.hexa.rotate (offset = -15, số lần lặp lại = 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 effizar la biến 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.
nếu bán kính <105: self.hexa.walk (đu = 40, số lần lặp lại = 1, nâng lên = -30, sàn = 50, t = 0,3)
A partir de este punto el programador ya es libre de realizar modificaciones e ir jugando con parámetros y colres.
Đề xuất:
Động cơ bước Điều khiển động cơ bước Không cần vi điều khiển !: 6 bước
Động cơ bước Điều khiển động cơ bước Không cần vi điều khiển !: Trong phần Hướng dẫn nhanh này, chúng tôi sẽ tạo một bộ điều khiển động cơ bước đơn giản bằng cách sử dụng động cơ bước. Dự án này không yêu cầu mạch phức tạp hoặc vi điều khiển. Vì vậy, không cần thêm ado, chúng ta hãy bắt đầu
Động cơ bước được điều khiển Động cơ bước không có vi điều khiển (V2): 9 bước (có hình ảnh)
Động cơ bước được điều khiển bằng động cơ bước Không cần vi điều khiển (V2): Trong một trong những Hướng dẫn trước đây của tôi, tôi đã chỉ cho bạn cách điều khiển động cơ bước bằng cách sử dụng động cơ bước mà không cần vi điều khiển. Đó là một dự án nhanh chóng và thú vị nhưng nó đi kèm với hai vấn đề sẽ được giải quyết trong Có thể hướng dẫn này. Vì vậy, hóm hỉnh
Đầu máy mô hình điều khiển động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Đầu máy mô hình điều khiển động cơ bước | Động cơ bước làm bộ mã hóa quay: Trong một trong những phần Hướng dẫn trước, chúng ta đã học cách sử dụng động cơ bước làm bộ mã hóa quay. Trong dự án này, bây giờ chúng ta sẽ sử dụng bộ mã hóa quay động cơ bước đó để điều khiển đầu máy mô hình bằng vi điều khiển Arduino. Vì vậy, không có fu
Âm thanh bay bổng với Arduino Uno Từng bước (8 bước): 8 bước
Acoustic Levitation With Arduino Uno Step-by-by-by (8 bước): bộ chuyển đổi âm thanh siêu âm L298N Dc cấp nguồn cho bộ chuyển đổi âm thanh nữ với chân cắm một chiều nam Arduino UNOBreadboard Cách hoạt động: Đầu tiên, bạn tải mã lên Arduino Uno (nó là một vi điều khiển được trang bị kỹ thuật số và các cổng tương tự để chuyển đổi mã (C ++)
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy