implementação de controlador ilqr em braço robótico com ...€¦ · convergência. 2019....

58
UNIVERSIDADE DE SÃO PAULO USP ESCOLA DE ENGENHARIA DE SÃO CARLOS EESC DEPARTAMENTO DE ENGENHARIA MECÂNICA SEM Choi Wang Dzak Implementação de controlador iLQR em braço robótico com quatro graus de liberdade: Estudo da função custo, linearização de trajetória e convergência São Carlos 2019

Upload: others

Post on 25-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

UNIVERSIDADE DE SÃO PAULO – USP

ESCOLA DE ENGENHARIA DE SÃO CARLOS – EESC

DEPARTAMENTO DE ENGENHARIA MECÂNICA – SEM

CAPA

Choi Wang Dzak

Implementação de controlador iLQR em braço robótico

com quatro graus de liberdade: Estudo da função custo,

linearização de trajetória e convergência

São Carlos

2019

Page 2: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

1

Page 3: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

2

Choi Wang Dzak

Implementação de controlador iLQR em braço robótico com quatro graus de

liberdade: Estudo da função custo, linearização de trajetória e convergência

Monografia apresentada ao Curso de

Engenharia Mecânica, da Escola de

Engenharia de São Carlos da Universidade

de São Paulo, como parte dos requisitos

para obtenção do título de Engenheiro

Mecânico.

Orientador: Prof. Dr. Glauco Augusto de

Paula Caurin

São Carlos

2019

Page 4: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

3

Page 5: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

4

FICHA C ATALOGR ÁFIC A

Page 6: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

5

Page 7: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

6

FOLH A D E AVALIAÇ ÃO OU APROVAÇ ÃO

Page 8: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

7

Page 9: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

8

DEDICATÓRIA

Dedico este trabalho à minha querida família,

cujo apoio foi indispensável para que eu

chegasse até aqui.

Page 10: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

9

Page 11: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

10

AGRADECIMENTOS

Agradeço à minha família pelo apoio e suporte durante toda a graduação.

Agradeço aos meus amigos Sarah, Elisa e João Gabriel pela paciência, apoio,

noites estudando, exercícios trocados e milk-shakes tomados, que levarei para o resto

da vida.

Agradeço ao Prof. Dr. Glauco Caurin pela oportunidade e pelo apoio, e ao

doutorando Henrique Garcia pelos conselhos e pela orientação que foram

fundamentais para o ajuste do algoritmo do Trabalho de Conclusão de Curso.

Page 12: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

11

Page 13: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

12

EPÍGRAFE

𝑆 = 𝑘 ∙ ln(𝑊)

Ludwig Eduard Boltzmann

Page 14: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

13

Page 15: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

14

RESUMO

Dzak. C. W. Implementação de controlador iLQR em braço robótico com quatro graus de liberdade: Estudo da função custo, linearização de trajetória e convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos, Universidade de São Paulo, São Carlos, 2019.

O regulador quadrático linear iterativo (iLQR) é implementado em um braço

robótico para se investigar as vantagens e desvantagens do seu uso em uma

aplicação genérica. Afinal, braços robóticos são amplamente utilizado e a sua

dinâmica, apesar da complexidade matemática, é simples se comparado com outros

modelos da literatura, como robôs humanoides. É também um tipo de robô

frequentemente utilizado devido a sua versatilidade e, consequentemente, bastante

estudado sob a ótica da cinemática inversa. O presente trabalho investiga, então, uma

diferente perspectiva, preterindo modelos mecânicos e associando ao modelo uma

função custo. Assim, um modelo é desenvolvido no Framework de Modelagem e

Simulação de Sistemas Dinâmicos MuJoCo e, ao mesmo tempo, o algoritmo iLQR e

as ferramentas matemáticas necessárias também são implementados. Em seguida,

estuda-se o algoritmo em si, analisando o significado físico da função custo e as

condições de convergência do método. Assim, foi possível verificar a dependência da

distância do objetivo, avaliar uma possível paralelização e a possibilidade da

implementação do algoritmo iLQR em situações reais, levando em conta desempenho

e o cumprimento do objetivo.

Palavras chave: iLQR, controle ótimo, braço robótico

Page 16: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

15

Page 17: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

16

ABSTRACT

Dzak. C. W. Implementação de controlador iLQR em braço robótico com quatro

graus de liberdade: Estudo da função custo, linearização de trajetória e

convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de

Engenharia de São Carlos, Universidade de São Paulo, São Carlos, 2019.

We implemented the iterative Linear Quadratic Regulator (iLQR) for a robotic

arm to study its advantages and disadvantages in a generic application. Robotic arms

are widely used and its dynamics, despite its mathematical complexity, they are simpler

than other models found in the literature, such as humanoid robots. It is also a kind of

robot frequently employed due to its versatility and, consequently, often studied under

inverse kinematics perspective. Therefore, the present study investigates a different

viewpoint, avoiding mechanical modeling and associating the model to a cost function.

Hence, to that end, we developed a model in the Modeling and Dynamical Systems

Simulation Framework MuJoCo and, at the same time, the iLQR algorithm and the

required mathematical methods are also implemented. Afterwards, we study the

algorithm itself, interpreting the physical meaning of the cost function and its

convergence conditions. Thus, we could verify the dependency of the distance to the

objective; evaluate a potential parallelization and the possibility of a real situation

implementation of the iLQR algorithm, considering performance and goal achievement.

Keywords: iLQR, optimal control, robotic arm.

Page 18: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

17

LISTA DE ILUSTRAÇÕES

Figura 1 - Esquematização do modelo fork-join utilizado pelo OpenMP ................... 29

Figura 2 - Fluxograma do algoritmo iLQR ................................................................. 40

Figura 3 - Braço robótico numa posição arbitrária, indicando os graus de liberdade,

isto é, um grau de liberade em vertical e 3 horizontais. ............................................ 42

Figura 4 - Posição inicial do braço robótico. Ele é inicialmente declarado na posição

vertical e em seguida perturbado para sair da posição de singularidade. ................. 50

Figura 5 - Braço robótico perturbado, cujo estado é o estado inicial do algoritmo para

qualquer posição desejada da ponta do braço. ......................................................... 50

Figura 6 – Situação A, posição x = 2,5; y = 2,5; z = 2,5 ............................................ 51

Figura 7 – Situação B, posição x = 0, y = 3, z = 4 ..................................................... 51

Figura 8 – Situação C, posição x = 1; y = -3; z = 4 .................................................... 51

Figura 9 – Situação D, posição x = -2, y = -3, z = 4 .................................................. 51

Figura 10 - Evolução da simulação da situação A ..................................................... 52

Figura 11 - Evolução da simulação da situação B ..................................................... 52

Figura 12 - Evolução da simulação da situação C .................................................... 52

Figura 13 - Evolução da simulação da situação D .................................................... 52

Figura 14 - Custos [sem unidade] das trajetórias ao longo do tempo [s]. .................. 53

Page 19: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

18

Page 20: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

19

LISTA DE TABELAS

Tabela 1 - Derivadas matriciais e suas notações ...................................................... 32

Tabela 2 - Definições de derivadas matriciais ........................................................... 32

Tabela 3 - Braço robótico atingindo algumas posições arbitrariamente escolhidas,

aumentando a distância e mudando o quadrante. Toma-se a origem como o centro

da base do robô; z o eixo vertical da renderização; x a vertical da página; y a

horizontal da página. ................................................................................................. 51

Tabela 4 - Evolução do alcance do objetivo ao longo do tempo em segundos. ........ 52

Tabela 5 - Comparação do desempenho para números de threads diferentes ........ 54

Page 21: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

20

Page 22: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

21

LISTA DE SIGLAS E ABREVIATURAS

BLAS Basic Linear Algebra Subprograms

DDP Differential Dynamic Programming

IDE Integrated Development Environment

iLQG Iterative Linear Quadratic Gaussian

iLQR Iterative Linear Quadratic Regulator

LAPACK Linear Algebra Package

LQG Linear Quadratic Gaussian

LQR Linear Quadratic Regulator

MATLAB Matrix Laboratory

MKL Math Kernel Library

MuJoCo Multi-Joint dynamics with Contact

OpenMP Open Multi-Processing

Page 23: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

22

Page 24: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

23

Sumário

CAPA ........................................................................................................................................................ 0

FICHA CATALOGRÁFICA ........................................................................................................................... 4

FOLHA DE AVALIAÇÃO OU APROVAÇÃO ................................................................................................. 6

DEDICATÓRIA .......................................................................................................................................... 8

AGRADECIMENTOS................................................................................................................................ 10

EPÍGRAFE ............................................................................................................................................... 12

RESUMO ................................................................................................................................................ 14

ABSTRACT .............................................................................................................................................. 16

LISTA DE ILUSTRAÇÕES .......................................................................................................................... 17

