Darse cuenta del uso de la voz para controlar el movimiento del brazo robótico myCobot

Un intento de inteligenteizar el control del brazo robótico basado en la tecnología de reconocimiento de voz

introducir:

En la película Iron Man, vemos a Tony Stark comunicándose con la inteligencia artificial Jarvis mientras construye el dispositivo. Tony le describió las piezas que necesitaba a Jarvis, y Jarvis controló el brazo robótico para ayudar a Tony a completar la tarea. Con la tecnología actual, esta realización es solo cuestión de tiempo. Por lo tanto, decidí intentar implementar esta función yo mismo, usando el control de voz para operar el brazo robótico, para lograr una aplicación simple de inteligencia artificial.

Yo era el único responsable de conectar y controlar el brazo robótico y la placa de desarrollo de voz, activando el movimiento del brazo robótico a través de comandos específicos. Este es un proyecto desafiante, porque la tecnología de control de voz involucra múltiples aspectos, como el reconocimiento de voz, el procesamiento de señales y el control de robots, lo que requiere que aprenda y comprenda conocimientos relacionados. A través de este artículo, espero compartir el proceso de implementación de mi proyecto, los logros y las lecciones aprendidas para inspirar y ayudar a otros estudiantes que trabajan en el campo de la robótica y el control por voz.

Para implementar este proyecto, primero necesitaba resolver dos problemas principales: cómo procesar la señal de voz y cómo controlar el brazo robótico.

Procesar señales de voz:

Pasos para procesar una señal de voz:

● Selección de hardware: elija una placa de desarrollo adecuada (Arduino, Raspberry Pi, etc.).

● Procesamiento de la señal del micrófono: seleccione un micrófono adecuado para la recopilación y convierta la señal de voz recopilada en una señal digital a través de un convertidor de analógico a digital.

● Procesamiento de señal: la señal recopilada se procesa mediante reducción y filtrado de ruido. Se extraen características útiles y las señales de características se procesan mediante algoritmos de reconocimiento de voz para enviar señales digitales a la computadora.

Controla el brazo robótico:

● Utilice un brazo mecánico simple y fácil de operar.

Lo anterior es la solución a dos problemas principales. Sin embargo, después de la investigación, ¡desarrollar una placa de desarrollo que pueda manejar señales de voz es mucho trabajo! Afortunadamente, ahora hay placas de desarrollo de voz integradas en el mercado, y podemos comprar una directamente para usar.

Placa de desarrollo de voz HLK-V20

La placa de desarrollo HLK-V20 es una placa compleja con dos interfaces IO: una para salida de voz y otra para entrada de voz. Se puede conectar a un ordenador a través de un puerto serie.

Brazo robótico MyCobot 280 M5Stack 2023

Para el brazo robótico, elegí el popular brazo robótico de escritorio, myCobot 280 M5Stack 2023, desarrollado por Elephant Robotics. El brazo robótico se sometió recientemente a una importante actualización de software, lo que permite una velocidad de comunicación en serie de 20 ms y una rica interfaz compatible con lenguajes de programación populares como Python y C++. Elegí este brazo robótico por varias razones, incluido su tamaño compacto, su rica interfaz API de Python (soy bueno programando) y su facilidad de instalación y uso.

Lenguaje de programación: Python 3.7+

Plataforma: windows11

Bibliotecas de Python utilizadas: serial, pymycobot, time.

desarrollo del proyecto

En el desarrollo del proyecto, se involucran cuatro pasos principales:

● Entrada de voz

● La placa de desarrollo recupera la información de voz y la transmite a la PC

● PC procesa la información recibida

● Enviar comandos de control de movimiento al brazo robótico para el movimiento

Para observar cómo la placa transmite datos y qué tipo de datos devuelve, use la biblioteca serial en Python para manipular el puerto serial. La biblioteca tiene métodos para abrir, cerrar, leer y escribir datos desde el puerto serie.

'''
For instance, the serial.Serial() method is used to open the serial port and connect it to the PC, while the serial.read() method reads the data transmitted from the serial port.
'''
import serial
s = serial.Serial("COM9",115200)
r = s.read()
while True:
print(r)

Copiar

Estos son los datos obtenidos de read().

Al analizar los datos transmitidos desde la placa de desarrollo, la palabra de activación de la placa de desarrollo se reconoce como "wakeup_uni", y la palabra clave "uArTcp" indica el inicio del siguiente comando.

Se encuentra que los datos recibidos están concatenados, y cada vez que se ingresa un comando, se concatena con el comando anterior.

Se encuentra que los datos recibidos están concatenados, y cada vez que se ingresa un comando, se concatena con el comando anterior. Para verificar si la placa ha recibido una entrada de voz, se utiliza la declaración if a in b:, antepuesta con el comando de entrada y su palabra clave correspondiente. Por ejemplo, la palabra de activación se establece en "wakeup_uni" y se establecen 4 palabras de aviso para la prueba.

