Pular para o conteúdo principal

Controle o reBot Arm usando voz com o reSpeaker Flex

Este documento irá guiá-lo passo a passo, do zero, para construir um sistema inteligente de braço robótico que "ouve e se move". Mesmo que você nunca tenha mexido com braço robótico ou desenvolvimento de hardware, desde que siga os passos, você conseguirá reproduzir este projeto com sucesso!

Hardware necessário

reSpeaker Flex XVF3800 CircularreBot Arm B601-DM

1. Visão geral do projeto

1.1 O que é este projeto?

Este projeto é um sistema inteligente de controle de braço robótico acionado por voz. Imagine esta cena:

🎬Demonstração de cenário

Quando você diz "olá" para o braço robótico na mesa, o braço robótico imediatamente gira na sua direção e acena com a cabeça como um humano. Quando você diz "dançar", ele balança alegremente. Se você for para o outro lado da sala e bater palmas, ele imediatamente "ouve" a direção do som e gira para encará-lo – este é o robô inteligente que queremos construir!

Em resumo, este sistema faz três coisas:

  1. Ouvir – captura sua voz por meio do array de microfones e também consegue determinar de que direção o som está vindo

  2. Entender – identifica o que você diz por meio de IA e compreende a sua intenção

  3. Mover – controla o braço mecânico para fazer ações correspondentes (girar, acenar com a cabeça, dançar, acenar, etc.)

1.2 Dois modos de interação

O sistema fornece dois modos principais de funcionamento, que você pode escolher de acordo com suas necessidades:

ModoNomeInteraçãoCenário adequado
Modo 1Rastreamento de fonte sonora DOADetecta automaticamente a direção do som e giraDemonstração em salão de exposições, dispositivo interativo
Modo 2Controle por comando de vozPressione e segure Enter para controlarAssistente de voz, demonstração para ensino

1.3 Como o sistema funciona?

Descrevendo a arquitetura de todo o sistema em termos leigos:

You speak / make a sound

[ reSpeaker Flex ] —— An array composed of 4 "ears" can hear and determine the direction of sound.

[ Ubuntu ] ——

There are two paths:
├─→ DOA Mode: Locally directly calculate the sound direction → Control the robotic arm to turn
└─→ Voice mode: Upload to cloud AI for recognition → Understand your intention → Control the movement of the robotic arm

[ reBot Arm ] —— An arm composed of 7 "joints" performs various actions.

Um diagrama de arquitetura mais especializado é descrito da seguinte forma:

Camada de hardware (dispositivos que você pode tocar):

  • reSpeaker Flex (array de 4 microfones, controlador XIAO ESP32S3)

  • reBot Arm B601-DM (manipulador de 6 DOF)

  • Computador com Ubuntu 22.04 (executando o programa principal)

Camada de driver (permite que o hardware se comunique):

  • Comunicação de áudio USB (pyusb/libusb) – conecta o array de microfones

  • Comunicação serial (MotorBridge) – conecta o braço mecânico

  • Web API (Groq Cloud) – conecta aos serviços de IA em nuvem

Camada de algoritmo (o "cérebro" que processa os dados):

  • Localização de fonte sonora DOA (cálculo local em tempo real)

  • Reconhecimento de fala Whisper (Groq Cloud)

  • Compreensão de intenção com Llama-3.3 (Groq Cloud)

  • Planejamento de interpolação de movimento (controle local suavizado)

Camada de aplicação (onde você pode ver o efeito):

  • Modo de rastreamento DOA, modo de controle por voz, animação de espera com respiração, síntese de voz

2. Preparação de hardware

2.1 O que você precisa preparar?

Antes de começar, certifique-se de que você tem todo o hardware a seguir pronto. Se este for o seu primeiro contato com esse tipo de projeto, é recomendável comprar o kit completo diretamente para evitar problemas de compatibilidade.

ComponenteModeloQuantidadeFunções aproximadasRecomendações de compra
Braço mecânicoreBot Arm B601-DM1 conjunto"corpo" que executa as açõesLoja oficial da Seeed Studio
Array de microfonesreSpeaker Flex XVF38001Ouve o som e determina a direçãoLoja oficial da Seeed Studio
PC principalPC com Ubuntu 22.041Executa o "cérebro" do programaArquitetura x86_64
Cabo USBUSB-A para USB-C2Conecta os dispositivosgeralmente incluído com o dispositivo
Sargento de marcenaria3 polegadas ou mais2Fixa a base do braço mecânicoLoja de ferragens ou incluído no kit
Fonte de alimentação24V 15A (interface XT30)1Fornece energia ao braço mecânicogeralmente incluída no kit

2.2 Breve introdução de cada hardware

2.2.1 Braço reBot Arm B601-DM

Este é um braço mecânico de nível desktop com 7 "articulações" (profissionalmente chamadas de 7 graus de liberdade), assim como um braço humano, capaz de realizar vários movimentos flexíveis.

Descrição das articulações (de cima para baixo):

ArticulaçãoNome popularO que pode fazerFaixa de movimento
J1Cintura (rotação da base)Rotação do corpo inteiro para a esquerda e direita± 149°
J2Levantamento do braçoLevantar ou abaixar o braço0° ~ -206°
J3Extensão do antebraçoEstender ou dobrar o antebraço0° ~ -206°
J4Rotação do pulsoRotação do pulso para a esquerda e direita± 85,9°
J5Inclinação do pulsoMovimento do pulso para cima e para baixo± 85,9°
J6Guinada do pulsoAjuste fino da direção do pulso± 85,9°
J7GarraAgarrar objetosControle de abertura e fechamento

💡Você pode entender assim: J1 é como a rotação da cintura de uma pessoa, J2 é como o levantamento do ombro, J3 é como a flexão do cotovelo, J4/J5/J6 são como as várias rotações do pulso, e J6 é como um dedo. Com a combinação dessas articulações, o braço robótico pode realizar movimentos muito ricos.

Aviso de montagem: Se você estiver comprando peças que precisam ser montadas por conta própria, preste atenção especial:

  • O kit contém um grande número de parafusos e peças estruturais, e algumas peças são muito semelhantes em aparência

  • É altamente recomendável usar uma chave de fenda elétrica, com o torque ajustado para a faixa média e baixa (3 ~ 6 kgf.cm)

  • Um torque excessivo pode facilmente levar ao espanhamento da rosca do parafuso

  • Preste atenção à segurança durante a montagem para evitar prender ou esmagar as mãos

2.2.2 Array de microfones reSpeaker Flex XVF3800

Este é um módulo inteligente de processamento de voz com 4 microfones, cujos principais recursos são:

  • Design dividido: a placa principal e a placa do array de microfones podem ser separadas, o que é conveniente para você organizar de forma flexível em diferentes dispositivos

  • Captação em 360°: 4 microfones são dispostos em anel, podendo receber som de todas as direções

  • Processamento inteligente integrado: integrado com o chip XMOS XVF3800, com funções de cancelamento de eco, supressão de ruído, localização de fonte sonora (DOA) e outras

  • Interface USB dupla: possui dois modos de conexão: interface USB-C e interface com trava PH2.0

  • Amplificador de potência integrado: pode acionar diretamente um alto-falante de 10 W (por meio de interface JST)

Componentes principais:

ComponenteFunção
Chip XMOS XVF3800O "cérebro" responsável por todo o processamento de áudio
Codec TLV320AIC3104converte sinais sonoros analógicos em sinais digitais
Interface FPC de 24 pinosConecta a placa do array de microfones e a placa principal
Interface USB-CConecta ao computador, transmite áudio e energia
Conector para fone de ouvido 3,5 mmpode conectar fones de ouvido para monitoramento
Conector JST para alto-falantePode ser conectado a alto-falantes externos

💡Entendimento por analogia: Você pode pensar nele como um "ouvido super apurado" – não só tem 4 ouvidos para ouvir sons de todas as direções, como também consegue analisar de que direção o som vem e filtrar o ruído, focando apenas no som que você quer ouvir.

2.2.3 Computador com Ubuntu 22.04

Ubuntu é um sistema operacional livre e de código aberto (semelhante ao Windows, mas mais popular entre desenvolvedores). Requisitos deste projeto:

  • Sistema operacional: Ubuntu 22.04 LTS (versão 64 bits)

  • Arquitetura: x86_64 (ou seja, um computador normal com processador Intel/AMD)

  • Recomendações de configuração mínima:

  • CPU: 4 núcleos ou mais

  • Memória: 8 GB ou mais

  • Disco rígido: 50 GB de espaço livre

  • Rede: deve conseguir acessar a Internet (usada para chamar a IA em nuvem)

💡E se o seu computador tiver sistema Windows?

Você tem duas opções:

  1. Instalar sistema dual: manter Windows e Ubuntu no computador ao mesmo tempo (recomendado)

  2. Usar máquina virtual: executar o Ubuntu virtualmente com um software (como VMware) dentro do Windows (haverá alguma perda de desempenho, não recomendado para este projeto)

Tutorial de instalação do Ubuntu 22.04: https://ubuntu.com/download/desktop

2.3 Diagrama de conexão de hardware

Antes de começar, familiarize-se com a forma como todos os dispositivos devem ser conectados. A conexão geral é muito simples, são necessários apenas dois cabos USB:

          ┌─────────────────────────────────────┐
│ Ubuntu 22.04 │
│ ┌──────────┐ │
│ │ Python │ ←── Run the main program │
│ │ 3.10 │ │
│ └──────────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ Groq API │ ←── Cloud AI Service │
│ │ (Internet) │ │
│ └─────────────┘ │
└─────┬────────┬────────────────────┘
│ │
USB-C Cable USB-C Cable
│ │
┌─────┴──┐ ┌─┴──────────┐
│reSpeaker│ │ reBot Arm │
│ Flex │ │ B601-DM │
│(Microphone) │ │ (Robot Arm) │
│ │ │ │
│ 4-Microphone Array │ │ 7DOF │
└────────┘ └────────────┘

┌─────┴──────┐
│ Speaker/Headphone │ (Optional, used for voice broadcast)
└─────────────┘

Etapas de conexão:

  1. Conecte o reSpeaker Flex ao computador via cabo USB-C

  2. Conecte o reBot Arm ao computador via cabo USB-C

  3. (Opcional) conecte alto-falantes ou fones de ouvido ao conector de saída de áudio do reSpeaker Flex

  4. Certifique-se de que o computador esteja conectado à Internet


3. preparação do ambiente

Antes de instalar o software, precisamos confirmar se o ambiente do seu sistema atende aos requisitos. Abra o terminal do Ubuntu (Terminal, semelhante ao "prompt de comando" do Windows) e siga as etapas abaixo para verificar uma por uma.

3.1 Confirmar versão do Ubuntu

# Enter the following command in the terminal to view the system version
lsb_release -a

Saída esperada (algo assim):

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy

💡E se não aparecer Ubuntu 22.04?

  • Se for Ubuntu 20.04 ou outras versões, é recomendável atualizar para 22.04, pois este projeto foi testado nessa versão

  • Se não for Ubuntu, você precisa instalar o Ubuntu 22.04

3.2 Confirmar versão do Python

# Check the default Python version in the system
python3 --version

Saída esperada:

Python 3.10.12

Desde que a versão seja 3.10.x (x é qualquer número).

💡E se não for Python 3.10?

Não se preocupe, usaremos o Miniforge para criar depois um ambiente Python 3.10 dedicado, o que não afetará o Python padrão do sistema.

3.3 verificar porta USB

Antes de conectar o hardware, certifique-se de que o computador consiga reconhecer normalmente o dispositivo USB:

# View the list of currently connected USB devices
lsusb

Saída esperada (algo assim, mostrando o seu dispositivo USB):

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 2886:0018 Seeed Studio reSpeaker Flex ← Microphone Array
Bus 002 Device 005: ID 1234:5678 STMicroelectronics Virtual COM Port ← Robot Arm

💡E se eu não vir o dispositivo?

Não entre em pânico, talvez o dispositivo ainda não tenha sido conectado. Continue para a próxima etapa e volte para verificar depois de instalar o software.

3.4 verificar conexão de rede

# Test whether the Internet can be accessed
ping -c 3 baidu.com

Saída esperada:

PING baidu.com (xxx.xxx.xxx.xxx) 56(84) bytes of data.
64 bytes from ...: icmp_seq=1 ttl=54 time=25.3 ms
64 bytes from ...: icmp_seq=2 ttl=54 time=24.8 ms
64 bytes from ...: icmp_seq=3 ttl=54 time=25.1 ms

💡E se você não conseguir acessar a Internet?

O modo de voz requer conexão de rede para chamar a Groq API, certifique-se de que a rede esteja estável. Se for uma rede de campus/empresa, pode ser necessária configuração adicional de proxy (explicada mais tarde).


4. instalação do software

⚠️ Observação importante: Todos os comandos a seguir precisam ser executados no terminal. Recomenda-se confirmar que não há erro após cada etapa antes de prosseguir para a próxima.

4.1 Etapa 1: Instalar Miniforge (Ferramenta de Gerenciamento de Ambiente Python)

O que é Miniforge?

Miniforge é uma ferramenta de gerenciamento de ambiente Python, semelhante a um "gerenciador de versões da App Store" para Python. Ele pode ajudá-lo a:

  • Criar um ambiente Python 3.10 independente sem afetar o Python padrão do sistema

  • Instalar com um clique todas as dependências do projeto

  • Alternar entre diferentes versões do Python para diferentes projetos

Comando de instalação:

# Download the Miniforge installation script
wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"

# Perform the installation (follow the prompts)
bash Miniforge3-$(uname)-$(uname -m).sh

O assistente de instalação aparecerá após a execução:

  1. Pressione 'Enter' para visualizar o contrato de licença

  2. Digite 'yes' para concordar com o contrato

  3. Pressione 'Enter' para confirmar o caminho de instalação (padrão)

  4. Digite 'yes' para inicializar o conda (recomendado)

Após a conclusão da instalação, feche a janela de terminal atual e abra um novo terminal para que a variável de ambiente tenha efeito.

Verificar instalação:

# Enter in the new terminal
conda --version

Saída esperada: 'conda 24.x. x' (o número da versão pode ser diferente, desde que a versão possa ser exibida, a instalação foi bem-sucedida)

4.2 Etapa 2: Clonar o repositório de código do projeto

# Download the main codebase of the project (voice control part)
git clone https://github.com/xr686/reBot-Arm-reSpeaker-Flex.git

# Enter the project directory
cd reBot-Arm-reSpeaker-Flex

Saída esperada:

Cloning into 'reBot-Arm-reSpeaker-Flex'...
remote: Enumerating objects: ...
...
Resolving deltas: 100% (...)

