Apresentação da placa WindRose.

Estamos acostumados a ouvir falar sobre a evolução por meio da competição, mas e se começarmos a pensar sobre coisas que evoluem por meio da cooperação?

Podemos aprender muito sobre nós mesmos ao simular seres robóticos se comunicando, compartilhando informações, ferramentas e interagindo como uma comunidade de seres vivos. Nessas simulações, surgem questões como a importância da sincronia entre os seres, a necessidade de uma linguagem compartilhada para a compreensão mútua, entre muitas outras questões. É sobre isso que trata este projeto e pesquisa.

Circuitaria da placa WindRose.

O hardware que chamamos de WindRose (rosa dos ventos) tem esse nome por tratar-se de uma placa com orientação de interconexão por bordas mapeadas. Foram projetadas para simulações em modelo físico de autômatos celulares.

A WindRose foi desenvolvida inicialmente como uma demanda da professora Marilia Lyra Bergamo, minha parceira neste projeto. Sou imensamente grato a ela, pelo investimento de recursos, pela inspiração e orientação inestimáveis ao longo de todo o processo de desenvolvimento, bem como pela aplicação do hardware em sua pesquisa sobre Plantas Robóticas e Teorias da Complexidade.

A placa base tem 46mm de largura, 46mm de comprimento e 14mm de altura (com os terminais de parafuso). Pode-se pensar nela como um tipo específico de placa baseada em Arduino.

Nas coordenadas cardinais (N, E, S, W), existem conectores parafusáveis de quatro pinos, para comunicação em malha, assim como para compartilhar a fonte de energia com todas as células conectadas em um cenário de autômato celular. Nas coordenadas relativas (NE, SE, SW, NW), estão todas as portas de sensoriamento (nas bordas diagonais). Também existem as portas internas: ICSP (debug e gravação do bootloader), FTDI (debug serial e programação do firmware) e uma porta PWM (para servos).

No código do firmware de base, cada célula possui duas classes WRBoard (o corpo físico) e a classe Being (ser ou alma). A primeira classe se refere a portas, controles e dispositivos internos. A segunda classe possui o estado atual e os dados de sensoriamento local da célula. Essa classe consegue, também, detectar a presença e coleta dados de seus vizinhos diretos. Células conectadas diretamente são identificadas de forma imediata, enquanto os vizinhos das diagonais são inferidos algoritmicamente, pelos dados recebidos dos vizinhos diretos.

Há um exemplo de interface gráfica de monitonamento serial, que pode ser conectado a uma célula individual a ser verificada. A interface foi programada em Processing, que é um ambiente de programação bastante acessível, para facilitar a cópia e/ou edição do código, para a criação de algum sistema customizado. Na figura abaixo, no canto inferior à direita, vemos um monitoramento de células ativas (acesas), assim como a inferência de um vizinho diagonal (a nordeste) da célula monitorada.

Interface gráfica de exemplo.

Para saber mais sobre o projeto visite a documentação na wiki: https://github.com/sandrobenigno/WindRose/wiki

A documentação do código base do firmware pode ser consultado em: https://sandrobenigno.github.io/WindRose/html/index.html

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *