• No results found

4 Research Methods

4.4.3 Covariates

A resposta aos onsets não era adequada ao objectivo que pretendia atingir e, como tal, foi necessário elaborar um novo módulo de análise de som baseado na detecção de

beats (Figura 4.2). Infelizmente, as funcionalidades de detecção e previsão de beats do Marsyas, não estavam operacionais. Após uma pesquisa, consegui identificar outros sistemas de análise de som que conseguiam fazer detecção de beats, contudo, estes não permitiam fazer uma análise do sinal sonoro em tempo real. O que seleccionei foi o BeatRoot [23], que foi desenvolvido em Java por Simon Dixon. Para dançar em tempo real e tendo em conta que cada beat é também um onset, recorri de novo ao detector de

onsets do Marsyas que é utilizado após a detecção de beats feita a priori pelo BeatRoot. Desta forma, o robô não vai reagir a todos os onsets, mas apenas àqueles que correspondem a beats. Para verificar quais dos onsets são beats, recorre-se aos dados produzidos previamente pelo BeatRoot, que são guardados num ficheiro representado no diagrama da figura 4.2 como “eventos musicais pré-analisados” e onde estão expressos os instantes exactos em que os beats ocorrem.

O ficheiro com os dados pré analisados é usado pelo módulo de controlo do robô para identificação dos beats em tempo real. O ficheiro áudio a ser analisado pelo Marsyas é o mesmo que foi pré-processado pelo BeatRoot.

O Marsyas comunica com o módulo de controlo de robô utilizando sockets TCP. Tal como no modelo Catatua Dançarina, o Marsyas é executado em tempo real e é o responsável por reproduzir a música, detectar os onsets e enviá-los para o módulo de

Módulo de análise de som

Módulo de controlo do robô

Robô Eventos musicais em tempo real

Instruções de movimento

29

controlo do robô. A diferença em relação aos modelos anteriores é que o módulo de controlo do robô faz a comparação do tempo do onset com o tempo de um beat para escolher quais dos onsets enviados pelo Marsyas devem ser interpretados através de um movimento da coreografia.

Figura 4.2: Diagrama com a representação da arquitectura do módulo de análise de som.

O funcionamento do BeatRoot, é explicado na subsecção seguinte

BeatRoot

O sistema de detecção de beats desenvolvido por Simon Dixon, permite analisar uma música, detectando os instantes em que ocorrem beats. Este sistema pode ser decomposto em duas partes principais, Tempo Indution e Beat Tracking, que são precedidas por uma detecção de onsets. A lista de onsets passa por um algoritmo de

Tempo Induction que permite o respectivo agrupamento. Segue-se a detecção de beats (beat tracking), esta é a parte mais complexa do sistema de Simon Dixon, pois utiliza um conjunto de agentes para determinar os instantes em que ocorrem beats. Identificados os beats, podemos ver o resultado da análise numa interface gráfica (figura 4.3). Esta interface inclui uma funcionalidade que produz um ficheiro de texto contendo informação sobre os tempos em que ocorrem os beats identificados.

Marsyas BeatRoot

Áudio

Eventos musicais pré-analisados Módulo de análise de som

Módulo de controlo do robô Eventos musicais em tempo real

30

Figura 4.3: Interface gráfica mostrando o excerto de uma música de Offenbach, na qual podemos ver o intervalo entre os beats em milissegundos (em cima), tempos dos beats (linhas pretas verticais), espectrograma (ao centro), amplitude (em baixo), onsets detectados (pequenas linhas verdes sobre o roxo) e o painel de controlo (em baixo).

O ficheiro produzido pelo BeatRoot contem muita informação que não é relevante para o Pernas Cancan. Foi então criado um filtro que limpa os dados não relevantes e deixa apenas os valores correspondentes aos tempos em que ocorrem os beats (Figura 4.4).

31

4.3 Construção do robô

Como referido anteriormente, foi necessário reconstruir o robô para introduzir no robô a capacidade de desempenhar movimentos variados, nomeadamente movimentos que requerem que os joelhos dobrem, as pernas levantem ou a cintura rode.

Este modelo do robô foi construído com dois kits Lego NXT dos quais são utilizados dois bricks, cinco motores e algumas peças Lego Technic. Devido à problemática do equilíbrio do robô durante a dança, que exigia estudos sobre física e que seria difícil de aplicar a um robô construído com Lego NXT, optei pela criação de uma base que sustenta o robô para que este não caia. Inicialmente tentei construir a base com as peças do kit, mas rapidamente ficou claro que o peso do robô seria demasiado para a resistência das peças. Optei então por conceber uma base em madeira com capacidade de sustentar todo o robô sem que este caía ou se desequilibre (Figura 4.5).

Figura 4.5: Pernas Cancan

Cada uma das pernas do robô está associada a um brick diferente e é composta por dois motores. Um motor que possibilita a rotação da perna em torno da anca, e o outro que possibilita a rotação da parte inferior da perna em torno do joelho. Para evitar situações que num humano seriam impossíveis, foram criadas algumas limitações físicas a nível do joelho e das ancas, evitando por exemplo situações em que o joelho dobrasse ao contrário do habitual. Existe ainda um motor que atribui ao robô a capacidade realizar parte de uma rotação em torno do seu eixo vertical. Este motor é controlado pelo mesmo brick que controla a perna esquerda (figura 4.6).

32

Figura 4.6: Diagrama com a representação da construção do robô.

A base de madeira, apesar de oferecer um bom suporte, retira um pouco de liberdade de movimento ao robô, especialmente no que diz respeito à capacidade de rotação em torno do eixo vertical, pois os cabos que ligam os motores ao brick e as próprias pernas batem na madeira se as instruções exigirem uma rotação muito grande. Contudo, esta é a melhor solução que encontrei para o problema do equilíbrio sem que tenha de ser trabalhada em detalhe a questão da física.