💡E se o git clone estiver lento ou falhar?

Pode ser um problema de rede, você pode tentar:

# Use domestic mirroring for acceleration (if available)
git clone https://ghproxy.com/https://github.com/xr686/reBot-Arm-reSpeaker-Flex.git

4.3 Etapa 3: Criar um ambiente Conda

O projeto fornece um arquivo 'environment.yml' que lista todos os pacotes de dependência necessários. Só precisamos de um comando para instalar automaticamente todas as dependências:

# Make sure you are in the reBot-Arm-reSpeaker-Flex directory.
# One-click to create an environment and install all dependencies
conda env create -f environment.yml

Esse processo pode levar 10–30 minutos, dependendo da velocidade da sua rede. Ele irá automaticamente:

  • Criar um ambiente Python 3.10.2 chamado 'flex'

  • Instalar pinocchio, numpy e outras bibliotecas de computação científica a partir do canal conda-forge

  • Instalar pyusb para comunicação USB

Sinal de instalação bem-sucedida (as últimas linhas se parecem com isto):

Executing transaction: ... done
#
# To activate this environment, use
#
# $ conda activate flex
#
# To deactivate an active environment, use
#
# $ conda deactivate
#

4.4 Etapa 4: Ativar o ambiente Conda

# Activate the newly created flex environment
conda activate flex

Sinal de ativação bem-sucedida: '(flex)' aparece antes do prompt do terminal:

(flex) user@computer:~/reBot-Arm-reSpeaker-Flex$

💡Lembrete importante: Sempre que você abrir um novo terminal, precisará executar novamente 'conda activate flex' para ativar o ambiente.

4.5 Etapa 5: Instalar dependências do sistema

# Update the system package list and install ffmpeg
sudo apt-get update && sudo apt-get install -y ffmpeg

O que é ffmpeg?

ffmpeg é uma ferramenta de processamento de áudio e vídeo; este projeto a utiliza para processar arquivos de áudio após a síntese de fala. Simplificando, é "para permitir que o computador reproduza e processe som".

Sinal de instalação bem-sucedida:

ffmpeg is already the newest version (x.x.x).

4.6 Etapa 6: Instalar uv (Ferramenta de Gerenciamento de Pacotes Python)

# Install uv (a fast Python package management tool)
curl -LsSf https://astral.sh/uv/install.sh | sh

Por que você precisa do uv?

uv é uma ferramenta de gerenciamento de pacotes Python muito rápida, que pode ser usada para instalar pacotes em formato pip. A biblioteca 'motorbridge' usada no projeto precisa ser instalada por meio do uv.

Após a instalação bem-sucedida, feche o terminal e abra-o novamente.

4.7 Etapa 7: Clonar a biblioteca de controle do braço robótico

# Cloning robotic arm control library
git clone https://github.com/vectorBH6/reBotArm_control_py.git

# Enter the robotic arm control library directory
cd reBotArm_control_py

# Use uv to install dependencies
uv sync

Saída esperada: Exibe o progresso da instalação sem relatar erro.

4.8 Etapa 8: Definir variáveis de ambiente PYTHONPATH

# Add the robotic arm control library to the Python search path
export PYTHONPATH="$PWD:$PYTHONPATH"

O que isso significa?

Quando o Python importa uma biblioteca, ele procura no diretório especificado pelo PYTHONPATH. Este comando diz ao Python para "procurar neste diretório além do caminho de busca padrão".

⚠️ Lembrete importante: 'export PYTHONPATH' Esta configuração se tornará inválida sempre que o terminal for fechado! Você precisa:

Esquema A (temporário, a ser executado sempre): Executar manualmente o comando export acima sempre que um novo terminal for aberto

Esquema B (recomendado, permanente): Escrever essa configuração no arquivo '~/.bashrc':

# Write environment variables to the configuration file so that they will be automatically set every time the terminal is opened.
echo 'export PYTHONPATH="'$PWD':$PYTHONPATH"' >> ~/.bashrc

# Make the configuration take effect immediately
source ~/.bashrc

4.9 Etapa 9: Definir permissão da porta serial

Para que o usuário atual possa acessar o dispositivo serial USB (usado para se comunicar com o braço robótico), é necessário definir permissões:

# Set USB serial device permissions (to allow the current user to access without sudo)
sudo chmod 666 /dev/ttyACM*

Nenhum erro pode ser relatado após a execução.

💡Por que isso é necessário?

O sistema Linux possui um gerenciamento de permissões rigoroso para dispositivos de hardware. Por padrão, usuários comuns não podem acessar diretamente dispositivos seriais. Este comando permite que todos os usuários leiam e gravem nesses dispositivos.

⚠️ Esta configuração será inválida após reiniciar. Se você quiser que seja permanente, pode adicionar seu usuário ao grupo 'dialout':

# Add the current user to the dialout group (permanently resolve the permission issue)
sudo usermod -a -G dialout $USER

A modificação requer fazer logout e login novamente para ter efeito.

4.10 Etapa 10: Configurar a Groq API Key

Este projeto usa o serviço de IA em nuvem da Groq para reconhecimento de fala e compreensão de intenção. Você precisa registrar uma conta Groq e obter a API Key.

