• Nenhum resultado encontrado

DESCRIÇÃO DO MODELO DE APRENDIZADO

No documento ORIGINAL ASSINADA (páginas 54-63)

Algoritmo 7 Algoritmo TD(λ) implementado

3.1 DESCRIÇÃO DO MODELO DE APRENDIZADO

3 APRENDIZADO POR REFORÇO PARA OTIMIZAÇÃO DOS VALORES DOS PA- RÂMETROS DO ANDAR DE UM ROBÔ HUMANOIDE

Este capítulo está dividido em três seções: descrição do modelo de aprendizado; des- crição do robô; e descrição do simulador. Na primeira seção é descrita a proposta deste tra- balho; como é composto o MDP do problema e como é aplicado o aprendizado por reforço no simulador. Na segunda seção, há uma breve descrição do hardware e do software do robô real, enfatizando as principais diferenças dos robôs humanoides do Centro Universitário da FEI quando comparado com o robô DARwIn-OP. A terceira seção fala sobre alguns simuladores de robótica, e descreve o simulador Webots que é utilizado neste trabalho como plataforma de simulação.

Para a escolha do método de aprendizado por reforço, foi levado em consideração uti- lizar um método que realizasse o aprendizado com um menor número de interações, portanto, alguns algoritmos que poderiam ser utilizadas são o Q(λ), o SARSA(λ) e o TD(λ). Porém, o Q(λ) e o SARSA(λ) aprendem a melhor política através da funçãoQ(s, a), do par estado-ação, em contraste com o algoritmo TD(λ), que considera apenas a função valorV(s)de cada estado.

No entanto, para otimizar os parâmetros do andar, há a necessidade apenas de aprender quais são os melhores valores dos parâmetros, sendo que o estado é composto de um conjunto de parâmetros, portanto, para esse modelo de aprendizado, o importante é aprender os melhores estados (os valores ótimos do conjunto de parâmetros que são estados que possuem os mai- ores valores), sendo que nesse caso a ação tomada não tem importância alguma. Com isso, conclui-se que o método TD(λ) é mais adequado que o Q(λ) e o SARSA(λ) para esse modelo de aprendizado. Isso não quer dizer que seja descartável a utilização do Q(λ) e do SARSA(λ), porém não é a mais apropriada para tal modelo.

Sabe-se que as atuais técnicas de aprendizado por reforço necessitam de muitas intera- ções para que se chegue a uma boa política ou em uma política ótima, como visto no capítulo 2, na seção 2.3. Por isso, uma boa forma de aplicar as técnicas de aprendizado por reforço em robótica é implementá-las em um simulador, como pode-se ver no trabalho do Martins (2007), que implementou o algoritmo de aprendizado tanto no simulador como no robô real. Perico (2012) e Celiberto (2007) também implementaram algoritmos de aprendizado por reforço em robôs móveis utilizando apenas o simulador.

Com o simulador é possível testar e validar modelos de MDP em RL antes de se im- plementar em um robô real, ou até mesmo realizar o aprendizado no simulador e transferir a política aprendida para o robô real. Por outro lado, por melhor que seja o simulador, atualmente a transferência do comportamento aprendido no simulador é difícil de se transferir ao robô real, como explica Farchy et al. (2013).

Neste trabalho com o simulador é possível acelerar a simulação, dependendo da configu- ração do computador utilizado foi possível acelerar a execução em algumas dezenas de vezes se comparado com o tempo em um ambiente real. No simulador, os experimentos foram realizados no robô DARwIn-OP, visto que o Webots (Webots é o simulador utilizado neste trabalho e será descrito na seção 3.3) já possui o modelo desse robô. O modelo do andar do robô DARwIn-OP no simulador possui os mesmos parâmetros do robô real. Esses parâmetros são os que configu- ram os osciladores do gerador de caminhada, que definem as amplitudes e período das senoides dos osciladores (esses osciladores foram descritos na seção 2.2.3).

