quinta-feira, 12 de dezembro de 2013

Validação da Rede de Sensores Inerciais - Resultados Obtidos

Como resultados otidos,

a comparação entre as velocidades angulares obtidas pelos giroscópios e as obtidas pelas servomotores revelou que ambas as curvas apresentaram comportamentos com o mesmo padrão, no entanto, as amplitudes apresentaram algumas divergências. As figuras que se seguem, ilustram os resultados obtidos para a grandeza da velocidade angular.




Os resultados obtidos da comparação dos valores da aceleração linear não foram satisfatórios. De uma forma geral, apresentaram-se curvas que não apresentam semelhanças, salvo algumas ocasiões onde é possível observar comportamentos semelhantes apenas em alguns "picos" de aceleração, mesmo com amplitudes de diferentes ordens de grandeza. As duas figuras que se seguem ilustram exemplos da comparação entre curvas de aceleração linear.


Os resultados obtidos na comparação entre as inclinações obtidas pelos acelerómetros e as inclinações obtidas pela cinemática apresentaram-se satisfatórios. No entanto, em alguns casos foram observadas diferenças significativas nas amplitudes dos valores, mas apenas tendo como referência a inclinação baseada na cinemática direta da perna do robô, não é possível concluir sobre estas divergências. As duas figuras que se seguem representam alguns resultados obtidos para esta grandeza. No primeiro caso apresenta-se a comparação entre curvas, cuja semelhança é elevada, e no segundo caso, uma comparação onde existe a diferença nas amplitudes obtidas.



Em última análise, foi realizado o estudo da redundância sensorial, isto é, o estudo da combinação das leituras de vários sensores sujeitos à mesma situação. As figuras que se seguem representam dois exemplos para os resultados obtidos para a redundância sensorial. Em ambos os casos, foi possível observar ligeiras melhorias.


Validação da Rede de Sensores Inerciais - Grandezas a Avaliar

A validação da rede de sensores inerciais prossegue com a análise dos dados obtidos durante a realização das experiências ilustradas na publicação anterior.

Para esta validação foram avaliadas as seguintes grandezas:
- velocidade angular;
- aceleração linear;
- inclinação.

A avaliação da velocidade angular realizou-se através da comparação dos dados dos giroscópios com os dados da posição angular dos servomotores derivada. Esta comparação, para as juntas do tornozelo é realizada diretamente, no entanto, para as juntas dos joelhos e anda, os dados dos servomotores são comparados com o resultado da diferença entre os giroscópios que se encontram adjacentes ao respetivo servomotor.

Para a avaliação das restantes grandezas foi necessário recorrer ao cálculo dos valores de comparação, através de um modelo de cinemática direta desenvolvido para uma perna do robô (apenas para uma porque ambas apresentam movimentos idênticos). Na próxima figura é possível observar uma simplificação de uma perna do robô, a partir da qual partiu o desenvolvimento da cinemática direta.

Diagrama simplificado de uma perna do robô humanóide.

De seguida, seguiu-se a cadeia cinemática a partir do diagrama anterior, representada na figura seguinte.

Cadeia cinemática da perna do robô humanóide.

Esta cadeia cinemática deu origem à seguinte tabela de Denavit-Hartenberg:

Tabela de Denavit - Hartenberg para o modelo de cinemática da perna do robô humanóide.
A partir desta tabela, obtém-se a matriz que define a posição e orientação do último ponto da cadeia cinemática, em relação ao referencial global (situação na base do pé do robô).

A partir dessa matriz, é possível chegar à equação (1), que representa a relação da velocidade de um ponto do sistema cartesiano r com a velocidade das juntas , vetos q . Essa relação é estabelecida pela matriz J , a matriz do Jacobiano.

                       dr = J · dq       (1)

∆2 r = J · ∆2 q + ∆J · ∆q        (2)


Através da diferenciação de (1), obtém-se a equação (2) que permite obter a aceleração em cada ponto da perna do robô humanóide a partir da aceleração dos servomotores. Essa aceleração é utilizada como referência que serve para a avaliação da aceleração linear.

A referência para a inclinação é obtida através da matriz de transformação T que estabelece a relação entre o último referencial da cadeia cinemática com o seu referencial base. 

Sendo a matriz T,


igualando a submatriz composta pelas primeiras 3 linhas e 3 colunas,  com a matriz R


