- Shoggoth Mini é um robô de tentáculo macio que usa GPT-4o e aprendizado por reforço para produzir movimentos naturais e expressivos
- Diferente dos robôs domésticos tradicionais, ele foi projetado para expressar estado interno e intenção ao interagir com humanos
- Explica em detalhe todo o processo, do design de hardware ao software, incluindo o sistema de visão por câmera e controle
- Ao mapear de forma intuitiva a entrada 2D de trackpad para o controle 3D do tentáculo, melhora a usabilidade, e combina visão computacional de ponta com RL para garantir precisão e expressividade nos movimentos
- Na conclusão, apresenta reflexões sobre o equilíbrio entre vivacidade do robô, imprevisibilidade e afinidade com humanos, além de ideias para expansões futuras
Introdução e contexto
- No último ano, a área de robótica avançou rapidamente ao se integrar à era dos grandes modelos de linguagem (LLMs)
- Exemplos como π0.5 e Tesla Optimus entendem comandos em linguagem e executam ações reais, mas a maioria ainda permanece no nível de robôs funcionais
- O texto aponta que, para a naturalidade da interação humano-robô e para transmitir estados internos (intenção, atenção, confiança etc.), a "expressividade" (expressiveness) é um elemento central
- Inspirado por exemplos como a luminária com estética de Pixar (Apple ELEGNT) e os SpiRobs, que parecem estranhamente “vivos” mesmo com movimentos simples, o projeto se interessa pela diferença entre expressão intencionalmente projetada e sensação de vida surgida por acaso
- Para explorar isso, começou a desenvolver o Shoggoth Mini, compartilhando o processo de design e os aprendizados obtidos por meio de experimentação e acaso
Hardware
- A primeira versão do testbed começou com uma estrutura simples: 3 motores, uma placa para fixar o tentáculo e uma cobertura em forma de domo
- Durante a impressão 3D, faltou filamento e parte do domo saiu com cor diferente, o que acabou gerando um rosto com olhos e boca; depois, a forma final foi explorada visualmente com o ChatGPT
- Uma câmera estéreo foi instalada no domo para rastrear o tentáculo, e o “erro de previsão” dos olhos do robô produz o efeito de atrair o olhar do observador
- O design com spool aberto tinha o problema de os cabos escaparem e se enrolarem com facilidade; isso foi resolvido com uma simples cobertura de spool, melhorando também a velocidade de experimentação repetida
- Com scripts de calibração e comprimento extra de fio de reserva, a manutenção e o ajuste de tensão dos motores passaram a ser feitos com mais rapidez
- Para minimizar a curvatura causada pela flacidez do tentáculo, a espinha (spine) foi ajustada para uma espessura adequada
- Tanto o CAD da montagem quanto os arquivos STL para impressão 3D estão disponíveis no repositório no GitHub
Controle manual
- No início, o objetivo era permitir mover o tentáculo de forma intuitiva com um trackpad, simplificando o controle do comprimento de 3 tendões para um controle bidimensional
- Cada tendão tem uma direção principal no plano 2D, e a variação necessária de comprimento é calculada projetando o vetor de direção do cursor em cada eixo para obter a tensão necessária
- Valores positivos significam encurtamento do tendão, e negativos, alongamento
- Essa forma de conversão 2D→3D também foi reutilizada como camada de projeção de referência no controle automatizado, incluindo aprendizado por reforço
- Embora a faixa de operação seja limitada, o controle é intuitivo e melhora bastante a responsividade e a experiência do usuário
Arquitetura do sistema
- Estrutura hierárquica de controle em duas camadas:
- No nível mais baixo, há políticas open-loop (por exemplo,
<yes>, <shake>) e políticas de RL em closed loop (por exemplo, rastreamento de dedo); o rastreamento da ponta do tentáculo e da mão é tratado por um pipeline baseado em visão estéreo
- No nível mais alto, o GPT-4o processa voz/texto em tempo real (a visão ainda não foi divulgada), e eventos de vídeo, como acenos com a mão, são enviados ao GPT-4o como cues em texto para decidir chamadas de API
- Em vez de uma integração direta end-to-end de visão-linguagem-ação (VLA) baseada em grandes modelos, o sistema foi projetado como uma estrutura em cascata com visão dedicada e controladores individuais leves
- O ajuste do escopo de observação do RL, movimentos naturais de retorno à posição inicial e estados idle entre chamadas de API (modo de “respiração”) reforçam a sensação de que o robô está “vivo”
- Devido às limitações práticas dos VLAs (por exemplo, problemas de correção temporal), prompt engineering acaba sendo um fator importante
Percepção
- Combinação de MediaPipe para rastreamento de mãos com um dataset customizado e um modelo YOLO para rastrear a ponta do tentáculo
- Foram usados clustering k-means, rotulagem automática/active learning do Roboflow e Segment Anything para ampliar o dataset e fazer rotulagem precisa
- O treinamento foi feito com Ultralytics YOLO, e um notebook do DeepLabCut foi usado para estimar parâmetros intrínsecos/extrínsecos das câmeras e implementar triangulação 3D
- O rastreamento em tempo real das posições 3D da mão e do tentáculo permite um controle fechado robusto
API de controle de baixo nível
- Como em robôs macios a cinemática inversa não funciona tão bem quanto em corpos rígidos, a abordagem de projeção de controle 2D foi aplicada de forma consistente
- O aumento da espessura da espinha também garantiu reprodutibilidade do movimento entre sessões
- Em experimentos com movimentos como agarrar objetos, foi observada a robustez mecânica própria de robôs macios, capaz de absorver diversidade no formato e no peso dos objetos
- Manipulação fina em alta frequência ainda é difícil, mas as operações básicas são surpreendentemente estáveis só com o design mecânico
Aprendizado por reforço (RL)
- O RL foi aplicado primeiro a políticas simples, como rastrear o dedo do usuário, e a transferência de simulação para o mundo real foi melhorada no simulador MuJoCo com randomização de domínio (PPO, MLP, frame stacking, randomização de massa/atrito/amortecimento)
- No início, o espaço de ação usava diretamente o comprimento dos tendões, mas isso levou a reward hacking e falha na transferência para o robô real
- Ao restringir as ações com a abordagem de projeção 2D, foram contidos movimentos irreais (instabilidade, vibração etc.), e foi sugerida a possibilidade de expansão gradual para maior dimensionalidade via curriculum learning
- Para compensar o jitter causado por mudanças bruscas nas ações, foram adicionadas penalidades à reward e aplicado EMA para suavização das ações
Conclusão e direções futuras
- A imprevisibilidade e margem para interpretação sentidas no início geravam uma sensação de “vivacidade” (aliveness), mas, à medida que o sistema foi sendo analisado e internalizado, a novidade desse feedback foi desaparecendo aos poucos
- O texto enfatiza que o equilíbrio entre expressividade (transmissão de intenção) e sensação de vida (imprevisibilidade) é decisivo para a interação entre robôs e humanos
- Ideias para expansões futuras:
- dar ao robô uma voz não humana
- remover a limitação 2D
- diversificar movimentos expressivos com RLHF e abordagens semelhantes
- adicionar mais tentáculos e implementar locomoção autônoma
- adotar motores direct-drive para reduzir ruído
- O código-fonte e os arquivos estão disponíveis no repositório no GitHub, e colaborações e discussões são bem-vindas
1 comentários
Comentários do Hacker News
Parece um encontro interessante entre tecnologia e psicologia humana; no começo o robô parecia muito vívido, mas, com o uso, conforme ficava mais fácil prever seus movimentos, ele foi parecendo menos vivo aos poucos. “Expressividade” tem a ver com transmitir um estado interno, mas “vivacidade” vem da imprevisibilidade e de um certo grau de opacidade, porque sistemas realmente vivos acompanham variáveis complexas e diversas. O Shoggoth Mini não está nesse nível. Fico me perguntando se realmente queremos robôs que pareçam vivos de verdade, ou se existe um limite a partir do qual eles se tornam imprevisíveis demais para ser confortável tê-los por perto.
Lembrou um Furby, por causa do formato e tamanho parecidos, dos dois olhos e das orelhas que se movem. No começo é curioso, mas, mexendo um pouco, logo dá para ver que ele mostra movimentos limitados baseados numa combinação bem simples de estímulos e estado interno. Muita gente brinca com “as pessoas não são a mesma coisa?”, mas na prática você percebe os padrões repetitivos bem rápido.
É parecido com quando você entende as regras de um sistema de jogo e ele deixa de ser divertido. Mesmo que pareça complexo só pela aplicação das regras, o resultado passa a parecer determinado. A mágica vai embora.
Humanos vêm atribuindo traços humanos e autonomia ao fogo, à água corrente, a autômatos do século XVIII, a chatbots primitivos, ao ChatGPT e até a vários tipos de máquina. Às vezes as máquinas até parecem ter “humores”.
Compartilha uma experiência com assistentes de voz e línguas artificiais. Deixa o assistente de voz com sotaque britânico porque isso soa suficientemente estranho para parecer bem mais confiável; talvez não para um britânico, mas é assim que a pessoa sente. No passado, ao participar do desenvolvimento de um jogo, tentou gerar falas de NPCs dinamicamente, mas era muito difícil fazê-las soar convincentes em inglês. No fim, fizeram os NPCs falarem uma língua fictícia e adicionaram um elemento de puzzle para que o usuário aprendesse esse idioma; isso fez os personagens parecerem muito mais reais. Na prática, como o jogador gastava energia traduzindo, esquecia por um momento que era uma língua artificial e assim evitava o “vale da estranheza”. Ainda assim, fica a curiosidade se, quando a pessoa se acostuma com o jogo e ganha fluência no idioma, ela acaba percebendo que é um sistema artificial manipulado.
Em vez de parecer “ah, ele hesitou”, dá a sensação de uma hesitação parecida em qualquer pergunta. O atraso enquanto o GPT gera a resposta incomoda bastante, mais até do que o atraso de conexão em uma transmissão jornalística ao vivo. Talvez colocar algo como LEDs nos olhos para indicar que está processando ajudasse. Ao passar a consulta para o GPT, o atraso é inevitável, e isso é ainda pior quando a requisição vai para a nuvem. Também acha problemático deixar o GPT-4o ouvindo o fluxo de áudio inteiro o tempo todo.
Para uma tarefa simples assim, um LLM pequeno como o Qwen 0.6B provavelmente já basta. Dá para usar o desempenho zero-shot de um modelo grande para criar um dataset próprio e treinar um modelo separado muito mais rápido.
Sobre o GPT-4o ficar ouvindo continuamente, isso pode ser resolvido com uma biblioteca de wake word, como
openWakeWordouporcupine. O usuário poderia acordá-lo com uma palavra específica antes de enviar o prompt, reduzindo também questões de segurança e privacidade. Em estado normal, ele poderia mostrar uma animação de “dormindo” e, quando chamado, acordar e responder. Compartilha links de código aberto relacionados: openWakeWord porcupineNão concorda com a opinião de que o atraso do GPT ao responder seja incômodo. Quando o tentáculo para e se ergue imediatamente, passa a impressão de que está escutando com atenção e pensando, então acaba parecendo até fofo.
Acha que precisa de sobrancelhas, como o Johnny 5 vídeo de exemplo do Johnny 5
Depois da fase de protótipo, talvez dê para colocar diretamente um pequeno modelo otimizado no dispositivo local. Isso seria bem mais rápido, seguro e adequado para um produto final, embora no protótipo reduza a flexibilidade.
Compartilha um vídeo incrível do SpiRobs que inspirou essa ideia vídeo do SpiRobs no YouTube
O design é fofo demais. Quando estudou robôs de tentáculo no ano passado, descobriu que o termo formal é “continuum robots”, e há bastante pesquisa nisso, especialmente em robótica médica. Se quiser saber mais, há uma boa aula introdutória para consultar vídeo da aula relacionada
Acha que é um projeto realmente muito legal. Agora que capacidades de IA cresceram tanto e a robótica também avançou, é uma pena que façam sempre formas humanas. Gostaria de ver aparecer em casa robôs de formas únicas, tipo um híbrido de aranha com lula.
Tem muito debate sobre segurança em IA, mas eu quero um robô híbrido de aranha com lula andando pela minha casa.
Existe uma tendência de tornar a robótica o mais compatível possível com um mundo feito para humanos. Ainda assim, parece totalmente interessante tentar várias opções mudando o tipo de pernas.
De jeito nenhum. Já vi esse filme. Não quero de forma alguma uma criatura tipo facehugger sentada na minha mesa.
Fãs de hentai talvez até gostem.
Se os tentáculos fossem mais longos e houvesse um programa para pregar peças nos colegas, talvez até ficasse divertido.
Achou boa a referência a Lovecraft e se pergunta se um modelo pequeno já não bastaria.
Compartilha links úteis sobre o meme do shoggoth Shoggoth With Smiley Face Meme artigo do NYT sobre o meme do shoggoth
Também pensa algo parecido; na verdade, parece que poderia ser ainda mais simples. Cita o desenvolvedor dizendo que “considerou treinar um modelo VLA end-to-end, mas, em robôs macios acionados por cabos, diferentes combinações de comprimento dos cabos podem levar à mesma posição da ponta, aumentando a imprevisibilidade, então o aprendizado baseado em demonstração não escala bem”; no fim, optou por uma arquitetura em cascata, com visão especializada alimentando um controlador leve. Mesmo assim, seria muito legal tentar de novo com um modelo pequeno e, se fosse rodar um modelo local, seria mais tranquilizador deixá-lo dentro de um pentagrama, brinca.
Já consumi mídia japonesa o bastante para prever para onde isso vai.
A ideia em si é muito legal. Gosto desse tipo de tentativa de dar expressividade a uma entidade não verbal e não humanoide.
Acha que é um trabalho realmente belo. Fica especialmente impressionado com o fato de o robô ter sido projetado para não se parecer com nenhuma criatura da natureza. Não quer um futuro em que a fronteira entre robótica e realidade fique nebulosa; até agora, mesmo robôs humanoides ainda parecem artificiais, e espera que essa tendência continue.