O simulador Webots, usado neste trabalho, possui um controlador chamado Supervisor, com o qual é possível monitorar dados do ambiente como a posição global do robô ou dos ob- jetos no ambiente, no entanto, o Supervisor foi utilizado apenas para monitorar a velocidade do robô durante a caminhada. A velocidade foi utilizada no aprendizado como uma forma de mensurar a influência gerada pela configuração dos parâmetros, e as quedas do robô definirão a instabilidade do andar. Para realizar a medição da velocidade do andar do robô, deve-se capturar a posição global do robô, extraindo a posiçãoXeY. Como o controlador Supervisor é um pro- cesso separado do controlador de movimento (o controlador de movimento é o controlador que faz o robô andar), utilizou-se o recurso de memória compartilhada para realizar a transferência de informação entre os processos.

Para obter a medição da distância percorrida, realiza-se a leitura da posição globalXi eYi inicial do robô, executam-se alguns passos (foram verificados quantos passos são necessá- rios, para que não hajam variações desproporcionais nas velocidades medidas, entre distâncias igualmente percorridas) e verifica-se novamente a posição global Xf e Yf final, em seguida calcula-se a distância percorrida, conforme equação 17.

distância_percorrida=q(XfXi)2+ (YfYi)2 [m] (17) Para calcular a velocidade, basta dividir a distância percorrida pelo tempo de execu- ção dos passos. O tempo de execução dos passos é calculado multiplicando-se a variável period_time (period_time é a variável que determina o tempo do passo, o passo é o movi- mento de levantar e abaixar o pé esquerdo e o direito durante o andar, conforme descrito na seção 3.1.1) pelos números de passos percorridosnúmero_de_passos, portanto a velocidade do robô pode ser determinada conforme equação 18.

velocidade = distância_percorrida∗100

(número_de_passosperiod_time)/1000 [cm/s] (18) Para construir o ambiente do aprendizado por reforço, cada parâmetro pdeve ser dis- cretizado dentro de um intervalo depinicial até pf inal (esse intervalo é determinado de acordo com a característica de cada parâmetro). O número de divisões para discretizar os parâmetros também deve ser determinado de acordo com a característica de cada parâmetro. Portanto, um estudo deve ser realizado para determinar o mínimo e o máximo de cada parâmetro, e também o tamanho do passo da discretização de cada parâmetro, no intuito de diminuir o espaço de estado de forma que não prejudique o resultado esperado.

Para compor o MDP as ações são de incremento, decremento e permanecer no mesmo estado, já os estados são um conjunto de parâmetrospn, porém, não será possível utilizar muitos parâmetros, porque a medida que aumenta o número de parâmetros, aumenta-se também a quantidade de açõesa(s), e o número de estadoss. Por exemplo, se for criado um estado de um conjunto contendo 3 parâmetross(p1, p2, p3) ∈ S, haverá portanto 3 ações de incremento, 3 ações de decremento, e uma ação para permanecer no mesmo estado, totalizando 7 ações a(s)∈conjunto de ações, conforme demostrado na Figura 21, onde as açõesa1,a2 ea3são de incremento; as açõesa4,a5ea6 são de decremento; e a açãoa7é permanecer no mesmo estado.

Figura 21 – Exemplo de estado composto por 3 parâmetros.

Fonte: Autor.

A recompensa R é composta por reforços negativo e positivo. O reforço negativo é dado quando o robô cai no chão durante o andar, já o reforço positivo é determinado por uma função que tem como entrada o próprio valor da velocidade do andar (Recompensa_positiva= f(velocidade)). Para saber se o robô está em pé ou caído, verifica-se a posiçãoZglobal do robô pelo controlador Supervisor. Caso ele tenha caído, o controlador Supervisor coloca o robô na posição em pé.

Portanto, o MDP será composto da seguinte forma:

a) S: os estadossserão um conjunto de parâmetrospn, portanto,s(p1, p2, ..., pn)∈S;

b) A: as açõesa(s)serão de incremento, decremento ou permanecer no mesmo estado;

c) T(s, a, s0): no modelo de transição será permitido incrementar ou decrementar ape- nas um parâmetropi(1 ≤in) des(p1, p2, ..., pn) ∈S, ou permanecer com os mesmos valores dos parâmetrospn;

d) R: reforço negativo para quando o robô cair no chão e o reforço positivo é uma fun- ção que tem como entrada o próprio valor da velocidade do andar (Recompensa_positiva= f(velocidade)).

Para otimizar os valores dos parâmetros do andar utilizando o método TD(λ), foi pro- posto o algoritmo 7. O episódio é finalizado quando o robô andar um determinado número de passos (cada passo do algoritmo equivale aW passos do robô andando, ondeW é o passo do robô andando) sem cair ou caso ele caia uma certa quantidade de vezes. Antes de iniciar um episódio, inicializa-se o estadoS de forma aleatória, para que haja o aprendizado em todo o espaço de estados.

Dentro do episódio, antes de iniciar cada passo, atualizam-se os parâmetrospndo andar referente ao estadoSescolhido, captura-se a posição global inicialXieY ido robô, realiza-se o movimento do andar de acordo com os valores dos parâmetros pn, e captura-se a posição global finalXf eY f do robô, então calcula-se a distância percorrida (distância_percorrida), conforme equação 17, e a velocidade (velocidade), conforme equação 18.

1 Inicialize todos osV(s)com valores aleatórios

2 enquantoo número de episódios desejado não for alcançadofaça

3 Inicialize o estadoSem uma posição aleatório.

4 paratodos os estadossfaça

5 Z(s)←0

6 fim

7 enquantoNúmero desejado de passos sem cair não for alcançado ou o número de quedas máximo não for atingidofaça

8 Atualiza os parâmetrospndo andar referente ao estadoSescolhido.

9 XieY irecebe a posição global do robô.

10 RealizaW passos durante o andar e verifica se houve queda.

11 Xf eY f recebe a posição global do robô.

12 Calcula a velocidade percorrida.

13 sehouve quedaentão

14 rrecompensa_negativa

15 fim

16 senão

17 rrecompensa_positiva

18 fim

19 A←dada pela políticaπdo estadoSutilizando a seleção comgreedy

20 Tomando a açãoAobserve o estadoS0

21 δr+γV(S0)−V(S)

22 Z(S)←Z(S) + 1

23 paratodos os estadossfaça

24 V(s)←V(s) +αδZ(s)

25 Z(s)←γλZ(s)

26 fim

27 Atualize o estadoS:

28 SS0

29 fim

30 fim

Algoritmo 7–Algoritmo TD(λ) implementado.

O andar do robô dentro do simulador ocorre de forma paralela ao controlador de movi- mento, portanto, a partir do instante em que se inicia o andar do robô, umathreadrealiza todo o algoritmo do andar, enquanto o controlador de movimento fica disponível para executar as tarefas do aprendizado por reforço.

recompensa_positiva= 10velocidade10 (19) Como pode-se ver na Figura 22 o gráfico da recompensa positiva em função da veloci- dade utilizando a equação 19. Pelo gráfico, nota-se que com a velocidade de 0 até 15 a diferença entre a recompensa é de 31.15; já com a velocidade em 20 a recompensa é de 100; e com a ve- locidade em 25 a recompensa é de 316.23. Portanto, utilizando como recompensa uma função exponencial, a recompensa passa a possuir um valor cada vez mais expressivo, isso porque no modelo de robô que está sendo estudado neste trabalho, velocidades baixas não são desejáveis.

Figura 22 – Gráfico da recompensa positiva em função da velocidade.

Fonte: Autor.

