Algoritmo 7 Algoritmo TD(λ) implementado
3.3 SIMULADOR
4.1.1 Experimentos do desenvolvimento do sistema de controle
4 EXPERIMENTOS REALIZADOS
Este capítulo está dividido em duas seções: experimentos realizados no robô real; e re- sultados dos experimentos do aprendizado por reforço para otimização dos valores dos parâme- tros do caminhar de um robô humanoide. A primeira seção apresenta experimentos relacionado com o desenvolvimento do andar do robô e aprendizado por reforço aplicado no robô real. A segunda seção apresenta experimentos que demonstram a otimização dos valores dos parâme- tros do andar usando aprendizado por reforço utilizando o algoritmo proposto neste trabalho implementado no simulador.
4.1 EXPERIMENTOS REALIZADOS NO ROBÔ REAL
Esta seção apresenta os experimentos realizados com o robô real. A seção está dividido em duas subseções: experimentos do desenvolvimento do sistema de controle; e experimentos com aprendizado por reforço. A primeira subseção é composta por experimentos relacionados ao andar do robô, a segunda subseção apresenta um experimento com aprendizado por reforço aplicado no robô real.
movimentos, porém, essa técnica demandou muito tempo de desenvolvimento, e os resultados obtidos não foram satisfatórios, se comparados com outros robôs (DARwIn-OP) que utilizam outras técnicas para o caminhar, porque o robô andava muito devagar.
Para agilizar a gravação dos movimentos, foi necessário implementar a cinemática in- versa do robô. Para realizar esse cálculo, observa-se as pernas como dois manipuladores, rea- lizando o cálculo de apenas um manipulador, nesse caso, cada perna possuem 6 graus de liber- dade. Observando no livro de Craig (2005), quanto maior o número de graus de liberdade, mais complexo fica o cálculo da cinemática inversa. Buscando na literatura científica, encontra-se o trabalho de Williams (2012) que descreve toda a cinemática direta do DARwIn-OP, e apenas al- guns cálculos da cinemática inversa, já o artigo de Ali et al. (2010) demonstra toda a cinemática inversa em um robô humanoide que possua as mesmas posições das juntas do robô descrito no artigo.
No entanto, para facilitar a programação, foi realizada uma simplificação calculando a cinemática de forma parcial, separando o plano sagital do plano frontal, então, calculou-se o plano sagital das pernas em apenas 3 graus de liberdade (quadril, joelho e calcanhar), e o inclinar lateral (plano frontal) com 2 graus de liberdade (quadril e calcanhar). Seguem abaixo as equações 21, 22 e 23 da cinemática inversa para os 3 graus de liberdade.
θ1 =
tan−1(xy)−cos−1
x2+y2+L21−L22 2∗L1∗√
x2+y2)
− π2 x≥0,
tan−1(xy)−cos−1
x2+y2+L21−L22 2∗L1∗√
x2+y2)
+ π2 caso contrário
(21)
θ2 =cos−1
x2+y2−L21−L22 2∗L1∗L2
(22)
θ3 =−θ1−θ2−δtheta∗ π
180 (23)
Onde:
a) L1eL2são os comprimentos dos elos em metros;
b) xé quanto avançar ou recuar em metros o pé na direção paralela ao chão;
c) yé a altura em metros para levantar o pé na direção perpendicular ao chão;
d) θ1é o ângulo em radianos da junta do quadril;
e) θ2é o ângulo em radianos da junta do joelho;
f) θ3é o ângulo em radianos da junta do calcanhar;
g) δtheta é o ângulopitchdo calcanhar em graus.
Figura 33 – Movimento do andar do robô Newton.
Fonte: Autor.
Para que o movimento seja realizado em trajetórias lineares, há a necessidade de contro- lar a velocidade angular sendo proporcional ao ângulo percorrido, com isso, o maior ângulo a ser percorrido possui 100% da velocidade desejada, e os outros dois ângulos possuem velocida- des menores de acordo com a proporção a ser percorrida, para que todos terminem a trajetória ao mesmo tempo, assim executarão trajetórias lineares.
Implementando essa cinemática no código do robô, foi possível programar os pontos com mais facilidade, porém, ainda assim o caminhar do robô se manteve lento. O robô B1 apresentou uma velocidade de 2cm/s. Na tabela 3, mostrada no capítulo 3, subseção 3.2.2, pode-se ver a velocidade do robô Newton que era 70 cm/min sem a cinemática inversa, e na Figura 33 pode-se ver o movimento do caminhar.
O andar descrito nessa subseção 4.1.1.1 foi utilizado na RoboCup e no LARC de 2014, mesmo não sendo um andar eficiente, a equipe RoboFEI obteve bons resultados nessas compe- tições, conforme descrito no capítulo 1, seção 1.3.
4.1.1.2 Experimentos com o robô utilizando o gerador de andar desenvolvido para o robô DARwIn-OP
Nesse experimento, utilizou-se o código fonte de geração de marcha do robô Jimmy (INTEL, 2015c) desenvolvido pela Intel. Esse código é baseado na geração de marcha do robô DARwIn-OP. Utilizou-se o código fonte do robô Jimmy, porque ele apresentou uma funciona- lidade melhor que o código do Darwin, porém no código do Jimmy a maioria das bibliotecas e arquivos fontes são os mesmos do robô DARwIn-OP, há apenas pequenas alterações no código fonte.
Nesse experimento, o andar foi implementado em malha aberta no robô B1, isso porque inicialmente não foi fechada a malha de controle utilizando o giroscópio como realimentação.
No entanto, os primeiros resultados obtidos foram bastante satisfatórios se comparando com os experimentos anteriores.
Depois de implementado esse código no robô, primeiramente houve a necessidade de ajustar os parâmetros do arquivo config.ini, que foi descrito no capítulo 3, na subseção 3.1.
Com isso, o caminhar do robô demonstrou-se mais estável, como pode-se ver na Figura 34, e a velocidade aumentou significavelmente de 2cm/s para 10cm/s, como pode ser visto na tabela 4, mostrada no capítulo 3, subseção 3.2.2.
Figura 34 – Movimento do andar do robô B1.
Fonte: Autor.
O DARwIn-OP utiliza dados do sensor giroscópio para se recuperar de possíveis osci- lações fora do padrão da marcha. No apéndice A, na seção 5.2, pode-se ver os testes realizados no robô, através de gráficos que demonstram o comportamento temporal dos servos reagindo a perturbações externas.
Na Figura 31, disposta na subseção 3.2.2, foi apresentado o modelo de malha fechada aplicada no andar do robô (essa malha de controle não entra em funcionamento quando o robô está parado), desenvolvida para estabilizar o andar do robô. Os parâmetros do andar são ini- cializados somente quando se executa o processo de controle, através da leitura do arquivo config.ini, mantendo os mesmos parâmetros enquanto o processo estiver em execução.