#set prompt word
hi_mycobot = b'openled'
dancing = b'zengjialiangdu'
nod_head = b'jianxiaoliangdu'
go_back = b'closeled'
# run frame
while True:
r += s.read()
if wake_up in r:
print("wake")
wake = True
r = b''
if wake and hi_mycobot in r:
print("Hi myCobot")
r = b''
if wake and dancing in r:
print("dancing")
r = b''
if wake and nod_head in r:
print('nod your head')
r = b''
if wake and go_back in r:
print('Go back')
r = b''
if wake and _exit in r:
print("exit")
r = b''
# print(r)s

Copiar

Aquí están los resultados de la prueba.

La biblioteca pymycobot es una biblioteca de interfaz de llamada API de brazo robótico desarrollada por Elephant Robotics. El método de uso específico está en Gitbook (proporcionado por Elephant Robotics).

# import library
from pymycobot import Mycobot
import time
# Create an instance object for later use
mc = Mycobot('COM9',115200)
#Control the mechanical arm to move at a speed of 70 according to the angle in the list,send_angles([angles],speed)
mc.send_angles([0.87,(-50.44),47.28,0.35,(-0.43),(-0.26)],70)
# Execute the next command after a delay of x seconds (the movement of the robotic arm takes time)
time.sleep(x)

Copiar

A continuación, combine las dos partes del código.

import serial
from pymycobot import MyCobot
import time
s = serial.Serial("COM6",115200)
mc = MyCobot('COM3',115200)
r = b''
wake_up = b'wakeup_uni'
_exit = b'exitUni'
hi_mycobot = b'openled'
dancing = b'zengjialiangdu'
nod_head = b'jianxiaoliangdu'
go_back = b'closeled'
wake = False
while True:
r += s.read()
if wake_up in r:
print("wake")
wake = True
r = b''
if wake and hi_mycobot in r:
print("Hi myCobot")
# say hi shake with you
mc.send_angles([0.87,(-50.44),47.28,0.35,(-0.43),(-0.26)],70)
time.sleep(1)
for count in range(3):
mc.send_angle(1,30,80)
time.sleep(1)
mc.send_angle(1,(-30),80)
time.sleep(1)
mc.send_angles([0,0,0,0,0,0],70)
r = b''
if wake and dancing in r:
print("dancing")
mc.send_angles([0,0,0,0,0,0],80)
time.sleep(1)
for count in range(2):
mc.send_angles([(-0.17),(-94.3),118.91,(-39.9),59.32,(-0.52)],80)
time.sleep(1.2)
mc.send_angles([67.85,(-3.42),(-116.98),106.52,23.11,(-0.52)],80)
time.sleep(1.7)
mc.send_angles([(-38.14),(-115.04),116.63,69.69,3.25,(-11.6)],80)
time.sleep(1.7)
mc.send_angles([2.72,(-26.19),140.27,(-110.74),(-6.15),(-11.25)],80)
time.sleep(1)
mc.send_angles([0,0,0,0,0,0],80)
r = b''
if wake and nod_head in r:
print('nod your head')
mc.send_angles([0,0,0,0,0,0],70)
time.sleep(1)
mc.send_angles([3.07,(-86.3),75.32,11.86,2.72,(-0.35)],70)
time.sleep(0.5)
for count in range(4):
mc.send_angle(4,13,70)
time.sleep(0.5)
mc.send_angle(4,(-60),70)
time.sleep(1)
mc.send_angle(4,13,70)
time.sleep(0.5)
mc.send_angles([0,0,0,0,0,0],70)
r = b''
if wake and go_back in r:
print('Go back')
mc.send_angles([12.83,(-138.95),156.09,(-12.3),(-12.91),35.41],70)
r = b''
if wake and _exit in r:
print("exit")
r = b''

III. Experiencia y lecciones aprendidas

En el proceso de completar este proyecto, obtuve muchas experiencias y conocimientos valiosos. En primer lugar, me di cuenta de que la realización de un proyecto no solo depende del dominio de la tecnología, sino que también requiere investigación y comprensión previas. Cuando estaba investigando la producción de la placa de desarrollo de reconocimiento de voz, descubrí que la carga de trabajo era muy pesada y que sería muy difícil de implementar. Sin embargo, ya existen muchas técnicas y herramientas maduras en el mercado. Solo tenemos que elegir una combinación e integración razonables. En segundo lugar, la finalización exitosa de un proyecto requiere un marco claro y una preparación adecuada. En este proyecto, necesito comprender los algoritmos de reconocimiento de voz, el diseño de brazos robóticos y la tecnología de control, dominar el uso y las características de rendimiento de los dispositivos de hardware y las herramientas de desarrollo de software.

En este proyecto, combiné con éxito la tecnología de reconocimiento de voz con la tecnología de control de brazo robótico para realizar el control de voz del brazo robótico. Aunque la escala de este proyecto es relativamente pequeña, representa la tendencia de aplicación y desarrollo de la tecnología de inteligencia artificial en la vida real. Aunque esto es solo un prototipo de un proyecto de IA, su finalización fue una experiencia valiosa para mí. En investigaciones futuras, continuaré explorando información más relevante para mejorar aún más este proyecto. Si tiene alguna buena idea, por favor deje un comentario a continuación.

Supongo que te gusta

Origin blog.csdn.net/m0_71627844/article/details/131516788
Recomendado
Clasificación