Gaussiano Linear-Quadrático (LQG)
Visão geral
O controle Linear Quadrático Gaussiano (Linear Quadratic Gaussian, LQG) é uma estrutura clássica de controle ótimo (optimal control) para sistemas dinâmicos lineares (linear dynamical systems) com ruído Gaussiano aditivo (additive Gaussian noise), em que o objetivo é minimizar um custo quadrático (quadratic cost). Ele combina dois resultados fundamentais:
- Regulador linear-quadrático (Linear Quadratic Regulator, LQR): um controlador ótimo de realimentação de estado (state-feedback) assumindo que todo o estado é conhecido.
Veja também: Regulador Linear Quadrático (LQR) - Filtro de Kalman (Kalman filter): um estimador de estado (state estimator) ótimo para sistemas lineares com ruído Gaussiano de processo/medição.
Veja também: Filtro de Kalman
O LQG é o que você usa quando quer controle ótimo no estilo do regulador linear-quadrático, mas só consegue medir saídas ruidosas, e não o estado completo. Ele é amplamente usado em robótica e aeroespacial como uma arquitetura de controle “baseada em modelo (model-based)” de referência: estimar o estado → aplicar realimentação ótima sobre a estimativa.
Uma característica definidora do LQG é o princípio da separação (separation principle): sob as hipóteses do LQG, você pode projetar o controlador (regulador linear-quadrático) e o estimador (filtro de Kalman) independentemente, e então combiná-los sem perder a otimalidade.
Formulação do problema e hipóteses
O LQG normalmente assume um sistema linear invariante no tempo (linear time-invariant, LTI) (também existem versões variantes no tempo). Em tempo discreto:
[ x_{t+1} = A x_t + B u_t + w_t,\quad w_t \sim \mathcal{N}(0, W) ] [ y_t = C x_t + v_t,\quad v_t \sim \mathcal{N}(0, V) ]
Onde:
- (x_t) é o estado (oculto) (p. ex., posição, velocidade, atitude, termos de viés).
- (u_t) é a entrada de controle (p. ex., comandos de motor, torques).
- (y_t) é a medição (p. ex., IMU, posição derivada de câmera, encoders).
- (w_t) é ruído de processo (process noise) (perturbações não modeladas, erros de discretização).
- (v_t) é ruído de medição (measurement noise).
O custo é quadrático (horizonte finito ou infinito). Uma forma comum de horizonte infinito:
[ J = \mathbb{E}\left[\sum_{t=0}^{\infty} \left(x_t^\top Q x_t + u_t^\top R u_t\right)\right] ]
com (Q \succeq 0), (R \succ 0).
Hipóteses-chave (e por que importam)
Linearidade
A dinâmica e os modelos de medição são lineares em (x) e (u).
Na prática, muitos sistemas robóticos são não lineares, mas podem ser linearizados em torno de um ponto de operação (pairado, cruzeiro, equilíbrio em pé).Custo quadrático
Objetivos quadráticos penalizam o desvio do estado e o esforço de controle de forma suave e convexa. Isso fornece ganhos ótimos em forma fechada via equações de Riccati (Riccati equations).Ruído Gaussiano (aditivo, média zero)
A filtragem de Kalman é ótima (variância mínima) sob hipóteses linear-Gaussianas. A Gaussianidade também torna o problema global de controle estocástico tratável analiticamente.Modelo e covariâncias de ruído conhecidos
O LQG precisa de (A,B,C) e das covariâncias de ruído (W,V). Em implantações reais, isso é aproximado e deve ser ajustado/identificado.
O LQG é um exemplo central em Controle Ótimo: é um dos poucos cenários de controle estocástico com uma solução limpa e tratável.
O componente do regulador linear-quadrático: realimentação ótima de estado
Se o estado completo (x_t) fosse conhecido, o regulador linear-quadrático encontra uma lei de controle linear:
[ u_t = -K x_t ]
Para regulador linear-quadrático em tempo discreto de horizonte infinito, (K) é calculado a partir da solução (P) da equação algébrica de Riccati discreta (discrete algebraic Riccati equation, DARE):
[ P = A^\top P A - A^\top P B (R + B^\top P B)^{-1} B^\top P A + Q ]
e o ganho de realimentação é:
[ K = (R + B^\top P B)^{-1} B^\top P A ]
Intuição:
- (Q) maior: maior preocupação com erro de estado → correção mais forte.
- (R) maior: maior preocupação com esforço de entrada → controle mais suave.
Em robótica, o regulador linear-quadrático é frequentemente aplicado a um modelo linearizado ao redor de uma trajetória ou equilíbrio (p. ex., pairado para um drone, posição ereta para um pêndulo).
O componente do filtro de Kalman: estimação ótima de estado
Quando você observa apenas (y_t), você estima (x_t) com um filtro de Kalman, produzindo (\hat{x}_t) (média a posteriori) e (P_t) (covariância a posteriori).
Um filtro de Kalman padrão em tempo discreto executa:
Predição [ \hat{x}{t|t-1} = A \hat{x}{t-1|t-1} + B u_{t-1} ] [ P_{t|t-1} = A P_{t-1|t-1} A^\top + W ]
Atualização [ S_t = C P_{t|t-1} C^\top + V ] [ L_t = P_{t|t-1} C^\top S_t^{-1} ] [ \hat{x}{t|t} = \hat{x}{t|t-1} + L_t (y_t - C \hat{x}{t|t-1}) ] [ P{t|t} = (I - L_t C) P_{t|t-1} ]
Aqui, (L_t) é o ganho de Kalman (Kalman gain): ele balanceia a confiança entre a predição do modelo e medições ruidosas.
Existem filtros de Kalman em regime permanente (steady-state) (invariantes no tempo) quando o sistema é detectável e as estatísticas do ruído são estacionárias; então (L_t \to L).
Juntando tudo: o controlador LQG
O LQG usa o filtro de Kalman para estimar o estado e, em seguida, aplica o regulador linear-quadrático à estimativa:
[ u_t = -K \hat{x}_{t|t} ]
Isso é frequentemente chamado de equivalência de certeza (certainty equivalence): tratar a estimativa como se fosse o estado verdadeiro.
Do ponto de vista de implementação, o LQG são duas recorrências acopladas executando online:
- estimador: ((\hat{x}, P))
- controlador: (u=-K\hat{x})
O princípio da separação (por que o LQG é modular)
Um resultado fundamental para o LQG é o princípio da separação:
A lei de controle ótima sob observabilidade parcial (apenas (y_t)) é obtida por:
- estimar o estado via filtro de Kalman, e
- aplicar o ganho do regulador linear-quadrático à estimativa.
Criticamente, o projeto do regulador linear-quadrático não depende das covariâncias de ruído (W,V), e o projeto do filtro de Kalman não depende das matrizes de custo (Q,R). Você pode projetá-los de forma independente e “encaixá-los”.
Esse princípio vale sob as hipóteses padrão do LQG (dinâmica linear, custo quadrático, ruído Gaussiano, sem restrições rígidas). É uma das razões pelas quais o LQG é popular em sistemas de engenharia: ele separa de forma limpa “como eu devo agir?” de “qual é o estado?”.
Quando a separação deixa de valer (motivos comuns)
O princípio da separação não é uma verdade universal. Ele pode falhar ou se tornar subótimo quando você introduz:
- Restrições rígidas (saturação de atuador, limites de estado) → motiva Controle Preditivo por Modelo (MPC)
- Não linearidades fortes (ou operação longe do ponto de linearização)
- Ruído não Gaussiano (outliers, incerteza multimodal)
- Incerteza dependente do controle (p. ex., sensoriamento ativo em que as ações afetam a observabilidade)
- Modelos/estatísticas de ruído incorretos (incompatibilidade prática)
Nesses casos, o LQG ainda pode funcionar como uma heurística, mas não há mais garantia de otimalidade.
Fluxo de trabalho prático de projeto
1) Escolher ou identificar um modelo linear
- Derivar da física e linearizar, ou identificar a partir de dados.
- Garantir que você modele o estado que importa para o controle (incluir vieses, atrasos etc., se necessário).
Exemplo: a dinâmica lateral de um robô móvel pode incluir posição/velocidade; um drone pode incluir atitude e taxas angulares.
2) Escolher os pesos de custo \(Q, R\) (ajuste do regulador linear-quadrático)
Diretrizes:
- Coloque pesos maiores em (Q) para estados “obrigatórios de rastrear” (p. ex., erro de posição).
- Aumente (R) se você quer controle mais suave ou respeitar limites de atuadores de forma indireta.
- Use escala de estados: se um estado está em metros e outro em radianos, reescale para que os pesos sejam significativos.
3) Escolher covariâncias de ruído \(W, V\) (ajuste do filtro de Kalman)
- (V): com base nas especificações do sensor (variância) e em logs empíricos.
- (W): representa aceleração/perturbações não modeladas; frequentemente é ajustado até o filtro “acompanhar” sem ficar ruidoso demais.
Regra prática: se o filtro fica atrasado em relação a mudanças reais, aumente (W); se a estimativa está muito ruidosa/instável, aumente (V) (ou reduza (W)).
4) Verificar condições estruturais
Para soluções bem-comportadas, em geral você quer:
- (A,B) estabilizável (stabilizable) para regulador linear-quadrático
- (A,C) detectável (detectable) para filtragem de Kalman
Estas são contrapartes de controle/estimação de “controlabilidade/observabilidade (controllability/observability)” e garantem que as partes instáveis possam ser controladas/observadas.
5) Implementar com cuidado (discretização, temporização, atrasos)
- Use o modelo em tempo discreto correto para sua taxa de controle.
- Trate latência de sensores (carimbo de tempo + predição) se necessário.
- Tenha atenção à saturação de atuadores; o LQG não a considera explicitamente.
Exemplo trabalhado (conceitual): controle de posição 1D com medições ruidosas
Considere um modelo simples de massa pontual em 1D com estado (x=[p, \dot{p}]^\top) (posição e velocidade) e controle (u) (comando de aceleração). Discretizado com passo (\Delta t):
[ A=\begin{bmatrix}1 & \Delta t\0 & 1\end{bmatrix},\quad B=\begin{bmatrix}\tfrac{1}{2}\Delta t^2\ \Delta t\end{bmatrix},\quad C=\begin{bmatrix}1 & 0\end{bmatrix} ]
Você mede apenas posição: (y_t = p_t + v_t).
- O regulador linear-quadrático produzirá uma realimentação estabilizante que se comporta como um controlador PD ajustado, mas balanceado de forma ótima por (Q,R).
- O filtro de Kalman inferirá a velocidade a partir da dinâmica, mesmo que ela não seja medida diretamente, e suavizará medições de posição ruidosas.
Um esboço mínimo de implementação (Python tipo pseudocódigo) é:
# Given: A, B, C, Q, R, W, V
# Precompute steady-state gains (typical)
K = dlqr(A, B, Q, R) # LQR gain
L = steady_state_kalman(A, C, W, V) # Kalman gain
xhat = np.zeros((2,1))
for t in range(T):
# Read sensor
y = measure_position()
# Kalman predict
xhat = A @ xhat + B @ u_prev
# Kalman update
innovation = y - (C @ xhat)
xhat = xhat + L @ innovation
# LQR control using estimated state
u = -K @ xhat
apply_control(u)
u_prev = u
Em robótica, esse padrão aparece em todo lugar: estimar velocidade/atitude/viés ocultos → controlar com base na estimativa.
Aplicações típicas em robótica e controle
Estabilização ao redor de um equilíbrio (uso clássico em robótica)
- Pêndulo invertido / robô autoequilibrante: linearizar ao redor da posição ereta e estabilizar.
- Pairado de quadrotor: linearizar ao redor do pairado; o LQG pode estabilizar atitude/posição com IMU/GPS/visão ruidosos.
Aqui, o filtro de Kalman frequentemente estima estados difíceis de medir diretamente (velocidade, aceleração, viés do giroscópio).
Rastreamento de trajetória (com LQG linear variante no tempo)
Para seguir uma trajetória planejada, costuma-se usar uma linearização variante no tempo:
- Linearizar a dinâmica ao longo de uma trajetória nominal ((x^*, u^*))
- Usar regulador linear-quadrático variante no tempo (horizonte finito) + filtro de Kalman variante no tempo
Isso é comum em guiagem aeroespacial e está intimamente relacionado a métodos de LQR iterativo (iterative LQR, iLQR) usados em planejamento/controle (frequentemente discutidos junto de Controle Preditivo por Modelo (MPC)).
Fusão de sensores + controle em sistemas embarcados
A separação estimador-controlador do LQG combina com a forma como pilhas robóticas embarcadas são organizadas:
- Um estimador de estado roda na taxa dos sensores (IMU, encoders, GPS/visão).
- Um controlador roda em uma taxa fixa de loop e consome o estado estimado.
Mesmo quando engenheiros não chamam isso explicitamente de “LQG”, muitos sistemas são, na prática, estimação baseada em filtro de Kalman + realimentação no estilo do regulador linear-quadrático.
Limitações e armadilhas comuns
Incompatibilidade de modelo e questões de robustez
O LQG é ótimo para o modelo assumido, mas pode ser frágil quando:
- a dinâmica está errada (flexibilidade não modelada, dinâmica de contato, efeitos aerodinâmicos)
- o ruído não é bem descrito por covariâncias Gaussianas
- atrasos são significativos
Na prática, engenheiros frequentemente adicionam camadas de robustez (escalonamento de ganho, ação integral, observadores de perturbação ou técnicas de controle robusto). Um problema conhecido é que o LQG “ótimo” pode produzir margens de robustez (robustness margins) piores do que o regulador linear-quadrático sozinho, especialmente se o estimador for agressivo.
Restrições (saturação) não são tratadas explicitamente
O custo quadrático desencoraja entradas grandes, mas não impõe limites rígidos. Se seu sistema satura, o comportamento efetivo em malha fechada pode desviar significativamente, possivelmente desestabilizando a interação estimador/controlador.
Se restrições importam, o Controle Preditivo por Modelo (MPC) é uma alternativa comum porque otimiza impondo limites.
Sistemas não lineares: a linearização funciona apenas localmente
Robôs frequentemente são não lineares (contatos, trigonometria, aerodinâmica). A linearização pode funcionar bem perto de um regime, mas:
- grandes desvios podem invalidar o modelo linear
- o filtro de Kalman pode se tornar inconsistente
- garantias de estabilidade podem não se transferir
Para estimação não linear, praticantes frequentemente usam filtro de Kalman estendido (Extended Kalman Filter, EKF), filtro de Kalman unscented (Unscented Kalman Filter, UKF) e filtros de partículas (particle filters); veja Filtro de Kalman Unscented (UKF) como uma alternativa não linear comum.
Ajuste de ruído não é “configurar e esquecer”
O desempenho do LQG depende fortemente de (W) e (V). Sintomas comuns de ajuste:
- Filtro atrasado em relação à realidade → aumentar (W) (ou reduzir (V))
- Estimativa ruidosa/instável demais → aumentar (V) (ou reduzir (W))
- Viés não modelado (p. ex., viés de IMU) → incluir estados de viés; caso contrário, o filtro “briga” com um erro sistemático
Observabilidade parcial e detectabilidade
Se modos instáveis importantes não são observáveis via (C), nenhum estimador consegue recuperá-los com confiabilidade, e o LQG pode falhar. Isso frequentemente aparece quando você tenta controlar um estado que não consegue medir (diretamente ou indiretamente via dinâmica).
Variantes e extensões
LQG com ação integral (LQGI)
Para eliminar erro em regime permanente devido a perturbações constantes ou offsets de modelagem, adicione um estado integrador (p. ex., integrar erro de posição) e rode LQG no sistema aumentado. Isso é comum em controle servo (servo control) e robótica.
Recuperação de Transferência de Malha (Loop Transfer Recovery, LTR)
Um método clássico para melhorar a robustez de projetos LQG ao moldar a dinâmica do estimador para “recuperar” propriedades de malha desejáveis do regulador linear-quadrático. Isso reflete a realidade prática de que a otimalidade pura do LQG não implica automaticamente boa robustez.
LQG variante no tempo / horizonte finito
Usado para problemas de rastreamento em que a linearização e os ganhos mudam ao longo do tempo. Isso é padrão em aeroespacial e em rastreamento de trajetória em robótica.
LQG como benchmark em aprendizado e RL
Problemas de LQG são amplamente usados como benchmarks de “sanity check” para Aprendizado por Reforço:
- Para problemas linear-quadráticos totalmente observados, políticas ótimas são lineares e podem ser recuperadas por programação dinâmica.
- Para observação parcial (LQG), o controlador ótimo é “filtro de Kalman + regulador linear-quadrático”, ilustrando o papel do estado de crença (belief state) (a posteriori sobre (x_t)).
Em termos modernos de ML, o LQG é um cenário em que a política ótima depende de uma estatística suficiente compacta: ((\hat{x}_t, P_t)) do filtro de Kalman.
Quando usar LQG (orientação prática)
O LQG é uma escolha forte quando:
- seu sistema é razoavelmente aproximado como linear na região de operação
- você tem sensores ruidosos e precisa de estimação de estado fundamentada
- você quer um controlador computacionalmente barato com forte embasamento teórico
- restrições são leves ou podem ser tratadas por lógica adicional (clipping, anti-windup (anti-windup))
Considere alternativas quando:
- restrições são centrais → Controle Preditivo por Modelo (MPC)
- a dinâmica é fortemente não linear / envolve contatos → MPC não linear, variantes de LQR iterativo ou controle baseado em aprendizado
- o ruído é não Gaussiano com outliers → filtragem robusta ou métodos de partículas
Resumo
O LQG é a solução canônica para controle ótimo estocástico de sistemas lineares com ruído Gaussiano e custos quadráticos:
- O regulador linear-quadrático fornece o ganho ótimo de realimentação de estado (K)
- O filtro de Kalman fornece a estimativa ótima de estado (\hat{x})
- O princípio da separação garante que projetá-los de forma independente é ótimo sob as hipóteses do LQG
- Em robótica, o LQG é um modelo prático: estimação de estado + realimentação ótima—frequentemente servindo como baseline, um loop interno estabilizante, ou um componente dentro de sistemas maiores
Para se aprofundar nos dois principais blocos de construção, veja Regulador Linear Quadrático (LQR) e Filtro de Kalman.