LISTA DE TABELAS .................................................................................................................................. 19

LISTA DE SIGLAS E ABREVIATURAS ........................................................................................................ 21

Sumário ................................................................................................................................................. 23

1. Introdução ..................................................................................................................................... 25

1.1. Motivação .............................................................................................................................. 25

2. Objetivos ....................................................................................................................................... 26

3. Revisão bibliográfica ..................................................................................................................... 27

3.1. Ferramentas computacionais utilizadas ................................................................................ 27

3.1.1. MATLAB ......................................................................................................................... 27

3.1.2. Microsoft Visual Studio ................................................................................................. 28

3.1.3. OpenMP......................................................................................................................... 28

3.1.4. Math Kernel Library (MKL) ............................................................................................ 29

3.1.5. MuJoCo .......................................................................................................................... 30

3.2. Fundamentos matemáticos .................................................................................................. 31

3.2.1. Cálculo diferencial de matrizes ..................................................................................... 31

3.2.2. Diferenciação por diferenças finitas ............................................................................. 32

3.2.3. Heurística de Levenberg–Marquardt ............................................................................ 33

3.2.4. Inversão de uma matriz simétrica por decomposição em autovalores e autovetores. 34

3.3. Fundamentos de sistemas de controle ................................................................................. 35

3.3.1. Sistemas não lineares .................................................................................................... 35

3.3.2. Linearização de uma trajetória...................................................................................... 35

3.4. O algoritmo iLQR ................................................................................................................... 37

4. Metodologia .................................................................................................................................. 41

4.1. Programação ......................................................................................................................... 42

4.1.1. MATLAB ......................................................................................................................... 42

Page 25: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

24

4.1.2. Microsoft Visual Studio ................................................................................................. 43

4.2. Parâmetros e características da simulação ........................................................................... 44

4.3. Testes .................................................................................................................................... 48

5. Resultados ..................................................................................................................................... 48

6. Discussão ....................................................................................................................................... 55

7. Conclusão ...................................................................................................................................... 56

8. Referências .................................................................................................................................... 57

Page 26: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

25

1. Introdução

1.1. Motivação

Entende-se por controle ótimo a área da Teoria do Controle que visa

otimização de uma função custo (ou função objetivo) de um sistema dinâmico durante

um dado período de tempo. Nesse contexto, encontra-se inicialmente o problema de

controle LQG (Linear-Quadratic-Gaussian), que se refere a sistemas dinâmicos

lineares influenciados por ruído branco aditivo e gaussiano. O problema LQG, por sua

vez, pode ser divido em duas partes: o filtro de Kalman (ou LQE, isto é, linear-quadratic

state estimator) e o problema de controle LQR (Linear-Quadratic Regulator). O

primeiro visa estimar, através de ferramentas estatísticas, o estado real do sistema

dinâmico por um observador afetado por ruído branco aditivo gaussiano, enquanto

que o segundo trata da operação e controle de um sistema dinâmico linear associado

a uma função quadrática de custo. Em outras palavras, a solução do problema LQR é

a ação de controle que minimiza a função custo associada a um sistema dinâmico.

Por outro lado, a maioria dos problemas reais não pode ser descrita por

simples sistemas lineares, o que limita a aplicação de controles como os descritos

acima. Dito isso, paralelamente ao iLQG (iterative Linear Quadratic Gaussian), o iLQR

(iterative Linear-Quadratic Regulator) pode ser considerado uma expansão do

problema LQR, isto é, ele visa a operação e controle de sistemas dinâmicos não

lineares associados a uma função quadrática de custo. O iLQR expande, então, as

aplicações de controladores LQR para dinâmicas muito mais ricas e complexas, como,

por exemplo, um braço com dois graus de liberdade no plano, porém atuado por

músculos, cuja dinâmica é altamente não linear (LI; TODOROV, 2011).

Dessa forma, procura-se investigar as capacidades e limitações do algoritmo

iLQR, em especial, em um cenário que pode ser aplicado numa situação real. Assim,

dentre as aplicações da robótica na indústria, foi tomado, então, um braço robótico

como exemplo, com o objetivo de estabelecer metas para o algoritmo e verificar os

resultados. Isto é, pode-se criar exigências reais para determinar a eficácia do método.

Além disso, braços robóticos são amplamente utilizados, o que significa que é possível

atingir uma grande fatia da robótica na indústria.

Page 27: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

26

2. Objetivos

Sabendo do potencial da ferramenta em questão, procura-se investigar o

custo computacional do uso desse método, as dificuldades na sua implementação,

suas vantagens e desvantagens em relação a outros métodos, especificamente no

controle de cadeias cinemáticas e a eficácia do método em atingir um determinado

objetivo.

Para isso, será necessário:

Avaliar parâmetros da linearização da trajetória;

Características do simulador (ou motor de física) utilizado, ou seja, o

ambiente de modelagem;

Analisar as diferenças entre o objetivo desejado e o objetivo alcançado

pelo método.

Page 28: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

27

3. Revisão bibliográfica

Neste capítulo, serão expostos as principais ferramentas computacionais

utilizadas e fundamentos teóricos, considerando o que é abordado durante o curso de

graduação. Devido a isso, serão abordados temas com os quais o leitor pode já estar

familiarizado.

3.1. Ferramentas computacionais utilizadas

Nessa seção serão expostos os softwares utilizados, dando ênfase àqueles

relacionados diretamente aos cálculos matemáticos.

3.1.1. MATLAB

Matlab é um software de computação numérica desenvolvido pela

MathWorks, para cálculos envolvendo matrizes. É um software de alta performance,

cujos principais atrativos são:

Operações matriciais implementadas de forma simples, intuitiva e em

linguagem de alto nível;

Funções simples e poderosas para plotagem de gráficos;

Por ser um dos principais softwares de computação numérica no

mercado, conta com conectividade simplificado para o usuário com

diversas ferramentas.

O MATLAB oferece um ambiente extremamente propício para projetos de

engenharia devido à facilidade de utilização e à variedade de ferramentas

matemáticas disponíveis. Entretanto, isso tem um custo que se reflete na

performance. O MATLAB utiliza uma linguagem interpretada, isto é, dispensa a

necessidade de compilação (conversão do código inteiro para código de máquina),

porém um interpretador é usado para converter cada linha de código num outro

código, geralmente código de máquina. Isso torna a execução de um código em

MATLAB mais lenta em relação a linguagens compiladas como o C e o C++. Ainda

assim, juntamente com suas ferramentas matemáticas, o MATLAB é um software

muito maleável nas mãos do usuário, de forma que é possível obter um algoritmo

funcionando de forma rápida e precisa para provar um determinado conceito.

Page 29: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

28

O MATLAB foi utilizado juntamente com o MuJoCo HAPTIX (ver seção 3.1.5.

MuJoCo), como um primeiro passo na modelagem, para verificar o funcionamento do

algoritmo iLQR.

3.1.2. Microsoft Visual Studio

O Microsoft Visual Studio é uma IDE (Integrated Development Environment),

isto é, um ambiente de desenvolvimento integrado que suporta uma variada gama de

linguagens de programação, dentre elas, C++, que foi a linguagem utilizada. Possui

ferramentas de suporte para o usuário, como o IntelliSense, que traz sugestões de

auto completar durante a programação e ferramentas de debug, capazes de acessar

dados de ponteiros.

O Microsoft Visual Studio foi utilizado como IDE principal, onde foram

utilizadas as bibliotecas expostas nas seções seguintes.

3.1.3. OpenMP

OpenMP (Open Multi-Processing) é um conjunto aberto de sub-rotinas

destinadas à paralelização do código de um programa, nas linguagens C, C++ e

Fortran. Além disso, está implementado para várias arquiteturas e sistemas

operacionais, incluindo Linux, Windows e macOS.

OpenMP utiliza o modelo fork-join, em que uma thread, chamada thread

mestre, executa as tarefas de forma serial, até encontrar uma diretiva de paralelização

(fork). Nesse momento, as tarefas são distribuídas entre os membros de um time

threads, executadas paralelamente, até encontrarem uma diretiva de barreira. Nesse

ponto, as threads são sincronizadas, se juntam à thread mestre e o time de threads é

disperso.

Page 30: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

29

Figura 1 - Esquematização do modelo fork-join utilizado pelo OpenMP

Esse modelo é interessante pois os times de threads podem ser definidos

durante a execução e, como mostrado no imagem, uma thread escravo também pode

criar threads escravos, tornando-se mestre desse time de threads.

Em especial, é importante salientar que o algoritmo iLQR é altamente serial,

isto é, a execução de uma etapa qualquer depende do resultado da etapa anterior.

Isso, a priori, desencorajaria a paralelização do algoritmo. Entretanto, uma das etapas,

o cálculo de diferenças finitas, é paralelizável e realizado diversas vezes no algoritmo.