Se a recompensa positiva em função da velocidade obedecer a uma equação linear, não haverá muita diferença entre duas velocidades que são diferentes porém próximas, por exemplo, um robô que apresente uma velocidade de 24cm/s com certos parâmetros, e o algoritmo testa no- vos parâmetros e encontra uma velocidade de 24.5cm/s, a recompensa entre eles torna-se muito próxima caso seja utilizada a própria velocidade como recompensa. Já utilizando a equação 19, a recompensa positiva para 24cm/s será de 251.19 e a de 24.5cm/s será de 281.84, portanto, essa diferença torna-se cada vez mais expressiva se a velocidade encontrada for aumentando, mesmo que este aumento seja pouco.

3.1.1 Descrição dos parâmetros do andar

O robô DARwIn-OP utiliza um gerador de caminhada através de três osciladores acopla- dos, esses osciladores realizam movimentos de trajetória senoidal sincronizados no tempo, de forma que o movimento do andar do robô seja um andar com estabilidade dinâmica, conforme descrito na subseção 2.2.3. Os osciladores podem ser configurados através de parâmetros, no DARwIn-OP os valores desses parâmetros podem ser alterados pelo arquivoconfig.ini, demons- trado na Figura 23

A Figura 23 mostra duas configurações: OffseteWalking Config. OOffseté para con- figurar a posição dos motores de forma que o robô fique de pé. A posição padrão do controle é 512, quando se insere um valor no Offset este valor é somado com 512 (512 é a posição cen- tral do servo motor RX-28, com limite máximo de 1023 e mínimo 0), a posição de cada servo motor no robô pode ser vista na Figura 58, apresentada no apêndice B. Já o Walking Config corresponde aos parâmetros do andar do robô.

Figura 23 – Arquivoconfig.inido robô DARwIn-OP.

Fonte: Autor.

No simulador Webots o arquivo config.ini do robô DARwIn-OP não possui os parâ- metrosbalance_angle_smooth_gain, balance_angle_gain, lean_fb_gain, lean_fb_accel_gain, lean_turn_gain,start_step_factor.

A descrição dos parâmetros doWalking Configsão:

X_offseté o deslocamento dos pés na direção x em milímetros.

Y_offseté o deslocamento dos pés na direção y em milímetros.

Z_offsetfaz com que o robô agache na direção do eixo z em milímetros.

roll_offseté o deslocamento no ângulo dos pés em torno do eixo x em graus, inclinando os pés para a direita ou para a esquerda em conjunto.

pitch_offset é o deslocamento no ângulo dos pés em torno do eixo y em graus, inclinando os pés para frente ou para trás em conjunto (essa rotação ocorre nos servos do tornozelo).

yaw_offseté o deslocamento no ângulo da perna em torno do eixo z em graus.

hip_pitch_offseté a inclinação do corpo na altura do tronco. Usa-se uma unidade especial refe- rente ao motor que vale 2.85 graus.

period_timeé o tempo necessário para completar um passo, onde levanta e abaixa o pé esquerdo e o direito. A unidade está em milissegundo.

dsp_ratioé a razão entre o tempo em que ambos os pés estão no chão para quando apenas um pé (esquerdo ou direito) está no chão.

step_forward_back_ratioé a distância na direção X da diferença entre o pé esquerdo e o direito durante a caminhada. A unidade está em milímetro.

foot_heighté a altura máxima que o pé levanta durante a caminhada. Unidade em milímetros.

swing_right_lefté o balanço da cintura que o robô realiza durante a caminhada na direção do eixo y, balançando entre a direita e a esquerda. Unidade em milímetros.

swing_top_downé o balanço da cintura que o robô realiza durante a caminhada na direção do eixo z, subindo e descendo o corpo. Unidade em milímetros.

pelvis_offset é o ângulo de deslocamento da pélvis ao longo do eixo X. Usa-se uma unidade especial referente ao motor que vale 2.85 graus.

arm_swing_gainé o ganho na oscilação do braço em relação ao comprimento do passo para frente ou para trás, durante o andar.