Para obter a API Key:

  1. Abra o navegador e acesse https://console.groq.com/keys

  2. Registre uma conta (você pode usar e-mail ou conta do GitHub)

  3. Após fazer login, clique em "Create API Key"

  4. Copie a Chave gerada (o formato é semelhante a 'gsk_xxxxxxxxxxxx)

Configure a Chave de API no código:

# First return to the main project directory
cd ~/reBot-Arm-reSpeaker-Flex

# Edit the main program file
nano sound_tracking_arm.py

Encontre a seguinte seção no arquivo (aproximadamente na linha 60):

VOICE_CFG = {
"api_key": "12345678", # ← Replace this line with your actual API Key
...
}

Substitua '"12345678"' pela Chave de API que você acabou de copiar, por exemplo:

    "api_key": "gsk_aBcDeFgHiJkLmNoPqRsTuVwXyZ",

Salve o arquivo: pressione 'Ctrl O', depois 'Enter' e então 'Ctrl X' para sair.

⚠️ Lembrete de segurança:

  • Não compartilhe sua Chave de API em repositórios de código públicos ou fóruns

  • Não envie capturas de tela da Chave de API para redes sociais

  • Se a Chave de API vazar, exclua-a no console da Groq e gere uma nova.

4.11 Etapa 11: Configurações de proxy de rede (se necessário)

Se você estiver na China continental ou em determinados ambientes de rede, talvez não consiga acessar diretamente os serviços da Groq. Teste primeiro:

# Test whether Groq can be accessed
ping console.groq.com -c 3

Se você conseguir receber uma resposta (exibir o tempo), significa que a rede está normal e você pode pular esta etapa.

Se for exibido 'unknown host' ou 'Request Timeout', é necessário configurar o proxy.

Como configurar o proxy:

Edite 'sound_tracking_arm.py' novamente e encontre a entrada 'proxy' em 'VOICE_CFG:

VOICE_CFG = {
...
"proxy": None, # ← Change it to your proxy address
}

Por exemplo, se o endereço do seu proxy for 'http:// 192.168.4.7:7897':

    "proxy": "http://192.168.4.7:7897",

💡Como sei o endereço do meu proxy?

  • Se você usa Clash: geralmente em 'http:// 127.0.0.1:7890'

  • Se você usa v2rayN: geralmente em 'http:// 127.0.0.1:10809'

  • Se for um servidor proxy na LAN: pergunte ao administrador de rede

  • O formato do proxy geralmente é: 'http:// endereço IP: número da porta'


5. Conexão e montagem do hardware

5.1 Etapas de conexão do hardware

Agora que todo o software foi instalado, vamos conectar o hardware.

Etapa 1: Conectar o reSpeaker Flex

  1. Conecte o reSpeaker Flex ao computador com um cabo USB-A para USB-C

  2. Após a conexão, o indicador luminoso do reSpeaker Flex deve acender

  3. Digite 'lsusb' no terminal e você deverá conseguir ver o dispositivo da Seeed Studio.

Etapa 2: Conectar o reBot Arm

  1. Certifique-se de que a base do braço mecânico foi firmemente fixada na mesa com um grampo de marcenaria

  2. Conecte o braço robótico ao computador com um cabo USB-A para USB-C

  3. Conecte a fonte de alimentação de 24 V (interface XT30), mas não ligue ainda

⚠️ Lista de verificação de segurança antes de ligar:

  • A base do braço mecânico foi firmemente fixada (presa com um grampo de marcenaria)

  • Não há obstáculos no alcance de movimento do braço robótico

  • Não há pessoas próximas ao alcance de movimento do braço robótico

  • Cabo USB conectado

  • Fiação da fonte de alimentação está correta

ETAPA 3: LIGAR E INICIAR

  1. Após a verificação, ligue o interruptor da fonte de 24 V

  2. O braço mecânico emitirá um leve som de energização do motor

  3. Digite 'ls /dev/ttyUSB *' no terminal e você deverá conseguir ver dispositivos semelhantes a '/dev/ttyUSB0'

5.2 Verificar conexões de hardware

# View USB audio device (reSpeaker)
arecord -l

Saída esperada (semelhante):

**** List of CAPTURE Hardware Devices ****
card 2: XVF3800 [reSpeaker XVF3800], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
# View USB serial device (robotic arm)
ls -la /dev/ttyUSB0

Ou:

ls -la /dev/ttyACM0

Saída esperada:

crw-rw-rw- 1 root dialout 188, 0 ... /dev/ttyUSB0

💡Não consegue ver o dispositivo?

  • Verifique se o cabo USB está bem conectado

  • Tente trocar de porta USB

  • Verifique se o cabo é de dados (alguns cabos só carregam e não transmitem dados)

  • consulte o 9. guia de solução de problemas


6. primeira execução

6.1 Verificação antes da operação

Antes da execução oficial, vamos fazer algumas verificações simples para garantir que todos os componentes estejam funcionando corretamente.

Validação 1: Verificar dependências do Python

Certifique-se de que você está no ambiente 'flex' e no diretório principal do projeto:

# Activate the environment
conda activate flex

# Enter the project directory
cd ~/reBot-Arm-reSpeaker-Flex

# Verify pyusb and numpy
python -c "import usb.core; import numpy; print('pyusb + numpy OK')"

Saída esperada:

pyusb + numpy OK

Validação 2: Validar a biblioteca do braço robótico

# Ensure that PYTHONPATH is set
export PYTHONPATH="$HOME/reBotArm_control_py:$PYTHONPATH"

# Verify the robotic arm library
python -c "from reBotArm_control_py.actuator import RobotArm; print('Robot Arm Library OK')"

Saída esperada:

Robot Arm Library OK

💡Se o erro for 'ModuleNotFoundError'?

Isso significa que o PYTHONPATH não está configurado corretamente. Confirme:

  1. O diretório reBotArm_control_py realmente existe.

  2. O comando 'export PYTHONPATH' foi executado

  3. Se não, tente usar o caminho completo:

    export PYTHONPATH="/home/Your username/reBotArm_control_py:$PYTHONPATH"

Verificação 3: Testar o microfone

# Record a 3-second test audio
arecord -D plughw:2,0 -c 6 -r 16000 -f S16_LE -d 3 /tmp/test.wav

# Play the recorded audio (if a speaker/headphone is connected)
aplay -D plughw:2,0 /tmp/test.wav

Se você conseguir ouvir o som gravado, a matriz de microfones está funcionando corretamente.

6.2 Procedimento de inicialização

Depois que todas as verificações forem aprovadas, o programa pode ser iniciado oficialmente!

# Ensure in the flex environment
cd ~/reBot-Arm-reSpeaker-Flex

# Start the program (a mode selection menu will pop up)
python sound_tracking_arm.py

Saída esperada:

==================================================
reBot Arm B601-DM + reSpeaker Flex
Please select the operating mode:
==================================================
[1] DOA Interaction Mode (Sound Source Tracking + Standby Animation)
[2] Voice control mode (button trigger + AI LLM control)
==================================================
Please enter the mode number (1 or 2):

Neste momento, digite '1' para entrar no modo de rastreamento de fonte sonora DOA ou digite '2' para entrar no modo de controle por voz.

Especificar diretamente o modo ao iniciar

Você também pode especificar o modo diretamente no comando de inicialização, pulando o menu de seleção:

# DOA Sound Source Tracking Mode
python sound_tracking_arm.py --mode doa

# Voice command control mode
python sound_tracking_arm.py --mode voice

6.3 Teste da primeira execução

Teste do modo DOA

Quando o Modo 1 é selecionado, o programa:

  1. Inicializa o dispositivo USB

  2. Conecta o braço mecânico

  3. Entra em estado de espera

Método de teste: Fique ao lado do braço robótico e fale ou bata palmas para observar se o braço robótico:

  • Gira na direção em que você está

  • Executa movimentos de aceno de cabeça

  • Em seguida, volta ao modo de espera

Teste do modo de voz

Quando o modo 2 é selecionado, o programa:

  1. Inicializa todos os componentes

  2. Aguarda você pressionar Enter

Método de teste:

  1. Pressione a tecla 'Enter'

  2. Após ver o aviso de "recording", diga "hello" ou "say hello"

  3. Aguarde cerca de 5 segundos

  4. Observe se:

  • Reconhece sua voz

  • O braço mecânico executa a ação de saudação

  • Você ouve a resposta de voz


7. Explicação detalhada da função

7.1 modo 1: modo de rastreamento de fonte sonora DOA

O que é DOA?

O nome completo de DOA é Direction of Arrival (direção de chegada da onda sonora), que, em termos simples, é: julgar de que direção o som vem. Assim como você pode usar os dois ouvidos para determinar aproximadamente se o som está à esquerda ou à direita, o reSpeaker Flex usa quatro microfones para calcular a direção do som com mais precisão.

Fluxo de trabalho

Start the system

Initialize USB device

Connect reSpeaker Flex ←──→ Connect reBot Arm

Loop Execution:
├─ Read DOA angle data (0°~360°)
├─ Is a valid sound source detected?
│ ├─ No → Breathing Standby Animation → Continue Reading
│ └─ Yes → 4-frame Angle Buffer Queue → Calculate Weighted Average Angle
│ → Cosine Similarity Smoothing Filtering
│ → Angle change > Trigger Threshold?
│ ├─ No → Continue Reading
│ └─ Yes → The robotic arm turns towards the target direction
│ → Perform a nodding motion
│ → Enter Cool Down
│ → Continue Reading

Exit (Press Ctrl+C)

Explicação detalhada dos pontos técnicos centrais

Fila de buffer de ângulo de 4 quadros

Imagine que você está ouvindo uma pessoa em movimento falar e, se cada quadro (cerca de 50 milissegundos) de mudança de ângulo acionasse diretamente o braço robótico, ele iria tremer e sacudir. O sistema usa um "buffer circular" para armazenar os dados de ângulo DOA dos últimos 4 quadros e depois faz a média para tornar o movimento mais suave.

Filtro de suavização por similaridade de cosseno

Às vezes, o microfone pode julgar a direção de forma incorreta (como um ruído repentino). Esse filtro verificará se os ângulos dos últimos quadros são "consistentes" — se a diferença for muito grande, pode ser um erro de julgamento e não haverá resposta. Assim como quando você ouve um som, você confirma a direção antes de virar a cabeça.

Limite de disparo

Somente quando a mudança de ângulo excede o limite definido (padrão 15°) o movimento do braço será acionado. Isso evita movimentos frequentes devido a pequenas flutuações de ângulo.

Período de resfriamento

Após cada ação, o sistema entra em um período de resfriamento (padrão de 3 segundos), durante o qual não responderá a novas fontes sonoras. Isso impede que o braço robótico fique tremendo devido a disparos contínuos.

Animação de espera com respiração

Quando ninguém está falando, o braço robótico não ficará completamente parado, mas entrará em um estado de "respiração" – levemente semelhante a um humano. Isso é ao mesmo tempo bonito e permite que o usuário saiba que o sistema está em execução.

7.2 Modo 2: Modo de Controle por Comando de Voz

Loop fechado completo de interação

O modo de controle por voz suporta o loop fechado completo de gravação → reconhecimento → compreensão → execução → reprodução.

Fluxo de trabalho

The user presses the Enter key.

arecord starts recording (6 channels, 16kHz, 5 seconds)

User releases Enter → Stop recording

NumPy Audio Normalization Processing (Extract First Channel + Gain Amplification)

Upload to Groq API

Whisper model performs speech-to-text (STT) recognition

Obtain text commands (e.g., "turn left")

Send to Llama-3.3-70B large language model

LLM understands intent + outputs JSON structured results

Analysis results
├─ Invalid → Broadcast "Sorry, I didn't catch that. Could you please repeat?"
└─ Valid → Execute the corresponding robotic arm action

Edge-TTS Voice Announcement Execution Result

Return to standby state

Comandos de voz suportados

Tipo de instruçãoExemplo de fraseAção executadaDescrição
virar à esquerda"virar à esquerda"/"olhar para a esquerda"/"girar para a esquerda"a base do braço robótico gira 45 graus para a esquerdao ângulo pode ser ajustado por parâmetros
virar à direita"virar à direita"/"olhar para a direita"/"girar para a direita"a base do braço robótico gira 45 graus para a direitaigual ao acima
saudação"dizer olá"/"olá"/"oi"realizar saudação com aceno de cabeçaacenar com a cabeça duas vezes seguidas
acenar"acenar"/"dizer tchau"/"tchau"realizar um acenoacenar 2 vezes para a esquerda e direita
retornar ao zero"voltar à posição inicial"/"resetar"/"retornar ao zero"todas as juntas retornam à posição zerovoltar à postura inicial
parar"parar"/"não se mexa"/"pare"parar imediatamente a ação atualcomando de parada de emergência

Exemplo de interação

$ python sound_tracking_arm.py --mode voice

========================================
🤖 reBot Arm Voice Control System has been activated
Press Enter to start recording, release to stop.
Press Ctrl+C to exit
========================================

[Interaction] >>> 🟢 System is idle, please press Enter to start recording... <<< [User presses Enter]
🔴 Recording... Please speak (5 seconds)
[User says: "Turn to the left a bit"]
[User releases Enter]
🟢 Recording completed, processing...

--- Speech Recognition ---
📝 Recognition result: "turn left"

--- Intent Understanding ---
🤖 Parsed action: turn_left, parameters: {"angle": 45}

--- Execute Action ---
=> Start executing action: turn_left

--- Voice Announcement ---
=======================================================
🤖 [Voice Output] Okay, turning left.
=======================================================

[Interaction] >>> 🟢 System is idle, press Enter to start recording... <<< [Waiting for next input]

Como a IA entende suas palavras?

O projeto usa um Prompt bem projetado que permite que um grande modelo de linguagem (Llama-3.3-70B) entenda várias frases em linguagem natural e as traduza em instruções estruturadas.

Por exemplo, se você disser "me ajude a virar a cabeça para a esquerda", a IA irá entendê-lo assim:

{"action": "turn_left", "params": {"angle": 45}, "reply": "Okay, turning left."}

A vantagem desse design é que você não precisa dizer palavras de comando fixas, basta falar naturalmente como em uma conversa!


8. parâmetros de linha de comando

8.1 tabela completa de parâmetros

Ao iniciar o programa, você pode adicionar vários parâmetros para personalizar o comportamento:

python sound_tracking_arm.py [Parameter]
ParâmetroCurtoPadrãoDescrição
'-- mode''-m''doa'Modo de operação: 'doa' (rastreamento de fonte sonora) ou 'voice' (controle por voz)
'-- device''-d''0'ID do dispositivo reSpeaker Flex USB
'-- port''-p''/dev/ttyUSB0'Caminho do dispositivo de porta serial do braço mecânico
'-- threshold''-t''15'Limite de disparo do ângulo DOA (em graus)
'-- cooldown''-c''3'Tempo de recarga da ação (em segundos)
'-- buffer-size''-B ''4'Quadros de buffer de ângulo DOA
'-- groq-key''-k''None'Groq API Key (também pode ser configurada por código)
'-- tts-voice''-v''zh-CN-XiaoxiaoNeuralVoz do Edge-TTS
'-- debug'-'False'Habilitar saída de log de depuração

8.2 exemplo de uso

Uso básico

# DOA Tracking Mode (Default)
python sound_tracking_arm.py

# Voice control mode
python sound_tracking_arm.py --mode voice

Ajustar a sensibilidade do DOA

# Increase the trigger threshold (requires a larger change in sound direction to respond, reducing false triggers)
python sound_tracking_arm.py --threshold 25

# Lower the trigger threshold (more sensitive, but also more prone to false triggering)
python sound_tracking_arm.py --threshold 10

# Extend Cool Down (longer "rest time" after action)
python sound_tracking_arm.py --cooldown 5

# Adjust multiple parameters simultaneously
python sound_tracking_arm.py --threshold 20 --cooldown 5

Especificar o dispositivo de hardware

# The robotic arm is connected to different serial ports.
python sound_tracking_arm.py --port /dev/ttyACM0

# Specify Groq API Key (command-line input will override the configuration in the code)
python sound_tracking_arm.py --mode voice --groq-key gsk_xxxxxxxxxxx

Alternar o timbre da voz

# Use Chinese male voice (Yun Jian)
python sound_tracking_arm.py --mode voice --tts-voice zh-CN-YunjianNeural

# Use Chinese female voice (Xiaoxiao, default)
python sound_tracking_arm.py --mode voice --tts-voice zh-CN-XiaoxiaoNeural

# Use Chinese female voice (Xiaoxiao, multi-emotional)
python sound_tracking_arm.py --mode voice --tts-voice zh-CN-XiaoxiaoMultilingualNeural

Lista completa de vozes suportadas pelo Edge-TTS:https://github.com/rany2/edge-tts#changing-the-voice

Habilitar modo de depuração

# Enable detailed log output (helpful for troubleshooting)
python sound_tracking_arm.py --debug

9. guia de solução de problemas FAQ

Esta seção reúne os problemas e soluções mais comuns encontrados por usuários iniciantes. Se você não encontrar seu problema aqui, verifique se a conexão de hardware está correta e, em seguida, verifique a mensagem de erro exibida no terminal.

9.1 problemas na fase de instalação

P1: 'conda command not found'

Problema: Após a instalação do Miniforge, o comando não pode ser encontrado ao digitar o prompt 'conda'.

Causa: A variável de ambiente não está configurada corretamente.

Solução:

# Option 1: Reinitialize the shell
~/miniforge3/bin/conda init bash
# Then close the terminal and reopen it.

# Option 2: Manual Activation
source ~/miniforge3/etc/profile.d/conda.sh
conda activate base

P2: Falha ao criar ambiente para 'environment.yml'

Problema: Um erro é relatado ao executar 'conda env create -f environment.yml.

Possíveis causas e soluções:

  1. Problemas de rede (mais comum):
# Switch to domestic mirroring source
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
# Then try again
conda env create -f environment.yml
  1. Espaço em disco insuficiente:
# Check disk space
df -h
# Ensure there is at least 5GB of available space.
  1. Versão do conda muito antiga:
conda update conda

P3: 'uv: command not found'

Problema: Após instalar o uv, o prompt não consegue encontrar o comando.

Solução:

# Check if uv is installed
ls ~/.cargo/bin/uv

# If it exists, add it to PATH
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

P4: 'uv sync' relatou um erro

Problema: Falha ao executar 'uv sync' no diretório 'reBotArm_control_py'.

Possíveis causas:

  1. Não estar no diretório correto

  2. A versão do Python não corresponde.

Solução:

# Confirm that the directory is correct
ls -la pyproject.toml

# If it doesn't exist, it means you're not in the correct directory.
cd ~/reBotArm_control_py

# Confirm the Python version
python --version # 应该是 3.10.x

9.2 Problema de reconhecimento de dispositivo USB

P5: 'lsusb' não vê o reSpeaker Flex

Etapas de solução de problemas:

  1. Verifique se o cabo USB está bem conectado: Conecte e desconecte novamente o cabo USB-C

  2. Trocar a porta USB: Tente outras portas USB no seu computador (especialmente a porta USB 3.0 azul)

  3. Verificar o cabo: Certifique-se de que você está usando um cabo de dados (alguns cabos servem apenas para carregamento)

  4. Ver o log do sistema:

# View USB connection logs
dmesg | tail -20
  1. Verificar se é necessário driver:
# View detailed information of USB devices
lsusb -v -d 2886:

P6: 'lsusb' não vê o braço

Etapas de solução de problemas:

  1. Confirme se o cabo USB está conectado corretamente

  2. Confirme se a alimentação do braço robótico está ligada (interruptor da fonte de 24V)

  3. Verifique se o indicador de energia está aceso

  4. Ver os logs do sistema:

dmesg | grep -i "ttyUSB\|ttyACM\|usb"

P7: 'Permission denied: /dev/ttyUSB0'

Problema: Você não tem permissão para acessar o dispositivo serial.

Solução:

# Temporary solution
sudo chmod 666 /dev/ttyUSB0

# Permanently resolve (recommended)
sudo usermod -a -G dialout $USER
# Then log out and log back in.

9.3 Problemas de execução do Python

P8: 'ModuleNotFoundError: No module named 'usb.core''

Problema: Módulo Pyusb não encontrado.

Solução:

# Confirm in the flex environment
conda activate flex

# Manually install pyusb
conda install -c conda-forge pyusb

# If it still doesn't work, check the Python path.
which python # Confirm that the output contains miniforge3/envs/flex

Q9: 'ImportError: cannot import name 'RobotArm''

Problema: A biblioteca de controle do braço robótico não pode ser encontrada.

Solução:

# Confirm that reBotArm_control_py has been correctly cloned
ls ~/reBotArm_control_py

# Confirm that PYTHONPATH has been set
echo $PYTHONPATH # should include the path to reBotArm_control_py

# If not, set it manually
export PYTHONPATH="/home/your_username/reBotArm_control_py:$PYTHONPATH"

# Or directly verify the path using Python
python -c "import sys; print(sys.path)"

Q10: 'libusb-1.0.so. 0: cannot open shared object file'

Problema: A biblioteca de sistema libusb está ausente.

Solução:

# Install the libusb development library
sudo apt-get update
sudo apt-get install -y libusb-1.0-0-dev

# If it still doesn't work, try
conda install -c conda-forge libusb

9.4 problemas de rede/API

Q11: 'Groq API Key not set'

Problema: O programa informa que a API Key não está definida.

Solução:

  1. Verifique se o VOICE_CFG["api_key"] em "sound_tracking_arm.py" foi modificado

  2. Confirme se o formato da API Key está correto (deve começar com 'gsk_')

  3. Você também pode definir variáveis de ambiente:

export GROQ_API_KEY="gsk_xxxxxxxxxxxx"

Q12: Quando 'Connection error' ou 'Timeout' ao chamar Groq API

Problema: Não é possível conectar ao servidor Groq.

Etapas de solução de problemas:

  1. Testar a conectividade de rede:
ping console.groq.com -c 3
      • Se o ping falhar, você precisa configurar um agente **:

Edite o 'VOICE_CFG em 'sound_tracking_arm.py ':

proxy": "http://your proxy IP:port",  # e.g., "http://127.0.0.1:7890
  1. Se o agente não funcionar, verifique se o agente está funcionando corretamente:
# Test via proxy
curl -x http://your_proxy_IP:port https://console.groq.com

Q13: 'Rate limit exceeded' / 'Quota exceeded'

Problema: A frequência de chamadas da API excede o limite ou a cota foi esgotada.

Solução:

  1. Acesse https://console.groq.com/settings/limits para ver os limites

  2. Contas gratuitas Groq têm um limite no número de solicitações por minuto, reduza a frequência de uso.

  3. Se for um problema de cota, talvez seja necessário fazer upgrade para uma conta paga.

Q14: 'TTS broadcast failure'/'aplay not found'

Problema: A função de transmissão de voz não está normal.

Solução:

# Install alsa-utils (including aplay)
sudo apt-get install -y alsa-utils

# Check audio output device
aplay -l

# If the device is not visible, you may need to configure the default audio output.

9.5 problema do braço mecânico

Q15: Braço mecânico não responde/não se move

Etapas de solução de problemas:

  1. Verificar dispositivo serial:
ls -la /dev/ttyUSB*
# or
ls -la /dev/ttyACM*
  1. Verificar permissões:
# Ensure read and write permissions
ls -la /dev/ttyUSB0 # should show crw-rw-rw-
  1. Verificar a fonte de alimentação: Confirme se a fonte de alimentação de 24V está ligada

  2. Verifique o log do programa: há alguma mensagem de erro sobre 'ArmCtrl' ao executar o programa?

  3. Tente especificar a porta serial correta:

python sound_tracking_arm.py --port /dev/ttyACM0
# or
python sound_tracking_arm.py --port /dev/ttyUSB1

Q16: Movimento anormal/jitter do braço mecânico

Possíveis causas:

  1. O braço mecânico não está devidamente fixado—verifique se a base está firme

  2. Há obstáculos no alcance de movimento—limpe o espaço de movimento

  3. Ângulo de junta anormal—tente redefinir: diga "voltar à posição inicial" ou reinicie o programa

Q17: Aquecimento anormal do motor

⚠️Aviso: Se o motor aquecer de forma anormal, desligue a alimentação imediatamente!

Possíveis causas:

  • O braço mecânico está bloqueado por força externa e o motor continua fazendo força

  • Movimento muito rápido

  • Operação contínua por muito tempo

Solução:

  1. Desligue a alimentação e aguarde o motor esfriar

  2. Verifique se há obstrução mecânica

  3. Reduza a frequência de movimento

9.6 problemas relacionados a áudio

Q18: Nenhum som na gravação do microfone

Etapas de solução de problemas:

  1. Verifique se o dispositivo foi reconhecido:
arecord -l  # Should see reSpeaker XVF3800
  1. Verificar o número do dispositivo:
# View detailed device information
cat /proc/asound/cards
  1. Teste de gravação manual:
# Record with a specified device number (adjust the card and device numbers according to the actual situation)
arecord -D plughw:2,0 -c 6 -r 16000 -f S16_LE -d 3 /tmp/test.wav
  1. Verifique se o array de microfones está corretamente conectado: Confirme se o cabo FPC está bem encaixado

Q19: Ângulo DOA não estável/saltando

Possíveis causas e soluções:

  1. O ambiente é muito barulhento: Teste em um ambiente silencioso

  2. Array de microfones não está plano: Certifique-se de que o reSpeaker esteja colocado horizontalmente

  3. Forte interferência de fonte sonora próxima: Mantenha distância de ventiladores, alto-falantes e outros equipamentos

  4. Ajuste o limiar de disparo: Aumente o parâmetro '-- threshold'.

9.7 outras questões

Q20: Ctrl C não consegue sair

Solução:

# Try pressing Ctrl+C multiple times
# Or open another terminal
killall python

Q21: Travamento durante a execução do programa

Etapas de solução de problemas:

  1. Veja as últimas mensagens de erro antes do travamento.

  2. Use o modo '-- debug' para obter mais logs

  3. Verifique se há falta de memória: 'free -h'

  4. Verifique se a conexão USB está instável

Q22: Como recomeçar completamente

Se você quiser reconfigurar do zero:

# 1. Delete Conda Environment
conda activate base
conda env remove -n flex

# 2. Delete the code directory
rm -rf ~/reBot-Arm-reSpeaker-Flex
rm -rf ~/reBotArm_control_py

# 3. Re-execute the installation steps according to this Wiki.

10. precauções de segurança

⚠️ Ao usar este item, leia atentamente todas as instruções de segurança a seguir. Operação inadequada pode causar danos ao equipamento ou ferimentos pessoais.

10.1 segurança do braço mecânico

Regras básicas de segurança

RegraDescriçãoConsequências
Não mova o braço mecânico à forçaA junta do braço mecânico é acionada por um motor de precisão, e a rotação manual forçada pode causar danos às engrenagensDanos ao motor, alto custo de manutenção
Garanta que o alcance de movimento esteja livre de barreirasAntes da operação, verifique se não há pessoas, paredes ou outros objetos no alcance de movimento do braço robóticoColisões causam danos ao braço robótico ou aos objetos ao redor
Desconecte o cabo USB em caso de emergênciaEm caso de emergência, desconecte imediatamente o cabo USB do braço mecânico para cortar o sinal de controleO braço mecânico para de se mover
A carga não deve exceder 1500gNão segure objetos com mais de 1,5kg nas garrasSobrecarga do motor e danos
Mantenha uma distância segura de 1,5mMantenha uma distância de pelo menos 1,5m quando o braço robótico estiver em funcionamentoEvitar lesões por colisão

Limites de ângulo das juntas

O sistema possui proteção de limite de junta embutida, a tabela a seguir é para referência. Observe que a unidade de radianos (rad) é usada no código.

JuntaNomeMín (Ângulo)Máx (Ângulo)Descrição
J1Rotação da base-149.0 °149.0 °Rotação horizontal, alcance máximo
J2Inclinação do ombro-206.3 °0 °Lança para cima, apenas para cima
J3Inclinação do cotovelo-206.3 °0 °Antebraço estendido, apenas para frente
J4Rotação do pulso-85.9 °85.9 °Rotação da extremidade para a esquerda e direita
J5Inclinação do pulso-85.9 °85.9 °Oscilação da extremidade para cima e para baixo
J6Guinada do pulso-85.9 °85.9 °Direção de ajuste fino da extremidade
J7Abertura e fechamento da garra-320.90Controle da garra, número negativo significa aberta

10.2 Segurança elétrica

  • Não conectar/desconectar com energia ligada: Antes de conectar ou desconectar a interface de alimentação XT30 2 2, a alimentação deve ser desligada

  • Sem hot plug do motor: Não conecte ou desconecte o cabo do motor quando a alimentação estiver ligada

  • Use a fonte de alimentação correta: Somente fonte de alimentação de 24V 15A pode ser usada, o uso de outras fontes pode causar danos ao equipamento

  • Evite ambiente úmido: Não use em ambientes úmidos, empoeirados e de alta temperatura

  • Verifique o cabo: Antes de usar, verifique se o cabo de alimentação e o cabo de sinal estão intactos e sem danos

10.3 segurança do ambiente de uso

  • Menores precisam usar sob supervisão de adultos: o braço mecânico tem certa força, operação inadequada pode causar ferimentos

  • Bancada estável: Certifique-se de que o braço robótico esteja fixado em uma mesa horizontal estável

  • Espaço adequado: Reserve pelo menos 1 metro de espaço seguro ao redor do braço robótico

  • Boa iluminação: Facilita observar o estado de operação do braço robótico

  • Mantenha-se longe de fontes de água: Equipamentos eletrônicos e água não devem ter contato

10.4 instruções de segurança para reset do motor

Antes do reset do motor:

  • 2 garras de fixação (tamanho ≥ 3 polegadas)

  • Mantenha uma distância segura de pelo menos 1 m durante a calibração e operação

  • É proibido hot plug do motor; a alimentação deve ser desconectada antes de conectar ou desconectar a interface XT30 2 2

  • Proibido sobrecarga e operação em velocidade excessiva do motor

  • Verifique a fiação e os fixadores antes da partida do equipamento

  • Não use em ambiente úmido, de alta temperatura ou empoeirado


11. Introdução aos Princípios Técnicos

Esta seção apresenta brevemente os principais princípios técnicos envolvidos no projeto para ajudar usuários interessados a entender a "mágica por trás". Não é necessário entendimento completo para usar este item.

11.1 Princípio de localização de fonte sonora DOA

Pergunta: Como saber de que direção o som está vindo?

reSpeaker Flex possui 4 microfones dispostos em anel. Quando o som vem de uma determinada direção, há uma pequena diferença no tempo de chegada em diferentes microfones (chamada de "diferença de tempo" ou TDOA).

Explicação popular: Assim como quando você fecha os olhos, se alguém bater palmas à sua esquerda, seu ouvido esquerdo ouvirá primeiro e seu ouvido direito ouvirá um pouco depois. Com base nessa diferença de tempo, o cérebro consegue dizer que o som está à esquerda.

O chip XVF3800 integrado no reSpeaker Flex serve para isto:

  1. 4 microfones ao mesmo tempo

  2. O chip analisa a diferença de fase/tempo dos 4 sinais

  3. Calcula a direção (0 ° ~ 360 °) de onde o som provavelmente vem.

  4. Envia os dados do ângulo DOA para o computador via USB

11.2 Processo de reconhecimento de fala

Pergunta: Como transformar o que você fala em palavras?

O projeto usa o modelo Whisper da OpenAI e utiliza chamadas de API aceleradas da Groq. O processo geral é:

  1. Gravação: 6 canais de áudio de 16kHz são coletados com arecord a partir do array de microfones

  2. Pré-processamento: Usar NumPy para extrair o primeiro canal (o sinal após o beamforming), normalizar e aplicar ganho de amplificação

  3. Upload: Enviar o arquivo de áudio processado para o servidor Groq

  4. Reconhecimento: O modelo Whisper transcreve as formas de onda de áudio em texto.

  5. Retorno: Obter o resultado do reconhecimento (por exemplo, "turn left")

O modelo Whisper é um dos modelos de reconhecimento de fala mais avançados, que suporta vários idiomas e possui alta precisão de reconhecimento.

11.3 Princípio de compreensão de intenção

Pergunta: Como a IA entende o que você quer que o braço mecânico faça?

O projeto usa o grande modelo de linguagem Llama-3.3-70B da Meta, chamado por meio da Groq API.

Tecnologia central: Engenharia de Prompt

No código, damos à IA um "modelo de instrução" detalhado e dizemos a ela:

  • Quais ações podem ser executadas (virar à esquerda, virar à direita, dizer olá, etc.)

  • O significado de cada ação

  • Requisitos de formato de saída (JSON)

Por exemplo, quando o usuário diz "help me turn my head to the left:

  1. O texto é enviado para o Llama-3.3-70B

  2. A IA, combinada com os prompts do sistema, entende a intenção

  3. Gera um JSON estruturado:

    {"action": "turn_left", "params": {"angle": 45}, "reply": "Okay, turning left."}
  4. O programa analisa o JSON e executa a ação correspondente

11.4 Princípio de controle do manipulador

Pergunta: Como o computador controla o braço mecânico?

Cinemática (Kinematics):

O núcleo do controle do braço robótico é a cinemática — dado o ângulo de junta alvo, calcular a posição da extremidade do braço robótico no espaço (cinemática direta); ou, inversamente, dada a posição alvo da extremidade, calcular quanto cada junta deve girar (cinemática inversa).

O projeto usa a biblioteca Pinocchio para cálculos cinemáticos e planejamento de trajetória.

Interpolação de movimento:

O manipulador não "salta" diretamente do ponto A para o ponto B, mas faz a transição suave por meio de um algoritmo de interpolação. A função de suavização cosseno (cosine easing) é usada no código:

# Easing formula: makes motion smoother and more natural
ease = -(math.cos(math.pi * t) - 1) / 2.0

Isso faz com que o braço robótico comece acelerando lentamente e desacelere lentamente antes de parar, como um movimento humano natural.

Proteção de limite de junta:

Todos os ângulos de junta alvo são limitados dentro de uma faixa segura:

np.clip(target_angle, JOINT_LIMITS_MIN, JOINT_LIMITS_MAX)

Isso garante que o braço robótico não exceda os limites físicos, evitando danos.


12. Referências

RecursoLinkDescrição
Repositório principal do projetohttps://github.com/xr686/reBot-Arm-reSpeaker-FlexPrograma mestre de controle por som
Biblioteca de controle do braço robóticohttps://github.com/vectorBH6/reBotArm_control_pyBiblioteca de controle do braço robótico em Python
reBot Arm Oficialhttps://www.rebotix.com/Site oficial do braço robótico
Seeed Studiohttps://www.seeedstudio.com/Compra do reSpeaker Flex e suporte técnico

12.2 Wiki relacionada ao reSpeaker Flex

RecursosLinks
Wiki oficial do reSpeaker Flexhttps://wiki.seeedstudio.com/pt-br/reSpeaker_USB_Mic_Array/
Documentação técnica do XMOS XVF3800https://www.xmos.com/xvf3800
Guia do usuário XVF3800https://www.xmos.com/download/XVF3800-User-Guide (1).pdf
Descrição do algoritmo DOA do array de microfonesConsulte a documentação oficial do reSpeaker Flex

12.3 Wiki relacionada ao braço robótico

RecursoLink
reBot-DevArm GitHubhttps://github.com/Seeed-Projects/reBot-DevArm
Guia de montagem do ReBot ArmConsulte a Wiki oficial da Seeed Studio
Biblioteca de cinemática Pinocchiohttps://github.com/stack-of-tasks/pinocchio

12.4 Documentação de API e ferramentas

RecursoLinkDescrição
Groq consolehttps://console.groq.com/keysGerenciamento de API Key
Documentação da Groq APIhttps://console.groq.com/docsInstruções da API
Comunidade de desenvolvedores Groqhttps://discord.gg/groqComunidade de suporte técnico
Projeto Edge-TTShttps://github.com/rany2/edge-ttsFerramenta de síntese de fala
Artigos do Whisperhttps://arxiv.org/abs/2212.04356Artigos técnicos de reconhecimento de fala
Modelo Llamahttps://ai.meta.com/llama/Modelo de grande linguagem oficial

12.5 Recursos de aprendizado de tecnologia

TópicosRecursos recomendados
Conceitos básicos de Pythonhttps://docs.python.org/zh-cn/3/tutorial/
Uso do Condahttps://docs.conda.io/projects/conda/en/latest/user-guide/getting-started.html
Conceitos básicos de Ubuntuhttps://ubuntu.com/tutorials/command-line-for-beginners
Conceitos básicos de Githttps://www.progit.cc/
Introdução à robóticaModern Robotics (Kevin Lynch)
Introdução ao reconhecimento de falaCurso de Deep Learning do Andrew Ng — Sequence Model

12.6 Comunidade e suporte

  • GitHub Issues: Se você encontrar um problema que não esteja coberto por este documento, pode enviar uma Issue no repositório GitHub do projeto.

  • Fórum Seeed Studio:https://forum.seeedstudio.com/ (discussões técnicas relacionadas ao reSpeaker)

  • Groq Discord:https://discord.gg/groq (questões relacionadas à API)


Escrito no final

Parabéns por ter lido até o final do documento! Se você seguir esta Wiki passo a passo, acredito que tenha construído com sucesso seu próprio sistema inteligente de braço robótico por voz.

Este projeto envolve tecnologias de processamento de som, interação de fala com IA, controle de movimento de robôs e outras áreas, sendo um bom projeto de prática abrangente para iniciantes. Espero que você possa continuar explorando o seguinte:

  • Tentar modificar comandos de voz para adicionar mais ações personalizadas

  • Ajustar parâmetros de DOA para tornar o rastreamento da fonte sonora mais sensível

  • Explorar a implantação do projeto em dispositivos embarcados, como Raspberry Pi

  • Adicionar módulo de visão para fazer o braço robótico "enxergar"

Se você tiver quaisquer dúvidas ou sugestões, fique à vontade para enviar feedback via GitHub Issue. Divirta-se!🤖


Aviso legal: Este documento é baseado no código open source do projeto e é apenas para referência. A operação do braço mecânico é perigosa, por favor, compreenda totalmente as precauções de segurança antes de operar. O autor não é responsável por quaisquer danos a equipamentos ou lesões pessoais causados pelo uso deste documento.

Suporte técnico e discussão de produtos

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...