Tartalomjegyzék:
- Kellékek
- 1. lépés: 1. lépés: Imprimir Todas Las Piezas De La Estructura
- 2. lépés: Montaje De La Estructura
- 3. lépés: Montaje De La Electronica
- 4. lépés: Szoftver: Calibraje De Servos
- 5. lépés: Szoftver: Modulos
Videó: HexaWalker: 5 lépés
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-09 20:34
Hemos echo un grupo de estudiantes de la UAB un robot hexapodo autonomo with a webcam with micrófono mediante la cual puedes interactuar con el. Az ötletkorszak hacer un robot amistoso que reconociera ordenes de voz y pueda seguir mediante la cámara una pelota. Algo así como una "mascota" rebotica.
Ingyenes Ingyenes Ingyenes Ingyenes Ingyenes Cabe Commentar que la estructura que hemos utilizado para nuestro hexapodo la hemos sacado del robot nyílt forráskódú Hexy de ArcBotics.
Aquí el link al codigo:
Kellékek
- lipo akkumulátor 7,4V 2700mmAh
- x2 adafruit szervo meghajtó
- x18 mikro szervó SG90
- webkamera playstation eye
-málna pi -LM2596 lefelé -x2 kapcsolók -RGB LED
- kábelek
1. lépés: 1. lépés: 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:
anyaga: PLA
kitöltés: 25%
rétegmagasság: 0,12
sebesség: 55 mm/s
2. lépés: Montaje De La Estructura
Para el montaje de la estructura recomendamos seguir la guía del autor de las piezas 3D:
guía:
Nincs szükség segédprogramokra, amelyek a robot robotnak, a robotnak, a que -nak és a caso -nak, egyedül a hemos utilizado como ayuda -nak vannak.
Megjegyzés: no fijéis los tornillos de los servos antes de calibrarlos en el apartado de código.
3. lépés: Montaje De La Electronica
Aqua va una list de los komponensek utilizados y algunos consejos para el montaje. - lipo akkumulátor 7.4V 2700mmAh - x2 adafruit szervo driver
- x18 mikro szervó SG90
- webkamera playstation eye
-Raspberry Pi
-LM2596 lépjen le
-x2 kapcsoló
- RGB LED
- kábelek
Az import que para conectar 2 adafruits servo driver, 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. lépés: Szoftver: 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 identifado 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.
"" "közös_kulcs konvenció: R - jobb, L - bal F - elöl, M - középen, B - hátul H - csípő, K - térd, A - bokakulcs: (csatorna, minimális_impulzus_hossz, maximális_pulzus_hossz)" "" GPIO.setwarnings [Hamis] GPIO.setmode (GPIO. BOARD)
közös_tulajdonok = {
„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. lépés: Szoftver: Modulos
Módosítási mód:
Para la implementación de éste módulo hemos hecho úso de la API de Google 'Speech-to-Text'. Establecemos un streaming on Google cloud, para obtener las respuestas en texto, y así poder processarras for accionar solo and los casos que nos interesa.
A poder hacer úso de esta API szükséges a tenerhez és a proyecto regisztrációhoz a Google Cloud -ban, és de descargar las credenciales para poder autenticar el robot.
Para guardar las credenciales en unaa de entorno tenemos que ejecutar el siguiente comando (raspbian):
export 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 official, muy bien documentado:
A szórakoztatás fő iránya a 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 de hacer una acción, o para avisarle que el comando 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: INSTALL OPENCVHemos seguido la instalación de un professional como es Adrian Rosebrock, a weblapon:
2. PASO: 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.
importálja a numpy -t np -ként
import cv2
cap = cv2. VideoCapture (0)
míg (igaz): ret, frame = cap.read () szürke = cv2.cvtColor (keret, cv2. COLOR_BGR2GRAY) cv2.imshow ('keret', keret) cv2.imshow ('szürke', szürke), ha cv2.waitKey (1) & 0xFF == ord ('q'): szünet
cap.release ()
cv2.destroyAllWindows ()
3. PASO: 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).
rendszer importálása
importálás numpy np -ként import cv2 kék = sys.argv [1] zöld = sys.argv [2] piros = sys.argv [3] szín = 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 uno, lo cual dificultaría la detección por problem 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 an detectar) convertida en una máscara, aislando todos los colores que no se encuentren en ese rango hsv que hemos definido.
import cv2
importálja a numpy -t np -ként
# Olvassa el a képet - Az 1 azt jelenti, hogy a képet BGR -ben szeretnénk
img = cv2.imread ('sárga_objektum.jpg', 1)
# méretezze át a képméretet 20% -ra minden tengelyen
img = cv2.resize (img, (0, 0), fx = 0.2, fy = 0.2) # konvertálja a BGR képet HSV képképpé hsv = cv2.cvtColor (img, cv2. COLOR_BGR2HSV)
# NumPy tömbök létrehozásához az alsó és felső tartomány tartásához
# A „dtype = np.uint8” azt jelenti, hogy az adattípus 8 bites egész szám
alsó_tartomány = np.tömb ([24, 100, 100], dtype = np.uint8)
felső_tartomány = np.array ([44, 255, 255], dtype = np.uint8)
# hozzon létre egy maszkot a képhez
maszk = cv2.inRange (hsv, alsó_tartomány, felső_tartomány)
# egymás mellett jelenítse meg a maszkot és a képet
cv2.imshow ('maszk', maszk) cv2.imshow ('kép', img)
# várjon, amíg a felhasználó megnyomja az [ESC] gombot
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 del de. En este caso lo que crearemos será un script para que cuando el radio de nuestro objeto sea polgármester 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.
# csak akkor folytassa, ha a sugár eléri a minimális méretet
ha a sugár> 10: # rajzolja a kört és a középpontot a keretre, # majd frissítse a követett pontok listáját cv2.circle (frame, (int (x), int (y)), int (sugar), (0, 255, 255), 2) cv2.circle (frame, center, 5, (0, 0, 255), -1) # kör középpontjának nyomtatási középpontja mapObjectPosition (int (x), int (y)) #, ha a led még nincs bekapcsolva, kapcsolja be a LED -et, ha nem világít On: GPIO.output (redLed, GPIO. HIGH) ledOn = True def mapObjectPosition (x, y): print ("[INFO] Objektumközpont X0 = {0} és Y0 = {1} ". Formátum (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 seri 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.
5. PASO: TÁRGYKÖVETÉS 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.
ha (x 280):
print ("[ACTION] GIRAR DERECHA") self.hexa.rotate (eltolás = -15, ismétlés = 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 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 nagyszerű rádió és rádió és por tanto más cerca estará nuestro robot en obguivo.
ha sugara <105: saját.hexa.séta (lengés = 40, ismétlés = 1, emelt = -30, padló = 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.
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Élő 4G/5G HD videó streamelés DJI drónról alacsony késleltetéssel [3 lépés]: 3 lépés
Élő 4G/5G HD videó streaming a DJI Drone-tól alacsony késleltetéssel [3 lépés]: Az alábbi útmutató segít abban, hogy szinte bármilyen DJI drónról élő HD minőségű videó streameket kapjon. A FlytOS mobilalkalmazás és a FlytNow webes alkalmazás segítségével elindíthatja a videó streamingjét a drónról
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
4 lépés az akkumulátor belső ellenállásának méréséhez: 4 lépés
4 lépés az akkumulátor belső ellenállásának mérésére: Íme a 4 egyszerű lépés, amelyek segítenek mérni az akkumulátor belső ellenállását