Por ser uma das tarefas mais dispendiosas, torna-se, então, vantajoso o uso de multi-

processamento.

3.1.4. Math Kernel Library (MKL)

MKL é uma biblioteca de operações matemáticas otimizadas, que inclui sub-

rotinas destinadas a resolução de problemas computacionais de grande porte. Entre

suas sub-rotinas, estão, por exemplo, BLAS (Basic Linear Algebra Subprograms),

LAPACK (Linear Algebra Package) para álgebra linear, funções para Redes neurais

profundas, Transformadas de Fourier, geradores de números aleatórios e matemática

vetorizada.

Essas bibliotecas são especialmente necessárias, primeiramente, porque o

trabalho foi desenvolvido em C++, que não possui nativamente rotinas matemáticas

sequer para multiplicação de matrizes. Em segundo lugar, as bibliotecas tipo BLAS e

LAPACK (variam um pouco, pois são desenvolvidas por várias entidades, como o

OpenBLAS e o MKL, mas são intercambiáveis) são otimizadas em nível de código de

máquina para álgebra linear. Isso significa que muito dificilmente seria possível

implementar uma operação, já presente nessas bibliotecas, de forma mais eficiente.

Page 31: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

30

Assim, o MKL foi utilizado para a álgebra linear existente no algoritmo iLQR,

isto é: multiplicações de matrizes, multiplicação de matrizes e vetores e autovalores e

autovetores de matrizes simétricas (usando redução para uma matriz tridiagonal e

algoritmo QR)

3.1.5. MuJoCo

MuJoco (Multi-Joint Dynamics with Contact) é um motor de física, isto é, um

programa que simula aproximadamente sistemas físicos, englobando, em geral,

corpos rígidos, detecção de colisão, corpos macios e mecânica dos fluidos. O MuJoCo

em especial é utilizado para simular com precisão e sistemas dinâmicos complexos

com alto desempenho. É constituído de bibliotecas dinâmicas com interface para C,

de forma a maximizar o desempenho, compatíveis com Windows, Linux e macOS

(TODOROV; EREZ; TASSA, 2012). Dentre os principais atrativos do MuJoCo, para o

presente projeto, destacam-se:

Coordenadas generalizadas (ou espaço de juntas) com dinâmicas de

contato;

O MuJoCo permite gerar modelos dinâmicos espaciais complexos, com

elevado número de graus de liberdade, mantendo a precisão, pois utiliza coordenadas

generalizadas, em contraposição a relações cinemáticas impostas numericamente.

Os principais motores de física do mercado ou utilizam coordenadas generalizadas,

mas modelos de contato demasiadamente simplificados; ou utilizam modelos

modernos de contato, mas coordenadas cartesianas. Nesse aspecto, o MuJoCo é

capaz de utilizar, para a simulação, coordenadas generalizadas e modelos modernos

de contato com múltiplos pontos de contato na presença de atrito.

Modelo compilado;

Para inserir um modelo no MuJoCo, é necessário escrevê-lo em formato .xml

e importa-lo durante a execução. Ao fazer isso, o MuJoCo gera um struct (estrutura

de dados) em C, com as principais informações do modelo. Isso confere à simulação

bastante velocidade, uma vez que as informações estão disponíveis em níveis muito

próximos ao código de máquina, se comparado a uma aplicação em MATLAB, por

exemplo.

Page 32: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

31

Multi-processamento e separação de modelo e dinâmica;

O MuJoCo separa uma simulação em duas partes: mjModel e mjData. O

primeiro contém as principais informações que descrevem um modelo (como número

de graus de liberdade, número de estados, tipos de objetos dentro da simulação...),

enquanto que o segundo contém informações da dinâmica do sistema (como

posições, velocidades, acelerações, tempo da simulação...). Isso pode ser utilizado

para multi-threading, pois um único mjModel pode ter vários mjData, o que protege a

simulação principal contra o acesso por mais de uma thread.

Além disso, como citado anteriormente, há também o MuJoCo HAPTIX, uma

variante do software MuJoCo. Trata-se de uma ferramenta mais simples, mas

bastante conveniente, que se conecta ao MATLAB e ao C de forma simples e preserva

as principais funcionalidades do MuJoCo em C. A utilização do MuJoCo HAPTIX com

o MATLAB permite ao usuário definir estados e sinais de controle para a simulação,

assim como obter essas informações de uma simulação em curso. Não é possível,

entretanto, trabalhar com mais de uma simulação ao mesmo tempo. Assim, apesar

disso, do desempenho limitado também pelo atraso da comunicação e pela velocidade

de processamento reduzida no MATLAB, foi possível usar essa ferramenta para os

testes iniciais do algoritmo iLQR.

3.2. Fundamentos matemáticos

Nessa seção serão comentados rapidamente algumas ferramentas

matemáticas empregadas, cuja importância sobressai para o entendimento do

algoritmo iLQR.

3.2.1. Cálculo diferencial de matrizes

A diferenciação de matrizes, provavelmente intuitiva para o leitor, foi, logo no

início do projeto, um desafio para o autor. Nessa seção, não serão abordadas as

demonstrações, mas apenas as equações e conceitos principais.

Primeiramente, podemos dividir as diferenciações quanto existência de

definição ou não, como na Tabela 1, onde são mostradas também as suas notações:

Page 33: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

32

Tabela 1 - Derivadas matriciais e suas notações

Tipo Escalar Vetor Matriz

Escalar 𝑑𝑦

𝑑𝑥

𝑑𝒚

𝑑𝑥

𝑑𝒀

𝑑𝑥

Vetor 𝑑𝑦

𝑑𝒙

𝑑𝒚

𝑑𝒙 -

Matriz 𝑑𝑦

𝑑𝑿 - -

Assim, temos também:

Tabela 2 - Definições de derivadas matriciais

𝑑𝑦

𝑑𝑥

𝑑𝒚

𝑑𝑥=

[ 𝑑𝑦1𝑑𝑥⋮𝑑𝑦𝑛𝑑𝑥 ]

𝑑𝑦

𝑑𝒙=

[ 𝑑𝑦

𝑑𝑥1⋮𝑑𝑦

𝑑𝑥𝑛]

𝑑𝒚

𝑑𝒙=

[ 𝑑𝑦1𝑑𝑥1

⋯𝑑𝑦𝑚𝑑𝑥1

⋮ ⋱ ⋮𝑑𝑦1𝑑𝑥𝑛

…𝑑𝑦𝑚𝑑𝑥𝑛 ]

𝑑𝑦

𝑑𝑿=

[ 𝑑𝑦

𝑑𝑥1,1⋯

𝑑𝑦

𝑑𝑥1,𝑛⋮ ⋱ ⋮𝑑𝑦

𝑑𝑥𝑚,1…

𝑑𝑦

𝑑𝑥𝑚,𝑛]

𝑑𝒀

𝑑𝑥=

[ 𝑑𝑦1,1𝑑𝑥

⋯𝑑𝑦1,𝑛𝑑𝑥

⋮ ⋱ ⋮𝑑𝑦𝑚,1𝑑𝑥

…𝑑𝑦𝑚,𝑛𝑑𝑥 ]

3.2.2. Diferenciação por diferenças finitas

Diferenças finitas é um método numérico para a obtenção da aproximação

das derivadas de uma função quando esta não pode ser escrita analiticamente.

De modo geral, em relação às derivadas de primeira ordem, para uma função

de apenas uma variável, ou funções multivariáveis, temos as equações:

Page 34: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

33

Que são conhecidas como diferenças finitas centradas.

Para derivadas de segunda ordem funções multivariadas, podemos empregar

a fórmula:

Para casos que tratam de derivadas cruzadas de segunda ordem.

Em especial, para uma derivada dupla, a equação se reduz para:

3.2.3. Heurística de Levenberg–Marquardt

O algoritmo de Levenberg–Marquardt é um método para obtenção de mínimos

locais que pode ser entendido com uma junção de dois métodos: o método dos

gradientes, Equação (5); e o método de Gauss-Newton, Equação (6).

Em que 𝛾 é uma constante positiva, H representa a matriz Hessiana, ∇

representa gradiente e u representa a variável iterada.

O método dos gradientes apresenta convergência de primeira ordem,

enquanto que o método de Gauss-Newton apresenta convergência de segunda

ordem. O algoritmo de Levenberg–Marquardt propõe utilizar uma mistura dos dois

métodos, com base no erro da iteração. Isto é, se o erro for pequeno, tende-se mais

para o método de Gauss-Newton e se o erro for grande, tende-se para o método dos

gradientes. Assim, o algoritmo torna-se, então:

𝑑𝑓

𝑑𝑥=𝑓(𝑥 + ℎ) − 𝑓(𝑥 − ℎ)

2ℎ

(1)

𝜕𝑓(𝑥, 𝑦)

