2.6 Hardware Reconfigurável
2.6.1 FPGAs Field-Programmable Gate Arrays
Os FPGAs são circuitos integrados compostos por um arranjo de células lógicas que podem ser programadas para executar funções lógicas, armazenar dados e efetuar roteamento de sinais para outras células lógicas. Esta característica torna possível a criação de praticamente qualquer ar- quitetura desejada, limitada basicamente pela quantidade de elementos presentes em cada FPGA. Além disso, o fato de ser possível criar várias cópias de um módulo ou mesmo vários módulos diferentes torna o FPGA uma ótima arquitetura para paralelização. Sua programação é realizada através de linguagens de descrição de hardware HDL (Hardware Description Language) sendo as mais comuns o VHDL (VHSIC Hardware Description Language) e o Verilog [25].
Além dos elementos lógicos, multiplicadores e memórias internas, FPGAs modernos são co- mercializados com uma arquitetura de SoC, possuindo dentro do chip, além da área reprogramá- vel, um processador dedicado.
Atualmente estão presentes no mercado diversos fabricantes de FPGA incluindo Achronix Semiconductor, Actel, Altera, AMI Semiconductor, Atmel, Cypress Semiconductor, Lattice Se- miconductor, QuickLogic, e Xilinx. Cada fabricante oferece dispositivos com diversos tamanhos em termos do número total de portas lógicas, memórias embarcadas e elementos de processa- mento DSP embutidos.
Em termos de configuração de processadores embarcados internamente no FPGA observam- se exemplos dos dois maiores fabricantes a Altera e a Xilinx. A Altera oferece em seus FPGAs a possibilidade de configurar o processador Nios II que é um Soft Core Processor ou softcore (processador reconfigurável que utiliza os elementos lógicos do FPGA) e a Xilinx oferece o Soft
Processor MicroBlaze. Também estão disponíveis processadores hardcore (SoC) como o ARM
na família Cyclone V da Intel/Altera [108] e na família Zynq da Xilinx [109], o que torna soluções de coprojeto mais eficientes [110].
Apesar de historicamente os FPGAs oferecerem um número limitado de células lógicas, baixa frequência e maior consumo de energia comparado às soluções em hardware dedicado (ASIC), lançamentos recentes de ambos os fabricantes que utilizam tecnologia de fabricação com tran- sistores de 16 e 14 nm fornecem soluções com um número alto de células lógicas, na casa dos milhões e altas frequências, na faixa de 1 GHz. Dois exemplos práticos são os FPGAs da família Virtex-7 da Xilinx [111] com até 2.000.000 elementos lógicos e o FPGA da família Stratix 10 da Intel/Altera [112] com até 5.510.000 elementos lógicos. Ambas estas características aliadas com as tecnologias de fabricação são capazes de fornecer uma redução no consumo de energia de até 70% em comparação com a geração anterior, tornando estes dispositivos cada vez mais atrativos para uso em larga escala.
3 CONTROLADOR NMPC UTILIZANDO RNA/SVM
A primeira abordagem para acelerar o cálculo da solução do NMPC foi a de utilizar Redes Neurais Artificiais (RNAs) e de Máquinas de Vetor de Suporte (SVMs), mais especificamente SVRs (Support Vector Regressor) que são uma versão de SVM para problemas de regressão, com o intuito de substituir o papel do controlador e obter arquiteturas para altas frequências de amostragem. Esta abordagem é inspirada no trabalho de Ortega e Camacho [27] onde uma RNA foi utilizada em um controlador preditivo aplicado ao sistema de navegação de um robô móvel.
A metodologia aplicada é representada na Figura 3.1 e consiste em:
(i) Cálculo da solução NMPC offline e Treinametno da RNA/SVR: nesta etapa, a solução do controlador NMPC é calculada a partir de simulações numéricas no Matlab. O sistema é descrito com auxílio da ferramenta Simulink que é responsável por calcular as predições, dada uma entrada. Como solver, utilizou-se a função fmincon do Matlab, que é capaz de resolver problemas de otimização não-lineares com restrições. As soluções obtidas em cada período de amostragem são armazenadas e utilizadas para o treinamento da RNA ou SVR. (iii) Utilização da RNA/SVR como controlador do sistema: a solução aproximada obtida
no passo anterior é implementada em hardware a partir de uma descrição VHDL (VHSIC Hardware Description Language), gerada automaticamente a partir de um gerador automá- tico desenvolvido neste trabalho. Em seguida é utilizada no lugar do controlador NMPC.
…
NMPC
RNA/SVR
Sistema
z
-1 uk+1 xk + -(i) Solução NMPC offline e treinamento da RNA/SVR
RNA/SVR
uk+1z
-1Sistema
xk(ii) Utilização da RNA/SVR x_refk
x_refk+N x_refk x_refk+N
Figura 3.1: Método de treinamento da RNA/SVR.
Três abordagens foram utilizadas seguindo esta metodologia e geraram três publicações [113, 33, 94]. No primeiro trabalho [113], RNAs do tipo RBF foram utilizadas para aproximar o com- portamento do controlador NMPC. Já no segundo trabalho uma ferramenta desenvolvida por San- tos [33] foi utilizada para treinar SVRs utilizando além do kernel RBF um kernel polinomial mais simples que diminui o tempo de cálculo da solução bem como a utilização de recursos de hard-
ware. Um resumo da aplicação e dos resultados dos dois primeiros trabalhos é apresentado a seguir.
3.1 UTILIZAÇÃO DE RNA E SVM COMO CONTROLADOR NMPC DE UM BRAÇO
ROBÓTICO
Nestes dois trabalhos, o caso de estudo selecionado foi o de controle de um braço robótico com uma junta de revolução elástica e um grau de liberdade como benchmark. Em muitas aplicações de robótica industrial a elasticidade de juntas advindas de folgas e elasticidade de engrenagens, correias de transmissão ou redutores do tipo harmônico são consideradas [114]. A junta elástica de revolução é modelada como uma mola com torção conectando a junta com o braço. O robô, pode ser visto na Figura 3.2 onde se observa que o mesmo está livre para girar no plano vertical.
a" u k qm ql h Jl, m Jm
Figura 3.2: Robô manipulador com junta elástica.
A equação apresentada a seguir, descreve seu modelo e foi desenvolvida por Zhang, Polycarou e Parsini [115]:
Jlq¨l+ K(ql− qm) + mgh sin ql = 0 (3.1a)
Jmq¨m+ Fmq˙m− K(ql− qm) = Kτu, (3.1b)
onde ql e qm são as posições angulares do braço e do motor, respectivamente. As inércias do
braço e do motor são representadas por Jle Jm. Para modelar o comportamento elástico da junta,
uma mola de torção é utilizada, sua constante é definida como K. A massa e o comprimento do braço são definidos com o m e 2h, e a aceleração de gravidade por g. O ganho de amplificação é
definido como Kτ, e a viscosidade nominal do motor tem seu coeficiente representado por Fm. A
entrada do sistema, u, é o torque do motor.
Este sistema (3.1) é relatado na literatura como um modelo de ensaio para métodos de de- tecção de falhas e isolamento (FDI - Fault Detection and Isolation) [115] e procedimentos de estimação não-linear [116]. Segundo [116, 115], valores adequados para cada um dos parâmetros
são 9.3 × 10−3 kg m2e 3.7 × 10−3 kg m2para a inércia do braço e do motor , 1.8 × 10−1 Nm/rad
para a constante de torção da mola, 2.1 × 10−1 kg para a massa do braço, 1.5 × 10−1 m para o
o coeficiente de viscosidade e 9.8 m/s2 para a aceleração da gravidade.
A descrição do sistema em espaço de estados discreto é apresentada na Equação (3.1).
x(k + 1) = f (x(k), u(k)), y(k) = x(k), (3.2)
onde x(k), u(k) e y(k) representam o vetor de estados, o vetor de entradas e o vetor de saídas do sistema, respectivamente. É importante observar que todos os estados são assumidos como mensuráveis, ou seja, não há o emprego de um estimador de estados.
O vetor de estados é definido por: x = [ql q˙lqm q˙m]T. As restrições para a saída do controlador (torque de entrada do sistema) são definidas pelo conjunto Ω = [−4, 4].
O problema de controle é expresso pela Equação (3.1).
minu(k,k+N −1)J (x(k), u(k, k + N − 1)) ,
PN
k=1kxref(k) − x(k)k2,
s.a. ui ∈ Ω, ∀i ∈ [k, k + N − 1], (3.3)
onde xref(k) é a referência a ser seguida pelo estado x(k) em um dado instante k, N é o tamanho
do horizonte de predição e o conjunto Ω define as restrições para as variáveis de controle. Utiliza-
se ainda a notação uoptk para representar a sequência ótima de controle dentro do horizonte de
predição.