matriz que representa a mesma transformação que T mas em função dos ângulos de Euler, é possível obter a inclinação de qualquer ponto da cadeia cinemática da perna do robô humanóide. Esta inclinação servirá para avaliar os resultados da inclinação calculados pelos dados dos acelerómetros. 


Validação da Rede de Sensores Inerciais - Movimentos Realizados

A validação de toda a rede de sensores inerciais, após a sua implementação no robô humanóide, passou pela aquisição dos seus dados durante a realização de movimentos controlados por tele-operação do robô humanóide. Tal foi possível graças a um projeto anteriormente desenvolvido também como contribuição para o PHUA, no qual se desenvolveu um módulo na plataforma ROS, o qual recebe a posição espacial de um dispositivo háptico (controlado por um tele-operador), e com essa posição é calculada a posição angular dos servomotores do robô humanóide através de transformações e um modelo de cinemática inversa. O mesmo módulo ROS permite obter, a cada iteração, a posição angular de cada servomotor do robô humanóide.

Em paralelo com o módulo anteriormente referido, o módulo de aquisição de dados da rede de sensores inerciais fornecia a informação de todos os sensores envolvidos na rede.

Com todo este setup  foi possível obter as curvas da posição angular de cada servomotor e as curvas de todos os sensores inerciais da rede, durante a realização de 3 tipos de movimento:

- 1 . Agachamento;
- 2. Flexão do Joelho;
- 3. Movimento Lateral.

Tais movimentos foram realizados através  dos servomotores da parte inferior. Na figura seguinte é possível observar todos os servomotores do robô humanóide com o respetivo número ID, o qual permite identificar facilmente cada um deles.

ID dos servomotores do robô humanóide.
 
De seguida são apresentados 3 vídeos que ilustram cada tipo de movimento, juntamente com o respetivo gráfico da posição das juntas.

1 - Agachamento



Posição angular dos servomotores para movimento de agachamento.
2 - Flexão do Joelhos


 
Posição angular dos servomotores para o movimento da flexão dos joelhos.

3 - Movimento lateral



Posição angular dos servomotores para o movimento lateral.

Posicionamento da Rede de Sensores no Robô Humanóide

Com vista a proceder à validação de toda a rede de sensores inerciais desenvolvida, optou-se pela sua implementação no robô humanóide, para posterior aquisição de dados perante a realização de movimentos.

De forma a simplificar o controlo do robô humanóide, apenas foi utilizada a parte inferior, composta por anca, pernas e pés, como é possível observar na seguinte figura.

Parte inferior do Robô Humanóide do PHUA.
Nesta plataforma humanóide foi implementada toda a rede, composta por 8 unidades do modelo POLOLU e uma RAZOR. A sua distribuição pode ser observada na seguinte figura.

Distribuição das unidades inerciais.




De uma forma resumida, A vermelho estão simbolizadas as unidades inerciais POLOLU e a amarelo a unidade RAZOR. A azul encontra-se a unidade de controlo Arduino. Na anca foram implementadas 4 unidades POLOLU e a unidade RAZOR. As restantes unidades foram implementadas nos joelhos, sendo que para cada perna, uma das unidades se encontra acima e outra abaixo da junta do joelho.

Esta disposição não é obrigatoriamente definitiva, representando apenas um exemplo de uma possível distribuição das unidades, com a qual foram realizados testes de validação.

Aquisição de Dados da Rede

Caros seguidores,

há muito tempo que não publico nada no blogue mas aqui temos notícias.

Depois da placa em PCB, que sustenta todas as ligações, estar concluída, foi desenvolvido um módulo que em cooperação com a unidade de controlo Arduino, realiza a aquisição de dados de todos os sensores disponíveis.

Módulo de aquisição de dados da rede inercial.
A figura apresentada mostra a forma como funciona a cooperação entre um módulo desenvolvido em ROS e o firmware Arduino utilizado para a aquisição de dados. Após a ordem de iniciar, o Arduino realiza a operação de contagem de sensores inerciais presentes na rede, bem como a inicialização das variáveis necessárias e a comunicação com o PC, no ponto 1. De seguida, o PC faz o pedido do número de sensores, em 2, e em 3 o Arduino envia uma string com a respetiva resposta. Dentro de um loop, a cada iteração é realizado pelo PC, em 4, o pedido de uma leitura de todos os sensores, sendo essa leitura realizada em 5, pelo Arduino e enviada para o PC, sendo em 6 realizada a receção dos dados e em 7 a sua publicação  necessária para o pós processamento da informação recebida. O módulo é terminado assim que em 8 se der a ordem para tal.