𝜕𝑥=𝑓(𝑥 + ℎ, 𝑦) − 𝑓(𝑥 − ℎ, 𝑦)

2ℎ

(2)

𝜕𝑓(𝑥, 𝑦)

𝜕𝑥𝜕𝑦

=𝑓(𝑥 + ℎ, 𝑦 + 𝑘) − 𝑓(𝑥 − ℎ, 𝑦 + 𝑘) − 𝑓(𝑥 + ℎ, 𝑦 − 𝑘) + 𝑓(𝑥 − ℎ, 𝑦 − 𝑘)

4ℎ𝑘

(3)

𝜕𝑓(𝑥, 𝑦)

𝜕𝑥2=𝑓(𝑥 + ℎ, 𝑦 + 𝑘) − 2𝑓(𝑥, 𝑦) + 𝑓(𝑥 − ℎ, 𝑦 − 𝑘)

ℎ2

(4)

𝑢𝑘+1 = 𝑢𝑘 − 𝛾∇𝑓(𝑢𝑘) (5)

𝑢𝑘+1 = 𝑢𝑘 − [Η𝑓(𝑢𝑘)]−1∇𝑓(𝑢𝑘)

(6)

Page 35: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

34

Em que λ é um parâmetro de regularização e D é uma matriz com apenas os

elementos diagonal da matriz Hessiana. Nesse momento, fazemos também uma

observação quanto a esse tópico: no entendimento do autor, o algoritmo propriamente

dito de Levenberg–Marquardt é utilizado no problema de mínimos quadrados não

lineares; já a heurística se refere ao uso de um parâmetro de regularização que ajusta

a ordem de convergência de um determinado método numérico.

3.2.4. Inversão de uma matriz simétrica por decomposição em

autovalores e autovetores.

Entende-se por autovetores de uma transformação A, as direções que não

são alteradas ao se aplicar essa transformação A. Além disso, ao aplicar essa

transformação, a direção de um autovetor v é multiplicada pelo autovalor λ associado

a esse autovetor.

A decomposição em autovalores e autovetores de uma matriz quadrada A n x

n, com n autovetores linearmente independentes é da forma:

Em que Λ é uma matriz diagonal com os autovalores de A e Q é uma matriz

tal que suas colunas são os autovetores de A.

Assim, a inversa de A é simplesmente:

Como Λ-1 é uma matriz diagonal, temos simplesmente que:

Em especial, para uma matriz simétrica A, temos:

𝑢𝑘+1 = 𝑢𝑘 − [Η𝑓(𝑢𝑘) + 𝜆𝐷)]−1∇𝑓(𝑢𝑘)

(7)

𝐴 = 𝑄Λ𝑄−1 (8)

𝐴−1 = 𝑄Λ−1𝑄−1 (9)

Λ−1𝑖𝑖 =1

𝜆𝑖 (10)

𝐴−1 = 𝑄Λ−1𝑄𝑇 (11)

Page 36: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

35

3.3. Fundamentos de sistemas de controle

Nessa seção serão discutidos alguns conceitos importantes para o algoritmo

iLQR.

3.3.1. Sistemas não lineares

São considerados não lineares os sistemas que não admitem superposição

dos efeitos, ou seja, não respeitam 2 condições: aditividade e homogeneidade

(FRANKLIN; POWELL; EMAMI-NAEINI, 1994). Ambos princípios podem ser

transcritos nas igualdades (12) e (13):

Em outras palavras, sistemas não lineares não podem ser escritos na forma

da Equação (14), devendo ser descritas na forma da Equação (15)

Tais sistemas podem ser linearizados em torno de um ponto de equilíbrio,

utilizando a expansão da Série de Taylor até a primeira ordem. O sistema linearizado

passa, então, a ser função de perturbações em torno do ponto de equilíbrio. Assim,

tem-se:

Em que TOS seriam os termos de ordem superior.

3.3.2. Linearização de uma trajetória

Dado um sistema dinâmico não linear que percorre uma trajetória nominal

x*(t), a partir de um estado inicial x0 e um sinal de controle nominal u*(t), temos que

(FARRELL, 2006):

𝑓(𝑥 + 𝑦) = 𝑓(𝑥) + 𝑓(𝑦) (12)

𝑓(𝛼𝑥) = 𝛼𝑓(𝑥) (13)

�̇� = 𝐴𝑥 + 𝐵𝑢 (14)

�̇� = 𝑓(𝑥, 𝑢) (15)

𝑥0̇ + 𝛿�̇� = 𝑓(𝑥0, 𝑢0) + [𝜕𝑓

𝜕𝑥]𝑥0𝛿𝑥 + [

𝜕𝑓

𝜕𝑥]𝑢0𝛿𝑢 + 𝑇𝑂𝑆 (16)

𝛿�̇� = [𝜕𝑓

𝜕𝑥]𝑥0

𝛿𝑥 + [𝜕𝑓

𝜕𝑥]𝑢0

𝛿𝑢 (17)

𝑥 ∗̇(𝑡) = 𝑓(𝑥∗(𝑡), 𝑢∗(𝑡)) (18)

Page 37: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

36

Escrevendo a função dinâmica em função de pequenos desvios em relação à

trajetória nominal, temos;

Fazendo a expansão em Série de Taylor de 𝑓(𝑥∗ + 𝛿𝑥, 𝑢∗ + 𝛿𝑢), ao redor de

x*(t), u*(t) e truncando os termos de ordem superior,

Considerando agora f em função dos desvios em relação à trajetória nominal,

podemos reescrever, fazendo z = δx:

No algoritmo iLQR, em especial, utiliza-se a trajetória linearizada na forma de

equação de recorrência (ou equação à diferenças), isto é:

Assim, usando o método de Euler na Equação (22) para aproximar a

sequência da Equação (24),

Em que dt denota o passo da integração no tempo, ou o intervalo de

amostragem e as matrizes A e B são as derivadas a cada instante de tempo.

𝑥∗(0) = 𝑥0∗ (19)

𝛿�̇� = �̇� − 𝑥 ∗̇ = 𝑓(𝑥∗ + 𝛿𝑥, 𝑢∗ + 𝛿𝑢) − 𝑓(𝑥∗, 𝑢∗) (20)

𝑓(𝑥∗ + 𝛿𝑥, 𝑢∗ + 𝛿𝑢)

= 𝑓(𝑥∗, 𝑢∗) +𝜕𝑓

𝜕𝑥(𝑥∗, 𝑢∗)𝛿𝑥 +

𝜕𝑓

𝜕𝑢(𝑥∗, 𝑢∗)𝛿𝑢

(21)

�̇� = 𝐴(𝑡)𝑧 + 𝐵(𝑡)𝑢 (22)

𝐴 =𝜕𝑓

𝜕𝑥(𝑥∗, 𝑢∗), 𝐵 =

𝜕𝑓

𝜕𝑢(𝑥∗, 𝑢∗) (23)

𝑥𝑘+1 = 𝑓(𝑥𝑘, 𝑢𝑘) (24)

𝑥𝑘+1 = 𝑥𝑘 + (𝑑𝑡 ∗ 𝐴(𝑡))𝑥𝑘, +𝑑𝑡 ∗ 𝐵(𝑡)𝑢𝑘 (25)

𝑥𝑘+1 = (𝐼 + 𝑑𝑡 ∗ 𝐴(𝑡))𝑥𝑘, +𝑑𝑡 ∗ 𝐵(𝑡)𝑢𝑘 (26)

Page 38: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

37

3.4. O algoritmo iLQR

Analogamente ao LQR simples (KIRK, 1971), cujo objetivo é, dado uma

sistema dinâmico que pode ser descrito por:

E associado à uma função de custo da forma:

Dada uma ação de controle u, tal que minimiza o custo J:

O iLQR, por sua vez, expande esse conceito para sistemas não lineares, isto,

é, dado um sistema dinâmico da Equação (30), cuja trajetória é descrita pela equação

de recorrências, equação (31):

Deseja-se encontrar a sequência de controles:

Que minimize o custo total J,

Em que lf denota o custo final e l(xi,ui) denota o custo calculado ao longo da

trajetória.

O iLQR é um algoritmo baseado em DDP (Differential Dynamic Programming),

ou seja, visa, a partir de uma trajetória inicial, encontrar a trajetória que minimize a

função custo. Assim, tem-se que:

�̇� = 𝐴𝑥 + 𝐵𝑢 (27)

𝐽 = ∫ (𝑥𝑇𝑄𝑥 + 𝑢𝑇𝑅𝑢)𝑑𝑡∞

0

(28)

𝑢 = −𝐾𝑥 (29)

�̇�(𝑡) = 𝑓(𝑥(𝑡), 𝑢(𝑡)) (30)

𝑥𝑘+1 = 𝑓(𝑥𝑘, 𝑢𝑘) (31)

