S.A.R.C.A.S.M, a máquina automática de resolver Cubo de Rubik levemente irritante
(github.com/vindar)- S.A.R.C.A.S.M é um robô baseado em impressão 3D que escaneia e resolve um Cubo de Rubik, adicionando comentários de voz sarcásticos
- Usa um microcontrolador Teensy 4.1 e uma ESP32-CAM para reconhecimento de imagem e controle
- Implementa gráficos 2D e 3D, animações e sincronização labial por meio de um display ILI9341, além de sincronizar a iluminação RGBW com o áudio
- Gera voz diretamente no dispositivo com TTS baseado em espeak-ng, incluindo uma coleção de falas sarcásticas
- Para fazer todo o código caber na RAM, é necessário modificar arquivos do core do Teensy, e o projeto está disponível atualmente em estado inacabado
Visão geral do projeto
-
S.A.R.C.A.S.M (Slightly Annoying Rubik’s Cube Automatic Solving Machine) é um robô que resolve automaticamente um Cubo de Rubik
- É composto por uma estrutura de hardware feita em impressora 3D e um sistema de controle baseado em Teensy
- Escaneia o cubo, calcula a solução e, durante o processo, reproduz respostas de voz sarcásticas
-
O repositório inclui código e esquemáticos, e informações adicionais são fornecidas na thread do fórum Teensy
- Link do fórum: https://forum.pjrc.com/index.php/…
Vídeos de demonstração
- Clipe curto: https://youtube.com/shorts/Xer4mPZZH8E
- Demo completa: https://youtu.be/WV52RtuWXk0
Principais hardwares e recursos
- Usa o Teensy 4.1 como controlador principal e a ESP32-CAM para captura de imagem
- Implementa gráficos 2D e 3D personalizados, animações e sincronização labial por meio do display ILI9341
- Manipula o cubo com motores de passo e servomotores, e detecta erros com sensores de posição
- A iluminação RGBW é sincronizada com o áudio para fornecer efeitos visuais
- Gera voz no próprio dispositivo com TTS baseado em espeak-ng, incluindo uma coleção de falas sarcásticas
Instruções de modificação do código
- Para fazer todo o código caber na RAM, é necessário modificar arquivos do core do Teensy
- Nos arquivos
cores/teensy4/usb_serial.cecores/teensy4/usb_serial2.c,
é preciso remover o atributoDMAMEMantes das definições dos arraystxbuffer[]erx_buffer[]
- Nos arquivos
Observações
- Atualmente, o projeto é um trabalho em andamento, e o estado do repositório está desorganizado e incompleto
- É possível que ele permaneça assim até que o desenvolvedor tenha tempo disponível
1 comentários
Comentários do Hacker News
Usei um Raspberry Pi 2 W, e ele funciona bem para embaralhar e resolver um cubo 3x3x3 com apenas dois servomotores
Dediquei muito tempo à construção, mas foi um trabalho realmente divertido. Fico feliz em ver outras pessoas curtindo
Reuni detalhes sobre o hardware e o software neste post no fórum da Teensy
Eu não sabia como resolver, então encomendei um livreto, e o que chegou foi um livreto sobre teoria dos grupos (group theory). Era difícil demais para a minha cabeça adolescente na época
Dá para ver no vídeo no YouTube e nesta matéria da Purdue
Também existe um vídeo de demonstração mais longo
Como vivo no mundo do software, fico pensando no quanto seria difícil fazer algo assim com as próprias mãos
Como hobbyista que gosta de cubos, isso também seria perfeito como quebra-gelo de escritório. Um colega passa, embaralha o cubo e joga na máquina, e acho que todo mundo se divertiria
Os cubistas passam muito mais tempo embaralhando do que resolvendo. O embaralhamento precisa ser automatizado
Seria ótimo ter um dispositivo que colocasse automaticamente o cubo em um estado específico para permitir praticar repetidamente um certo algoritmo
Dá a sensação de demorar, mas na prática a diferença não é tão grande
Eu também fiz um experimento parecido no passado, e quando girava rápido nunca resolvia. Provavelmente eu colocava por engano uma rotação dupla (U2) ou contava errado o número de vezes
Para uma explicação matemática, veja a página 41 deste material
Se você girou em direção oposta, então bastam 63 repetições. Veja este link
Os movimentos deste robô novo são muito parecidos com os da minha obra antiga. Gosto especialmente da saída na tela
Os humanos fazem essas duas coisas em paralelo, mas o robô executa movimentos já calculados, então o tempo depende apenas da velocidade
Espero que surjam mais robôs com estilo Adams