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)

  1. 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é).

  2. 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).

  3. 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.

  4. 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:

    1. estimar o estado via filtro de Kalman, e
    2. 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.