𝑈 = 𝑢𝑘 = {𝑢0, 𝑢1, 𝑢2…𝑢𝑛−1} (32)

𝐽(𝑥, 𝑈) = 𝑙𝑓(𝑥𝑛) + ∑ 𝑙(𝑥𝑖,𝑢𝑖)

𝑁−1

𝑖=0

(33)

𝑉(𝑥, 𝑖) = min𝑢[𝑙(𝑥, 𝑢) + 𝑉(𝑓(𝑥, 𝑢), 𝑖 + 1)] (34)

Page 39: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

38

A Equação (34) denota o cost-to-go ótimo, no instante i (TASSA; MANSARD;

TODOROV, 2014). Ela também é conhecida como Equação de Bellman. Com isso,

podemos também definir Q, tal que Q representa a mudança na função custo V’, isto

é V no instante i+1, em função de uma perturbação (δx, δu), cuja expansão de

segunda ordem é dada, pela Equação (36):

𝑄(𝛿𝑥, 𝛿𝑢) = 𝑙(𝑥 + 𝛿𝑥, 𝑢 + 𝛿𝑢) − 𝑙(𝑥, 𝑢) + 𝑉′(𝑓(𝑥 + 𝛿𝑥, 𝑢 + 𝛿𝑢))

− 𝑉′(𝑓(𝑥, 𝑢))

(35)

≈1

2[1𝛿𝑥𝛿𝑢] [1 𝑄𝑥

𝑇 𝑄𝑢𝑇

𝑄𝑥 𝑄𝑥𝑥 𝑄𝑥𝑢𝑄𝑢 𝑄𝑢𝑥 𝑄𝑢𝑢

] [1𝛿𝑥𝛿𝑢] (36)

𝑄𝑥 = 𝑙𝑥 + 𝑓𝑥𝑇𝑉′𝑥 (37)

𝑄𝑢 = 𝑙𝑢 + 𝑓𝑢𝑇𝑉′𝑥 (38)

𝑄𝑥𝑥 = 𝑙𝑥𝑥 + 𝑓𝑥𝑇𝑉′𝑥𝑥𝑓𝑥 + 𝑉′𝑥 ∙ 𝑓𝑥𝑥 (39)

𝑄𝑢𝑥 = 𝑙𝑢𝑥 + 𝑓𝑢𝑇𝑉′𝑥𝑥𝑓𝑥 + 𝑉′𝑥 ∙ 𝑓𝑢𝑥 (40)

𝑄𝑢𝑢 = 𝑙𝑢𝑢 + 𝑓𝑢𝑇𝑉′𝑥𝑥𝑓𝑢 + 𝑉′𝑥 ∙ 𝑓𝑢𝑢 (41)

𝑄(𝛿𝑥, 𝛿𝑢) = 𝑙(𝑥 + 𝛿𝑥, 𝑢 + 𝛿𝑢) − 𝑙(𝑥 + 𝛿𝑥, 𝑢 + 𝛿𝑢)

+ 𝑉′(𝑓(𝑥 + 𝛿𝑥, 𝑢 + 𝛿𝑢)) − 𝑉′(𝑓(𝑥, 𝑢))

(42)

Em que os termos à direita, das Equações (39), (40) e (41) denotam uma

contração tensorial. Como no algoritmo iLQR, é feita uma aproximação de primeira

ordem da trajetória, esses termos são desconsiderados. Além disso, fx e fu denotam

as derivadas parciais de f em relação à variável x e à variável u, respectivamente.

Minimizando a aproximação quadrática em (36), temos que a perturbação δu*

ótima é dada por:

Finalmente, resta apenas uma atualização do valor de V para cálculo do passo

anterior, i – 1, ou seja,

𝛿𝑢∗ =𝑎𝑟𝑔𝑚𝑖𝑛𝛿𝑢

𝑄(𝛿𝑥, 𝛿𝑢) = 𝑘 + 𝐾𝛿𝑥 (43)

𝑘 ≜ −𝑄𝑢𝑢−1𝑄𝑢 (44)

𝐾 ≜ −𝑄𝑢𝑢−1𝑄𝑢𝑥 (45)

Page 40: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

39

Entretanto, como podemos observar, são utilizadas informações das

derivadas de segunda ordem iterativamente e recursivamente, o que aproxima o DDP

ao método de Gauss-Newton. De fato, o DDP possui também convergência de

segunda ordem, mas, como o iLQR faz uma linearização da trajetória em primeira

ordem (TASSA; EREZ; TODOROV, 2012), essa propriedade não é mais garantida.

Ainda assim, é necessário regularizar a matriz Quu, para melhorar as chance de

convergência do algoritmo. Isso se deve ao fato que se a matriz Quu não for definida

positiva, isto é, se todos os seus autovalores não forem positivos, o método pode

divergir (TASSA; EREZ; TODOROV, 2012). Em outras palavras, o método precisa

“apontar” para uma direção que diminua o erro. Existem na literatura alguns métodos

para essa regularização, mas no presente trabalho foi utilizada a heurística de

Levenberg–Marquardt.

Assim, o algoritmo, basicamente, em:

1. Forward rollout: Linearizar a trajetória no tempo, calculando também os

custos l, e suas derivadas lx e lxx;

2. Backward pass: Encontrar as matrizes de ganho ótimas k e K, através

das Equações (37) a (47).

3. Forward pass: calcular a mudança δu para a sequência de controle.

4. Avaliar a nova trajetória e atualizar parâmetro da regularização. Se o

erro atingir o critério de parada ou divergir, sair. Caso contrário, repetir

o algoritmo com a nova sequência de controle.

𝑉𝑥 = 𝑄𝑥 − 𝐾𝑇𝑄𝑢𝑢𝑘 (46)

𝑉𝑥𝑥 = 𝑄𝑥𝑥 − 𝐾𝑇𝑄𝑢𝑢𝐾 (47)

Page 41: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

40

Figura 2 - Fluxograma do algoritmo iLQR

Em especial, é importante ressaltar, que primeiro passo do backward pass, as

matrizes Vx e Vxx são inicializadas, respectivamente, com lx e lxx.

É interessante também comentar a diferença entre as funções l, V e Q. Todas

elas são chamadas arbitrariamente de função custo, porém isso contém algumas

imprecisões.

Função custo l:

A função l é a função custo, propriamente dita. Ela recebe como parâmetros

o estado e ação de controle e retorna um valor associado a eles. Tomemos como

exemplo, o custo de uma viagem de carro, em que x é a nossa posição final em relação

ao objetivo; e u, nossa ação de controle, seria o consumo instantâneo de combustível.

Nossa função custo poderia ser, simplesmente:

Função cost-to-go V:

A função V é a função do custo “acumulado” associado ao tempo (ou iteração)

e ao estado, entre o estado i até o objetivo, isto é, uma função que avalia a qualidade