balance_knee_gainé o ganho correspondente ao valor de correção que ocorre no joelho, usado durante a realimentação do giroscópio.

balance_ankle_pitch_gainé o ganho correspondente ao valor de correção que ocorre no torno- zelo nopitch, usado durante a realimentação do giroscópio.

balance_hip_roll_gainé o ganho correspondente ao valor de correção que ocorre no quadril no

roll, usado durante a realimentação do giroscópio.

balance_ankle_roll_gainé o ganho correspondente ao valor de correção que ocorre no torno- zelo no roll, usado durante a realimentação do giroscópio.

p_gainGanho correspondente ao P (Proporcional) do controle de PID.

i_gainGanho correspondente ao I (Integral) do controle de PID.

d_gainGanho correspondente ao D (Derivativo) do controle de PID.

O controle de PID é utilizado somente no servo MX28, o RX28 não possui variáveis de controle de PID.

3.1.2 Definição dos parâmetros utilizados no aprendizado

Os parâmetros de configuração do andar podem ser divididos em três grupos, conforme apresentado na Tabela 2.

Tabela 2 – Tipos de parâmetros

Parâmetros de ajuste (offset) Parâmetros dos osciladores Parâmetros da realimentação

X_offset period_time balance_knee_gain

Y_offset dsp_ratio balance_ankle_pitch_gain

Z_offset step_forward_back_ratio balance_hip_roll_gain

roll_offset foot_height balance_ankle_roll_gain

pitch_offset swing_right_left

yaw_offset swing_top_down

hip_pitch_offset arm_swing_gain pelvis_offset

Fonte: Autor.

Os parâmetros que possuem no final a palavra offset (X_offset,Y_offset,Z_offset,roll_offset, pitch_offset,yaw_offset,hip_pitch_offset, pelvis_offset) são parâmetros que não necessitam de teste dinâmico (teste com o robô andando) para sua configuração no robô, podem ser configu- rados de forma estática com o robô de pé, portanto, não serão utilizados nos experimentos.

Os parâmetrosbalance_knee_gain, balance_ankle_pitch_gain, balance_hip_roll_gain, balance_ankle_roll_gainsão parâmetros relacionados ao ganho na realimentação do giroscó- pio, portanto, não serão utilizados nos experimentos.

Neste caso, os parâmetros que restaram para serem otimizados pelo aprendizado por reforço são: period_time, dsp_ratio, step_forward_back_ratio, foot_height, swing_right_left, swing_top_downearm_swing_gain.

Outros parâmetros que poderão ser utilizados no simulador Webots, mas não fazem parte do arquivoconfig.ini, são alguns métodos da classeDARwInOPGaitManager(no Webots o código fonte do DARwIn-OP está implementado em linguagem de programação C++), esses métodos são:

a) setXAmplitudeé o comprimento do passo para frente, sendo a distância máxima entre as duas pernas no instante em que uma perna fica à frente da outra durante o andar (usado para andar de frente ou de costas), este valor pode variar de -1 até 1, onde de 0 a -1 é andar de costas e de 0 a 1 é andar de frente.

b) setYAmplitude é o comprimento lateral do passo (usado para andar de lado), este valor pode variar de -1 até 1, onde de 0 a 1 é andar para lateral esquerda e de 0 a -1 é andar para lateral direita.

c) setAAmplitude é o angulo do rotação do andar, este valor pode variar de -1 até 1, onde de 0 a 1 é rotacionar à esquerda e de 0 a -1 é rotacionar à direita.

Todos esses três métodos (setXAmplitude, setYAmplitude e setAAmplitude) recebem como entrada um valor do tipodouble e não retornam valor. A utilização desses 3 métodos é que fazem o robô DARwIn-OP realizar um andar omnidirecional.

No documento ORIGINAL ASSINADA (páginas 54-63)

Documentos relacionados