Perceba o uso da voz para controlar o movimento do braço robótico myCobot

Uma tentativa de tornar o controle do braço do robô inteligente com base na tecnologia de reconhecimento de fala

introduzir:

No filme Homem de Ferro, vemos Tony Stark se comunicando com a inteligência artificial Jarvis enquanto constrói o dispositivo. Tony descreveu as peças de que precisava para Jarvis, e Jarvis controlou o braço robótico para ajudar Tony a concluir a tarefa. Com a tecnologia de hoje, essa percepção é apenas uma questão de tempo. Portanto, decidi tentar implementar essa função sozinho, usando o controle de voz para operar o braço robótico, para obter uma aplicação simples de inteligência artificial.

Eu era o único responsável por conectar e controlar o braço robótico e a placa de desenvolvimento de voz, acionando o movimento do braço robótico por meio de comandos específicos. Este é um projeto desafiador, pois a tecnologia de controle de voz envolve múltiplos aspectos, como reconhecimento de fala, processamento de sinais e controle de robôs, o que exige que eu aprenda e compreenda conhecimentos relacionados. Por meio deste artigo, espero compartilhar meu processo de implementação de projetos, conquistas e lições aprendidas para inspirar e ajudar colegas que trabalham na área de robótica e controle de voz.

Para implementar este projeto, primeiro precisei resolver dois problemas principais: como processar o sinal de voz e como controlar o braço robótico.

Processar sinais de fala:

Etapas para processar um sinal de fala:

● Seleção de hardware: escolha uma placa de desenvolvimento adequada (Arduino, Raspberry Pi, etc.).

● Processamento do sinal do microfone: selecione um microfone adequado para coleta e converta o sinal de voz coletado em um sinal digital por meio de um conversor analógico-digital.

● Processamento de sinal: o sinal coletado é processado por redução de ruído e filtragem. Recursos úteis são extraídos e sinais de recursos são processados ​​usando algoritmos de reconhecimento de fala para enviar sinais digitais ao computador.

Controle o braço robótico:

● Use um braço mecânico simples e fácil de operar.

O acima é a solução para dois problemas principais. No entanto, após pesquisa, desenvolver uma placa de desenvolvimento que possa lidar com sinais de fala dá muito trabalho! Felizmente, existem placas de desenvolvimento de fala integradas no mercado agora, e podemos comprar uma diretamente para usar.

Placa de Desenvolvimento de Voz HLK-V20

A placa de desenvolvimento HLK-V20 é uma placa complexa com duas interfaces IO - uma para saída de voz e outra para entrada de voz. Ele pode ser conectado a um computador através de uma porta serial.

Braço Robótico MyCobot 280 M5Stack 2023

Para o braço robótico, escolhi o popular braço robótico de mesa, myCobot 280 M5Stack 2023, desenvolvido pela Elephant Robotics. O braço robótico passou recentemente por uma grande atualização de software, permitindo uma velocidade de comunicação serial de 20ms e uma rica interface compatível com linguagens de programação populares como Python e C++. Escolhi este braço robótico por vários motivos, incluindo seu tamanho compacto, rica interface Python API (sou bom em programação) e facilidade de instalação e uso.

Linguagem de programação: Python 3.7+

Plataforma: windows11

Bibliotecas Python usadas: serial, pymycobot, time.

desenvolvimento de projeto

No desenvolvimento do projeto, quatro etapas principais estão envolvidas:

● Entrada de voz

● A placa de desenvolvimento recupera as informações de voz e as transmite para o PC

● O PC processa as informações recebidas

● Envie comandos de controle de movimento para o braço robótico para movimento

Para observar como a placa transmite os dados e que tipo de dados ela retorna, use a biblioteca serial em Python para manipular a porta serial. A biblioteca possui métodos para abrir, fechar, ler e gravar dados da porta serial.

'''
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)

cópia de

Estes são os dados obtidos de read().

Ao analisar os dados transmitidos da placa de desenvolvimento, a palavra de ativação da placa de desenvolvimento é reconhecida como "wakeup_uni" e a palavra-chave "uArTcp" indica o início do próximo comando.

Verifica-se que os dados recebidos são concatenados e, cada vez que um comando é inserido, ele é concatenado com o comando anterior.

Verifica-se que os dados recebidos são concatenados e, cada vez que um comando é inserido, ele é concatenado com o comando anterior. Para verificar se a placa recebeu entrada de voz, a instrução if a in b: é usada, anexada ao comando input e sua palavra-chave correspondente. Por exemplo, a palavra de ativação é definida como "wakeup_uni" e 4 palavras de prompt são definidas para teste.

#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

cópia de

Aqui estão os resultados do teste

A biblioteca pymycobot é uma biblioteca de interface de chamada de API de braço robótico desenvolvida pela Elephant Robotics. O método de uso específico está no Gitbook (fornecido pela 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)

cópia de

Em seguida, combine as duas partes do 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. Experiência e lições aprendidas

No processo de conclusão deste projeto, ganhei muitas experiências e insights valiosos. Em primeiro lugar, percebi que a conclusão de um projeto não depende apenas do domínio da tecnologia, mas também requer pesquisa e entendimento prévios. Quando eu estava pesquisando a produção da placa de desenvolvimento de reconhecimento de fala, descobri que a carga de trabalho era muito pesada e seria muito difícil de implementar. No entanto, já existem muitas técnicas e ferramentas maduras no mercado. Só precisamos escolher uma combinação e integração razoáveis. Em segundo lugar, a conclusão bem-sucedida de um projeto requer uma estrutura clara e uma preparação adequada. Neste projeto, preciso entender algoritmos de reconhecimento de fala, design de braço robótico e tecnologia de controle, dominar as características de uso e desempenho de dispositivos de hardware e ferramentas de desenvolvimento de software.

Neste projeto, combinei com sucesso a tecnologia de reconhecimento de fala com a tecnologia de controle de braço robótico para realizar o controle de voz do braço robótico. Embora a escala deste projeto seja relativamente pequena, ela representa a tendência de aplicação e desenvolvimento da tecnologia de inteligência artificial na vida real. Embora este seja apenas um protótipo de um projeto de IA, sua conclusão foi uma experiência valiosa para mim. Em pesquisas futuras, continuarei a explorar informações mais relevantes para melhorar ainda mais este projeto. Se você tiver alguma boa ideia, por favor, deixe um comentário abaixo.

Acho que você gosta

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