{𝑙 = 𝛼𝑢2

𝑙𝑓 = 𝛽𝑥2

(48)

Page 42: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

41

da nossa trajetória {xi, xi+1, xi+2, ..., xf} e da ações de controle ainda que serão tomadas.

No nosso, exemplo, seria a previsão do consumo total de combustível, a partir da

posição atual, mais a distância, em que pararemos ao final da corrida, em relação ao

objetivo. Nesse momento, pode parecer estranha a soma de duas grandezas com

unidades distintas. Entretanto, torna-se evidente também o uso das constantes ou

pesos α e β na equação (48): podemos usá-las para converter o custo “instantâneo”

para uma grandeza comum, uma moeda, por exemplo.

Função Q

A função Q é, às vezes, chamada de pseudo-Hamiltoniano (TASSA;

MANSARD; TODOROV, 2014), em referência ao Hamiltoniano de sistemas contínuos.

Este por sua vez, é uma analogia ao Hamiltoniano da mecânica clássica, que pode

ser visto com a energia total do sistema. A função Q descreve uma mudança no valor

da função V, em função de pequenas alterações (δx, δu). Isto é, minimizar Q

significaria, minimizar o aumento do custo, que, por consequência, está na direção da

minimização do custo total da trajetória. Como dito anteriormente, é necessário que

Quu seja definida positiva. Isso significa, na verdade, que Q é uma função convexa em

relação a u e com um mínimo (e não um máximo).

4. Metodologia

Foi feito um modelo de um braço robótico com 4 graus de liberdade. Devido à

ausência de unidades nativas no MuJoCo, a maioria das suas propriedades

dinâmicas, como amortecimento e ganho, foram atribuídas de tal forma que o modelo

apresentasse, por exemplo, rigidez à perturbação e tempo de acomodação aceitáveis.

Isto é, foram atribuídos alguns valores iniciais, utilizado um sinal de controle qualquer

e a simulação executada, onde o modelo foi perturbado com as ferramentas

interativas do MuJoCo. Nesse processo, rigidez, overshoot, vibração e outros

parâmetros foram observados e ajustados através das propriedades dinâmicas do

modelo. As dimensões foram tomadas de forma que o modelo ficasse proporcional a

um robô real.

Page 43: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

42

Figura 3 - Braço robótico numa posição arbitrária, indicando os graus de liberdade, isto é, um grau de liberade em vertical e 3 horizontais.

4.1. Programação

Como dito anteriormente, a simulação foi feita tanto no MATLAB com o

MuJoCo HAPTIX como no MuJoCo em C. Nessa seção, então, serão abordados

detalhes da implementação, levando em conta o acoplamento entre o algoritmo iLQR

e o software escolhido.

4.1.1. MATLAB

No MATLAB, a principal dificuldade seria obter as informações do estado, uma

vez que o HAPTIX foi desenvolvido como um simulador genérico. Assim, para isso,

foram utilizadas as funções:

mj_get_state, que retorna uma estrutura de dados (struct) com os

valores de posição e velocidade das juntas;

mj_set_state, que pode ser utilizada para atribuir os valores citados

anteriormente na simulação;

mj_get_control, que retorna uma estrutura de dados (struct) com o sinal

de controle;

E mj_set_control, que é utilizada para atribuir o sinal de controle;

mj_step, que faz uma integração no tempo, para obter o próximo

estado.

Page 44: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

43

Essas funções foram utilizadas tanto para operar a simulação como para se

obter as derivadas da linearização da trajetória. Em outras palavras, basicamente,

utiliza-se o mj_get_state para se obter o estado da simulação num instante t, aplica-

se uma perturbação finita com mj_set_state, faz-se a integração no tempo, com

mj_step e obtém-se o estado com a perturbação com mj_get_state, novamente.

Finalmente, calcula-se a derivada em relação ao grau de liberdade perturbado, com a

Equação (1) e restaura-se o estado inicial do sistema. Em seguida, pode-se

implementar o algoritmo iLQR no MATLAB.

Como podemos ver, é bastante simples fazer a implementação no MATLAB.

Entretanto, além do desempenho reduzido, existem outras desvantagens ao se optar

por essa abordagem. Entre elas, tem-se:

Não é possível alterar o passo temporal da integração (mj_step)

durante a simulação. Isso significa que não podemos regular um

importante parâmetro da precisão da linearização durante a execução.

A função mj_step necessita que a simulação no HAPTIX esteja pausda,

caso contrário, retorna imediatamente sem alterar nada. Além disso,

com a simulação corretamente pausada, após ser chamada, calcular e

renderizar, ela espera 1 ms. Isso implica que: não pode-se perturbar

uma simulação em curso; e o desempenho é ainda mais reduzido com

os cálculos da renderização e a espera de 1 ms. No caso do presente

projeto, por exemplo, são 4 graus de liberdade, com 4 atuadores, o que

significam também 8 estados. Utilizando as diferenças finitas

centradas, isso significa 2 x (8 + 4) = 24 ms, no mínimo, de tempo morto

para a linearização de um único instante. Como se trata da linearização

de uma trajetória, iterativamente, isso se torna praticamente inviável,

no contexto computacional.

4.1.2. Microsoft Visual Studio

A implementação no Microsoft Visual Studio em C/C++ é capaz de oferecer

muito mais desempenho que em MATLAB, devido à própria natureza da linguagem e

à possibilidade de paralelização. Entretanto, existe também uma enorme dificuldade

para se superar, pois o C/C++ é uma linguagem complexa. Por outro lado, o MuJoCo

também disponibiliza nessa plataforma muito mais liberdade e ferramentas que no

Page 45: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

44

HAPTIX, que se traduzem funções mais diversas e capazes de acessar muito mais

informações e até mesmo cálculos intermediários. As mais notórias são:

mj_forward(const mjModel *m, mjData *d):

Essa função calcula todas as variáveis necessárias para a integração de um

passo no tempo, a partir dos estados e dos controles, porém não faz a integração

propriamente dita. Em outras palavras, ela corresponde apenas à função dinâmica:

E retorna a derivada no tempo �̇� do vetor de estados.

mj_step(const mjModel *m, mjData *d):

Essa função realiza todas os cálculos realizados pela função mj_forward, mas

também integra no tempo, efetivamente, avançando a simulação (no tempo).

Normalmente, a integração é feita utilizando método de Euler, mas o método de

Runge-Kutta também pode ser escolhido.

Essas funções foram particularmente importantes, pois com mj_forward foi

possível calcular as derivadas lx e lxx da função custo de forma mais econômica (sem

a integração, como no MATLAB) e de forma mais precisa, afinal, as derivadas são em

relação somente aos estados. Fazer uma integração no tempo significaria variar um

parâmetro, o tempo, considerado constante nessa diferenciação. Além disso, como

citado anteriormente, o MuJoCo em C permite utilizar mais de uma simulação por

modelo. Isso é viabilizado ao criar vários mjData a partir do mesmo modelo, o que

permite aplicar perturbações diferentes e fazer a computação em paralelo.

4.2. Parâmetros e características da simulação

Dentre os aspectos mais importantes da simulação, podemos destacar:

A função custo;

Ainda que o objetivo da algoritmo iLQR seja reduzir o esforço do projeto do

controlador, através de uma função custo fisicamente mais fácil de se interpretar, isso

nem sempre é tão simples assim. A escolha da função custo impacta diretamente no

desempenho do algoritmo e pode até mesmo levá-lo a divergência. No nosso caso,

foi escolhida uma função simples, da forma:

�̇� = 𝑓(𝑥, 𝑢) (49)

Page 46: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

45

Em que p e r representam os pesos dessas parcelas, sponta e sdesejado

representam, respectivamente a posição da ponta no instante final e a posição

desejada e o somatório é somatório da velocidade ao quadrado de todas juntas no

instante final.

Cálculo e paralelização das derivadas;

O OpenMP possui 2 principais diretivas de distribuição de tarefas de uma

região paralelizada do código: single, sections e for. Ou seja, utilizando single, o

programador especifica que uma parte do código será executada apenas pela thread

mestre; usando sections, o programador especifica explicitamente as seções

paralelas do código. No exemplo abaixo, o programador usa a diretiva “#pragma omp

parallel”, que cria a região paralela, e na região paralela, ele especifica quais e como

as tarefas serão consideradas um “bloco”, através da diretiva “#pragma omp sections”:

#pragma omp parallel { #pragma omp sections { #pragma omp section { // Primeira seção do código } #pragma omp section { // Segunda seção do código } #pragma omp section { // Terceira seção do código } ... }

}

Já a diretiva for, “#pragma omp for”, paraleliza cada iteração do laço for, de

acordo com uma segunda diretiva de agendamento, que podem ser:

{

𝑙 = 𝑝𝑢2

𝑙𝑥 = 2𝑝 ∙ 𝑎𝑏𝑠(𝑢)𝑙𝑥𝑥 = 2𝑝

𝑙𝑓 = 𝑟((𝑠𝑝𝑜𝑛𝑡𝑎 − 𝑠𝑑𝑒𝑠𝑒𝑗𝑎𝑑𝑜)2 + ∑ 𝑣𝑖2)𝐺𝐷𝐿𝑖=0

(50)

Page 47: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

46

static;

As tarefas divididas entre as threads possuem tamanho fixo, isto, é, cada

thread irá executar um número fixo predeterminado de iterações.

dynamic;

As tarefas são divididas em um tamanho fixo, porém são atribuídas durante a

execução, ou seja, as tarefas são atribuídas às threads, essas tarefas são executadas,

e, ao terminá-las, a thread busca novas tarefas do tamanho predefinido. Ao contrário

do static, as tarefas não são atribuídas totalmente às threads logo no início. Dessa

forma, dynamic é melhor usado quando as iterações podem diferir sensivelmente

entre si.

guided;

É igual ao dynamic, porém com uma diferença: o tamanho das tarefas é

proporcional ao número de iterações faltantes e o usuário pode estabelecer o tamanho

mínimo. Como o dynamic, é adequado quando as cargas das iterações podem ser

diferentes entre si, mas tenta diminuir o overhead (cálculo não relacionado ao objetivo

do código, porém necessário para que ele funcione), pois atribui blocos maiores de

tarefas no início.

runtime;

Escolhe um dos tipos acima durante a execução do programa.

#pragma omp parallel { #pragma omp for // Diretiva de agendamento for (...) { // código } }

Dentre eles, o que possui menor overhead é o static, o que o torna, portanto,

nossa escolha primária. Entretanto, como dito no final da seção 3.1.3, o algoritmo

iLQR é bastante serial. As etapas backward pass e forward pass são multiplicações

de matrizes recursivamente, onde, portanto, não é possível paralelizar, com as

diretivas do OpenMP. Assim, resta apenas o forward rollout e a linearização da

trajetória. Grosso modo, fazemos uma perturbação na variável sendo diferenciada,

Page 48: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

47

avançamos o estado e calculamos as diferenças finitas. Nesse momento, fazemos

uma importante observação: Normalmente, para fazer a integração, seria suficiente

fazer a integração de Euler utilizando a derivada no tempo do estados, ou seja:

Em que xk é o estado atual, cujas informações são diretamente acessadas em

mjData; e ẋk é a derivada no tempo do estados, calculada por mj_forward. Entretanto,

essa função não faz uma integração, logo, não inclui o amortecimento implícito

calculado na integração (TODOROV, 2014). Isso se deve ao fato de que existem duas

formas de implementar amortecimento no MuJoCo: como um controle proporcional à

velocidade da junta ou como uma propriedade da junta. O primeiro poderia ser

instalado em um call-back e calculado na pipeline da função mj_forward. Contudo,

segundo a documentação do MuJoCo, o segundo é preferível, pois aumenta a

estabilidade do método de Euler. Além disso, afirma-se que o amortecimento é

avaliado somente instante temporal seguinte. Dessa forma, para se considerar os

efeitos do amortecimento é necessário usar a função mj_step, que é um pouco mais

lenta. Assim, temos um trade-off entre estabilidade e performance.

Finalmente, é necessário introduzir também um conceito utilizado na

implementação do algoritmo iLQR:

Finite horizon: Dado um objetivo, tenta alcança-lo utilizando um

instante fixo no tempo. Assim, a simulação avança no tempo e a janela

de tempo para as iterações subsequentes do iLQR vão diminuindo

(TODOROV, 2006);

Entretanto, dada a natureza do problema do presente trabalho, optou-se por

fazer um horizonte proporcional à distância em relação ao objetivo, isto é:

Em que T é a duração do horizonte, n é o número de divisões do intervalo e

cada um com seus respectivos valores máximos e mínimos.

𝑥𝑘+1 = 𝑥𝑘 + 𝑥�̇�𝑑𝑡 (51)

{

𝑇 = 𝑇𝑚𝑎𝑥𝑠

𝑠𝑖, 𝑇𝑚𝑖𝑛 < 𝑇 < 𝑇𝑚𝑎𝑥

𝑛 = 𝑛𝑚𝑎𝑥𝑠

𝑠𝑖, 𝑛𝑚𝑖𝑛 < 𝑛 < 𝑛𝑚𝑎𝑥

(52)

Page 49: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

48

4.3. Testes

Foram utilizados 3 tipos de atuadores presentes no MuJoCo:

Motor: O sinal de controle é uma saída de torque na junta;

Position: O sinal de controle determina uma posição. Possui apenas

um parâmetro, kp, que é o ganho do erro da posição.

Velocity: O sinal de controle determina a velocidade da junta. Possui

apenas um parâmetro, kv, é o ganho do erro da velocidade.

Com motor e position, foram feitas simulações para o ajuste manual dos

pesos, visando o melhor cumprimento da função objetivo. Isso não pode ser realizado

com o tipo velocity, pois, apesar de implementado, não foi obtida uma resposta

satisfatória ou algum indicativo de que valia a pena. Em especial, é importante

observar que a função custo varia de acordo com o atuador, isto é:

Para velocity, foi utilizada a função custo como descrito na Equação (50), mas

para position e o motor, foi utilizado:

De forma que o objetivo tornava-se, então, minimizar os deslocamentos.

Para o motor, em especial, era possível utilizar também a função custo (50),

sendo que a convergência é alcançada mais rápido. Porém, o objetivo, isto é a posição

desejada ficava bastante prejudicada.

Além disso, foram feitos testes de performance com e sem a paralelização,

para se verificar o ganho de desempenho.

5. Resultados

Como mencionado, o modelo em MATLAB foi utilizado, em geral, para

verificar o modelo do MuJoCo em C. Utilizou-se um modelo com atuador tipo position,

que converge em situações “fáceis”, isto é, objetivos próximos com linearizações não

muito grosseiras (intervalos de amostragem médios)

{

𝑙 = 𝑝(𝑢𝑘 − 𝑢𝑘−1)

2

𝑙𝑥 = 2𝑝 ∙ 𝑎𝑏𝑠(𝑢𝑘 − 𝑢𝑘−1)𝑙𝑥𝑥 = 2𝑝

𝑙𝑓 = 𝑟(𝑠𝑝𝑜𝑛𝑡𝑎 − 𝑠𝑑𝑒𝑠𝑒𝑗𝑎𝑑𝑜)2 + 𝑞∑ 𝑣𝑖2𝐺𝐷𝐿𝑖=0

(53)

Page 50: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

49

Dentre os modelos utilizados, motor e position apresentaram os melhores

resultados. Motor em especial não só convergia com linearizações mais grosseiras,

como também atingiu melhor o resultado final. Em média, um atuador position

necessitava passos temporais 3 a 4 vezes menores para rodar, isto é, utilizou-se um

passo temporal de 6,7 ms com motor e 2,5 ms com position. Além disso, ainda que

função custo especificada na equação (53) tinha como objetivo minimizar os

deslocamentos, a simulação apresentava um comportamento imprevisto: O braço

robótico ficava inicialmente parado na maior parte do tempo e pouco depois da metade

do tempo decorrido, movia-se atingindo a posição final, porém retornava logo em

seguida para posição inicial ou próxima dela. Acredita-se que isso se deve a presença

de um controle intermediário, inerente do MuJoCo, entre o iLQR e a função dinâmica,

porém mais testes nesse tópico precisariam ser feitos.

Page 51: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

50

Figura 4 - Posição inicial do braço robótico. Ele é inicialmente declarado na posição vertical e em seguida perturbado para sair da posição de singularidade.

Figura 5 - Braço robótico perturbado, cujo estado é o estado inicial do algoritmo para qualquer posição desejada da ponta do braço.

Como dito anteriormente, o objetivo da simulação era simplesmente atingir

uma dada posição, num dado intervalo de tempo. Na implementação, além do passo

temporal variante, indicado pelas equações (52), foi implementada uma condição de

“tolerância” para a posição. Isto é, se a distância da ponta do braço fosse maior que

um dado valor, o algoritmo seria executado.

Page 52: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

51

Tabela 3 - Braço robótico atingindo algumas posições arbitrariamente escolhidas, aumentando a distância e mudando o quadrante. Toma-se a origem como o centro da base do robô; z o eixo vertical da renderização; x a vertical da página; y a horizontal da página.

Figura 6 – Situação A, posição x = 2,5; y = 2,5; z = 2,5

Figura 7 – Situação B, posição x = 0, y = 3, z = 4

Figura 8 – Situação C, posição x = 1; y = -3; z = 4

Figura 9 – Situação D, posição x = -2, y = -3, z = 4

Page 53: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

52

Tabela 4 - Evolução do alcance do objetivo ao longo do tempo em segundos.

Figura 10 - Evolução da simulação da situação A

Figura 11 - Evolução da simulação da situação B

Figura 12 - Evolução da simulação da situação C

Figura 13 - Evolução da simulação da situação D

0

1

2

3

4

5

6

7

8

0 1 2 3 4 5

Situação A

Posição x Posição y

Posição z Distância

-2

-1

0

1

2

3

4

5

6

7

8

0 1 2 3 4 5

Situação B

Posição x Posição y

Posição z Distância

-4

-2

0

2

4

6

8

0 1 2 3 4 5

Situação C

Posição x Posição y

Posição z Distância

-4

-2

0

2

4

6

8

0 1 2 3 4 5

Situação D

Pos x: Pos y: Pos z: Distance:

Page 54: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

53

Figura 14 - Custos [sem unidade] das trajetórias ao longo do tempo [s].

Nas imagens da Tabela 4, podemos ver as coordenadas do objetivo e a

convergência de cada uma delas. Em especial, verifica-se que as situações C e D

possuem mais oscilações e, inclusive em D, verifica-se que houve algo parecido com

um sobressinal mais pronunciado que nas outras situações. Na Figura 14, podemos

ver a evolução dos custos das trajetórias ao longo do tempo. Podemos ver que para

objetivos relativamente próximos, isto é, as curvas em azul e vermelho,

correspondentes às posições [2,5 2,5 2,5] e [0 3 4], respectivamente, o algoritmo

comporta-se bem. Verifica-se um pico, provavelmente, devido a algum problema na

convergência ou à própria programação dele. Como a simulação foi feita utilizando os

seguintes passos:

1. Verificar distância;

2. Ajustar número de amostragens da linearização e janela de tempo, de

acordo com a distância do objetivo;

3. Copiar sinal de controle ainda não executado para o início da

sequência de controle;

4. Executar algoritmo iLQR;

5. Repetir;

0

3.000.000

6.000.000

9.000.000

12.000.000

15.000.000

18.000.000

21.000.000

0 1 2 3 4 5

Custos ao longo do tempo

Custo A [2,5 2,5 2,5] Custo B [0 3 4] Custo C [1 -3 4] Custo D [-2 -3 4]

Page 55: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

54

É possível que alguns parâmetros não atualizados com a distância, como os

pesos, causem interferências na convergência e na qualidade do resultado. Isto é, a

sequência é recalculada toda vez que o algoritmo é chamado. Isso emula um feedback

do erro, porém exigiria também um ajuste dos pesos, que não foi levado em

consideração nessa implementação. Isso significa que, na abordagem atual, o mesmo

peso é usado para calcular a sequência de controle mesmo que a simulação esteja

perto do objetivo. Verifica-se também, em contrapartida, que objetivos longes da

posição inicial, como as situações C e D, causam bastante oscilação na função custo.

Isso se deve a qualidade da linearização da trajetória, que fica prejudicada ao

aumentar a distância em relação ao objetivo. Assim, podemos interpretar a distância

física no modelo, também como uma distância matemática da solução ótima.

Foram também tomadas medidas de tempo antes e depois da chamada da

função que calcula as derivadas numéricas, variando-se o número de threads

empregadas. Foram feitas aproximadamente 100 amostragens por situação,

utilizando um computador com processador i7-7500U (4 núcleos, 2,7 GHz até 3,5

GHz) e 16 GB de memória RAM. Podemos ver, que para esse modelo, 1 thread

oferece o melhor desempenho. Provavelmente, isso se deve ao fato de que o modelo

utilizado é bem simples, com apenas 4 graus de liberdade. Isso significa que cada

thread seria responsável pela diferenciação de apenas 2 estados e 1 atuador. Nesse

caso, podemos concluir que o overhead não compensa a paralelização.

Adicionalmente, como comentado na seção 4.1.1. MATLAB, podemos ver que o

tempo morto de 24 ms é inviável em termos computacionais, o que mostra que a

escolha do uso da linguagem C/C++ foi bastante vantajosa.

Tabela 5 - Comparação do desempenho para números de threads diferentes

Número de threads Duração média [s] Tempo/min(tempo) [%]

1 0,016171303 100

2 0,017334976 107,195917

3 0,019987634 123,5994056

4 0,022286569 137,815541

Page 56: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

55

6. Discussão

Como esperado, o algoritmo iLQR atinge o objetivo determinado, ignorando a

multiplicidade de soluções da cadeia cinemática. Como o braço robótico tinha 4 graus

de liberdade, mas, como apenas 3 coordenadas eram determinadas no objetivo, um

sistema com múltiplas soluções é formado. Entretanto, utilizando o iLQR, mais uma

condição de contorno é adicionada ao sistema, sendo ela a função custo. Em outras

palavras, existe apenas uma trajetória ótima que minimiza localmente o custo total. O

iLQR, entretanto, não é infalível. Por ser um método numérico iterativo, existem

condições para sua convergência. Adicionalmente, o iLQR encontra o mínimo local,

isto é, o mínimo mais próximo da trajetória inicial. Isso significa que o iLQR é

dependente de boas escolhas (de pesos, funções custo, critérios de convergência...),

boas condições iniciais e de funções “bem comportadas”. Nesse contexto, a passo

temporal é uma variável extremamente importante. Como o iLQR difere do DDP,

principalmente pela aproximação da trajetória, utilizando uma aproximação de

primeira e não de segunda ordem, para se manter a qualidade da aproximação, é

necessário diminuir o passo temporal. Um passo temporal muito largo irá causar

rapidamente a divergência do método, pois, como os cálculos são recursivos no

backward pass, o erro aumenta exponencialmente. Dito isso, torna-se, então, evidente

a importância da regularização com a heurística de Levenberg–Marquardt.

Finalmente, o uso do iLQR para o controle de um braço robótico em real-time

é uma opção que está fortemente atrelada ao hardware disponível. Como

demonstrado, as etapas do iLQR não são triviais. De modo geral, uma única iteração

do iLQR leva em média de 10 a 30 iterações. Tomando, então, 20 iterações com 100

linearizações e 1 thread (0,016 s), são aproximadamente 30 s para se gerar uma

sequência de controle. Naturalmente, esse valor diminui ou aumenta, no caso do

presente trabalho, de acordo com a distância, mas esse valor já impõe algumas

restrições. Por outro lado, pode ser efetivamente utilizado se a trajetória e o sinal de

controle puderem ser calculados previamente e executados independentemente,

numa situação de automação industrial, por exemplo. Além disso, a precisão do

posicionamento também precisa ser trabalhada. Suponha a situação: O braço robótico

está longe do objetivo e utilizamos um peso pf na posição final, e um peso pu no sinal

de controle. Utilizamos um pf alto e um pu baixo, pois queremos principalmente que o

braço chegue ao objetivo. Entretanto, com o braço robótico perto do objetivo, a

Page 57: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

56

situação se inverte: queremos que o braço se mantenha na posição, com estabilidade

e sem vibrações, ou seja, minimizar a atuação, e como já estamos no objetivo, pf não

precisa ser tão alto. Além disso, as variações de ambos sinais sofrem uma escala.

Isto é, a amplitude do sinal de controle para movimentação pode ser ordens de

grandeza maior que para estabilização; e a distância inicial também pode bem maior

que a tolerância de posicionamento. Dessa forma, para um braço robótico, seria

interessante pelo menos que a função custo possa enxergar essa diferença e ajustar

adequadamente os pesos.

7. Conclusão

No presente projeto, foi demonstrado que o iLQR é capaz de superar não só

não linearidades, como também multiplicidade de soluções, encontrando, assim, uma

trajetória localmente ótima. Isso ocorre devido à associação da dinâmica do sistema

à uma função custo, que passa a ser a condição de contorno do projeto. Além disso,

o iLQR reduz o esforço do projetista, pois, uma vez implementado o algoritmo, ele

pode ser utilizado para modelos diferentes. Isso se deve ao fato de que o algoritmo

não depende da física do modelo, isto é, baseia-se na otimização do ponto de vista

matemático. Assim, é possível reutilizar o algoritmo em outros modelos apenas

ajustando a função custo e o horizonte da simulação. Especificamente quanto ao

braço robótico, vê-se que, com o atual parâmetro de regularização, o iLQR necessita

de alto poder de processamento, o que dificulta aplicações em real-time. Ao mesmo

tempo, aplicações industriais são muitas vezes repetitivas, o que significa que uma

trajetória pode ser previamente calculada e aplicada nessa situação. Dessa forma,

mostra-se que o iLQR é uma ferramenta bastante versátil para o controle de sistemas

dinâmicos não lineares, mas com aplicação ainda limitada pelo hardware atual

Page 58: Implementação de controlador iLQR em braço robótico com ...€¦ · convergência. 2019. Monografia (Trabalho de Conclusão de Curso) – Escola de Engenharia de São Carlos,

57

8. Referências

FARRELL, J. A. ADAPTIVE APPROXI MATlON Unifying Neural , Fuzzy and

Traditional Adaptive Approximation Approaches. [s.l: s.n.]

FRANKLIN, G.; POWELL, J. D.; EMAMI-NAEINI, A. Feedback control of dynamic

systems, 3e. In: American Society of Mechanical Engineers, Dynamic Systems and

Control Division (Publication) DSC, Anais...1994.

KIRK, D. E. Optimal control theory—an introduction, Donald E. Kirk, Prentice Hall,

Inc., New York(1971), 452 poges.$13.50. AIChE Journal, v. 17, n. 4, p. 1018–1018,

jul. 1971.

LI, W.; TODOROV, E. Iterative Linear Quadratic Regulator Design for Nonlinear

Biological Movement Systems. p. 222–229, 2011.

TASSA, Y.; EREZ, T.; TODOROV, E. Synthesis and stabilization of complex

behaviors through online trajectory optimization. IEEE International Conference on

Intelligent Robots and Systems, p. 4906–4913, 2012.

TASSA, Y.; MANSARD, N.; TODOROV, E. Control-Limited Differential Dynamic

Programming. 2014.

TODOROV, E. Optimal Control Theory. In: Bayesian Brain. [s.l.] The MIT Press,

2006. p. 268–298.

TODOROV, E. Convex and analytically-invertible dynamics with contacts and

constraints: Theory and implementation in MuJoCo. Proceedings - IEEE

International Conference on Robotics and Automation, p. 6054–6061, 2014.

TODOROV, E.; EREZ, T.; TASSA, Y. MuJoCo: A physics engine for model-based

control. In: 2012 IEEE/RSJ International Conference on Intelligent Robots and

Systems, Anais...IEEE, out. 2012. Disponível em:

<http://ieeexplore.ieee.org/document/6386109/>. Acesso em: 9 jul. 2018.