Controle Ótimo

O que é controle ótimo?

Controle ótimo é o estudo de como escolher entradas de controle para um sistema dinâmico de modo que a trajetória resultante otimize um objetivo, ao mesmo tempo em que satisfaz a dinâmica e as restrições do sistema.

Ele está no núcleo da robótica e de muitos sistemas de tomada de decisão porque formaliza “agir ao longo do tempo” como um problema de otimização (optimization problem):

  • As variáveis de decisão são uma sequência (ou função) de controles (u(t)) e os estados induzidos (x(t)).
  • As restrições codificam a física (dinâmica), limites (limites de atuadores) e segurança (evitação de colisões).
  • O objetivo codifica metas e preferências da tarefa (alcançar um alvo, minimizar energia, seguir um caminho, etc.).

O controle ótimo está fortemente conectado à otimização de trajetória (trajectory optimization) (resolver por uma trajetória ótima de estados/controles) e fundamenta o Controle Preditivo por Modelo (Model Predictive Control, MPC), em que você resolve repetidamente online um problema de controle ótimo de horizonte finito e aplica apenas a primeira ação de controle (controle por horizonte deslizante). Veja Controle Preditivo por Modelo (MPC).

Formulação do problema

Controle ótimo em tempo contínuo

Uma forma comum em tempo contínuo é:

[ \min_{u(\cdot)} \quad J = \phi(x(T)) + \int_{0}^{T} \ell(x(t),u(t),t),dt ]

sujeito a:

[ \dot{x}(t) = f(x(t),u(t),t), \quad x(0)=x_0 ]

e possivelmente com restrições:

  • Limites de entrada: (u(t) \in \mathcal{U})
  • Restrições de estado: (x(t) \in \mathcal{X}) (por exemplo, limites de junta)
  • Restrições de trajetória: (g(x(t),u(t),t)\le 0)
  • Restrições terminais: (x(T)\in \mathcal{X}_T)

Aqui:

  • (x(t)) é o estado (posição/velocidade, ângulos/taxas, etc.)
  • (u(t)) é o controle (torque, empuxo, ângulo de direção, etc.)
  • (\ell) é um custo instantâneo, (\phi) um custo terminal

Controle ótimo em tempo discreto (comum em robótica)

Em tempo discreto (com passo (k=0,\dots,N)):

[ \min_{{u_k}{k=0}^{N-1}} \quad J = \phi(x_N) + \sum{k=0}^{N-1} \ell(x_k,u_k,k) ]

sujeito a:

[ x_{k+1} = f(x_k,u_k,k), \quad x_0 \text{ dado} ]

com restrições como:

  • (u_k \in \mathcal{U}) (limites de atuadores)
  • (x_k \in \mathcal{X}) (limites de junta/velocidade)
  • evitação de colisão (c(x_k)\ge 0)

Formulações discretas são especialmente práticas porque se mapeiam naturalmente para otimização numérica e controle digital.

Objetivos: o que estamos otimizando?

Objetivos de controle ótimo tipicamente codificam uma mistura de:

  1. Alcançar meta / regulação

    • Alcançar um estado-alvo (x^*) (por exemplo, pêndulo em pé, pose desejada).
    • Uma penalidade quadrática é comum: [ \ell(x,u)= (x-x^*)^\top Q (x-x^*) + u^\top R u ]
  2. Seguimento de trajetória

    • Seguir uma trajetória de referência ((x_k^{ref},u_k^{ref})), frequentemente produzida por um planejador.
    • Útil em locomoção, manipulação, direção autônoma.
  3. Minimização de energia / esforço

    • Penalizar torques grandes ou acelerações altas.
    • Ajuda a produzir movimentos suaves e viáveis.
  4. Controle ótimo em tempo

    • Minimizar o tempo até a meta (frequentemente leva a controles “bang-bang” sob limites).
    • Comum em aeroespacial e robótica agressiva.
  5. Custos conscientes de risco / robustez

    • Penalizar incerteza ou desvios, às vezes via restrições de chance ou formulações robustas.

Em termos de ML, o custo (J) exerce o mesmo papel conceitual que uma função de perda (loss function), mas definida sobre trajetórias inteiras em vez de previsões individuais.

Restrições: física, limites e segurança

Restrições frequentemente são a parte mais difícil do controle ótimo prático:

  • Limites rígidos de atuadores: saturação de torque do motor, limites de empuxo.
  • Restrições de estado: limites de ângulo/velocidade de juntas, manter um UAV acima do solo.
  • Restrições de contato: o pé não deve penetrar o chão; limites do cone de atrito.
  • Desvio de obstáculos: restrições não convexas; frequentemente tratadas via penalidades, restrições de distância com sinal, ou convexificação sequencial.
  • Restrições de dinâmica: a característica definidora—controles não podem ser escolhidos independentemente da evolução do sistema.

Um aprendizado prático fundamental: controle ótimo não é apenas “minimizar custo”, mas “minimizar custo mantendo-se fisicamente e operacionalmente viável”.

Um exemplo concreto: integrador duplo (controle de posição)

Considere uma massa pontual 1D com estado (x_k = [p_k, v_k]^\top) e controle (u_k = a_k) (aceleração):

[ \begin{aligned} p_{k+1} &= p_k + \Delta t , v_k \ v_{k+1} &= v_k + \Delta t , a_k \end{aligned} ]

Meta: alcançar (p=0, v=0) com controle suave:

[ J = \sum_{k=0}^{N-1} \left( x_k^\top Q x_k + u_k^\top R u_k \right) + x_N^\top Q_f x_N ]

Este é um cenário clássico em que o Regulador Linear-Quadrático (Linear Quadratic Regulator, LQR) fornece uma política ótima de realimentação em forma fechada quando a dinâmica é linear e os custos são quadráticos. Veja Regulador Linear-Quadrático (LQR).

Três perspectivas fundamentais de solução

Controle ótimo pode ser abordado a partir de três grandes ângulos teóricos, cada um inspirando algoritmos práticos.

1) Princípio do Máximo de Pontryagin (Pontryagin’s Maximum Principle, PMP) (métodos indiretos)

O Princípio do Máximo de Pontryagin fornece condições necessárias para otimalidade em problemas de tempo contínuo ao introduzir um custoestado (costate) (adjunto) (\lambda(t)), análogo a multiplicadores de Lagrange para restrições de dinâmica.

Defina o Hamiltoniano (Hamiltonian):

[ H(x,u,\lambda,t) = \ell(x,u,t) + \lambda^\top f(x,u,t) ]

O PMP afirma que uma trajetória ótima deve satisfazer:

  • Dinâmica do estado: (\dot{x}^*(t)=\frac{\partial H}{\partial \lambda})
  • Dinâmica do custoestado: (\dot{\lambda}^*(t)=-\frac{\partial H}{\partial x})
  • Condição de controle ótimo: (u^*(t) = \arg\min_{u \in \mathcal{U}} H(x^*,u,\lambda^*,t))
  • Condições terminais baseadas em (\phi(x(T)))

Interpretação: o PMP transforma o problema em um problema de valor de contorno (BVP) acoplado em (x(t)) e (\lambda(t)).

Nota prática: métodos indiretos (métodos de tiro) podem ser muito precisos, mas podem ser sensíveis à inicialização e são mais difíceis de aplicar com restrições complexas.

2) Programação Dinâmica (Dynamic Programming, DP) e a equação HJB

Programação dinâmica expressa controle ótimo por meio da função de valor (value function):

[ V(x,t) = \min_{u(\cdot)} \left[ \phi(x(T)) + \int_t^T \ell(x(\tau),u(\tau),\tau),d\tau \right] ]

Em tempo contínuo, (V) satisfaz a equação de Hamilton–Jacobi–Bellman (HJB):

[ -\frac{\partial V}{\partial t} = \min_{u \in \mathcal{U}} \left[ \ell(x,u,t) + \nabla_x V^\top f(x,u,t) \right] ]

Interpretação: a programação dinâmica produz diretamente a política ótima de realimentação (u^*(x,t)).

Realidade prática: programação dinâmica exata escala mal com a dimensão do estado (“maldição da dimensionalidade”). Essa limitação é uma razão pela qual Aprendizado por Reforço e métodos aproximados de programação dinâmica são estudados: eles visam aproximar funções de valor ou políticas em espaços de alta dimensão.

3) LQR: a solução canônica em forma fechada

Quando:

  • a dinâmica é linear: (x_{k+1}=Ax_k+Bu_k)
  • os custos são quadráticos: (x^\top Q x + u^\top R u)

então a política ótima é uma realimentação linear:

[ u_k^* = -K_k x_k ]

onde (K_k) vem da recursão de Riccati (horizonte finito) ou da equação de Riccati (horizonte infinito). O LQR é amplamente usado porque é:

  • computacionalmente eficiente,
  • estabilizante sob condições padrão,
  • um bloco de construção para métodos não lineares (por exemplo, iLQR/DDP).

Para estimação + controle LQR sob ruído Gaussiano, veja Gaussiano Linear-Quadrático (Linear Quadratic Gaussian, LQG), que combina LQR com um Filtro de Kalman (ou Filtro de Kalman Unscented (Unscented Kalman Filter, UKF) para filtragem não linear).

Da teoria aos algoritmos: como o controle ótimo é resolvido na prática

Sistemas robóticos reais são não lineares e possuem restrições, então tipicamente usamos otimização numérica. Duas famílias amplas dominam:

Métodos indiretos (tiro)

  • Usam as condições do PMP e resolvem para custoestados iniciais desconhecidos (ou controles) de modo que as condições terminais sejam satisfeitas.
  • Prós: alta precisão para problemas suaves.
  • Contras: sensíveis à inicialização; restrições podem ser incômodas.

Métodos diretos (transcrição + PNL)

Métodos diretos discretizam a trajetória e transformam o problema de controle ótimo em um programa não linear (nonlinear program, NLP):

  • Variáveis de decisão: ({x_k,u_k}_{k=0}^{N})
  • Restrições: (x_{k+1}-f(x_k,u_k)=0), além de limites e restrições de trajetória
  • Resolve usando SQP (Sequential Quadratic Programming) ou métodos de ponto interior

Dois estilos populares de transcrição:

  1. Tiro direto: otimizar controles ({u_k}), simular a dinâmica para frente.
  2. Colocação direta: otimizar tanto estados quanto controles, impor a dinâmica em pontos de colocação (frequentemente mais estável para dinâmicas rígidas e restrições).

Esses métodos são os carros-chefe por trás de muitas ferramentas de otimização de trajetória em robótica.

iLQR / DDP: métodos de segunda ordem para otimização de trajetória

Para problemas com dinâmica e custos diferenciáveis (restrições tratadas de forma suave ou via variantes especializadas), o LQR iterativo (iterative LQR, iLQR) e a Programação Dinâmica Diferencial (Differential Dynamic Programming, DDP) repetidamente:

  1. fazem o rollout de uma trajetória,
  2. aproximam localmente a dinâmica (linearizam) e os custos (quadraticizam),
  3. resolvem o subproblema LQR resultante (via recursão de Riccati),
  4. atualizam a sequência de controle.

Isso cria uma conexão estreita entre otimização de trajetória e LQR: iLQR usa LQR como um solucionador local.

Um loop simplificado no estilo iLQR se parece com:

# Pseudocode: iLQR-style trajectory optimization (discrete time)

u = init_controls(N)  # e.g., zeros
for it in range(max_iters):
    x = rollout_dynamics(x0, u)  # forward simulate x_{k+1}=f(x_k,u_k)

    cost = total_cost(x, u)

    # linearize dynamics: x_{k+1} ≈ A_k x_k + B_k u_k + c_k
    A, B, c = linearize_dynamics_along_trajectory(x, u)

    # quadraticize cost: l(x,u) ≈ 0.5 [x;u]^T H_k [x;u] + g_k^T [x;u]
    H, g = quadraticize_cost_along_trajectory(x, u)

    # backward pass: solve local LQR to get gains K_k and feedforward terms d_k
    K, d = riccati_backward_pass(A, B, H, g)

    # forward pass with line search
    alpha = line_search_step()
    u = update_controls(u, K, d, alpha)

Em muitas pilhas de robótica, iLQR/DDP é usado para planejamento local rápido e como um loop interno em MPC.

Por que o controle ótimo fundamenta o MPC

MPC é melhor entendido como controle ótimo repetido:

  1. No tempo (t), medir/estimar o estado atual (\hat{x}_t).
  2. Resolver um problema de controle ótimo de horizonte finito de (\hat{x}_t) até (t+N).
  3. Aplicar o primeiro controle (u_t^*).
  4. Deslocar o horizonte e repetir.

Isso produz comportamento de realimentação mesmo se a otimização subjacente for em malha aberta, porque o replanejamento corrige distúrbios e erros de modelagem.

Principais forças do MPC:

  • Lida naturalmente com sistemas multivariáveis.
  • Pode incorporar restrições explicitamente (entrada, estado, obstáculo).
  • Oferece uma troca (tradeoff) fundamentada entre desempenho e esforço.

Principais desafios:

  • Requer um modelo (mesmo que aproximado).
  • Precisa de otimização em tempo real (latência importa).
  • Restrições não convexas (contatos, obstáculos) podem exigir aproximações.

Para detalhes, veja Controle Preditivo por Modelo (MPC).

Aplicações práticas em robótica e sistemas de IA

Manipulação robótica

  • Computar torques de junta para mover um braço evitando limites de junta e obstáculos.
  • Custos podem penalizar erro do efetuador final e esforço de controle.
  • Restrições podem incluir evitação de colisão e limites de torque.

Locomoção com pernas

  • Planejar posicionamentos dos pés e trajetórias do corpo sob restrições de contato e cones de atrito.
  • Frequentemente resolvido com colocação direta ou convexificação sequencial.
  • Variantes de MPC rodam em dezenas a centenas de Hz para estabilizar a caminhada.

Direção autônoma e drones

  • Seguir faixas/pontos de passagem respeitando aceleração, direção e restrições de segurança.
  • Drones usam MPC para seguir trajetórias agressivas respeitando limites de empuxo e atitude.

Sistemas de energia e operações

  • Controle ótimo aparece em gestão de baterias, controle de HVAC e controle de processos, frequentemente com restrições e objetivos econômicos.

ML e controle ótimo: onde se encontram

  • RL pode ser visto como aprender uma política/função de valor de controle ótimo quando o modelo é desconhecido ou caro.
  • Controle ótimo pode gerar trajetórias especialistas para aprendizado por imitação, ou fornecer um “escudo” de segurança em torno de políticas aprendidas.
  • Otimização de trajetória diferenciável pode ser incorporada em pipelines de aprendizado (por exemplo, aprender funções de custo ou modelos de dinâmica), otimizada com Descida de Gradiente.

Modelagem e estimação: a metade frequentemente ausente

Controle ótimo assume que você tem o estado (x). Sistemas reais usam sensores, então muitas vezes você precisa de um estimador de estado:

Quando você combina um estimador com um controlador ótimo (por exemplo, LQR + filtro de Kalman), você obtém LQG; veja Gaussiano Linear-Quadrático (LQG).

Escolhas de projeto comuns e armadilhas

Escolhendo custos

  • Custos quadráticos são populares porque se comportam bem numericamente e se alinham com aproximações locais no estilo LQR.
  • (Q) e (R) com escalas ruins podem causar resposta lenta ou saturação de atuadores.
  • Custos/restrições terminais importam muito em problemas de horizonte finito (especialmente MPC).

Lidando com restrições

  • Restrições rígidas (por exemplo, ponto interior) dão garantias fortes, mas podem ser mais difíceis de resolver rapidamente.
  • Restrições suaves (termos de penalidade) melhoram a robustez da otimização, mas podem violar restrições se os pesos forem baixos demais.
  • Restrições não convexas (obstáculos, contatos) podem causar mínimos locais; inicialização é crítica.

Descasamento de modelo

  • Se a dinâmica (f) for imprecisa, o plano “ótimo” computado pode ser ruim.
  • O MPC reduz a sensibilidade via replanejamento, mas apenas se o modelo for “bom o suficiente” ao longo do horizonte.

Cômputo em tempo real

  • MPC prático frequentemente depende de warm starts, solucionadores sob medida, dinâmica simplificada e horizontes mais curtos.

Resumo

Controle ótimo formula a tomada de decisão ao longo do tempo como um problema de otimização sobre trajetórias e entradas, restrito por dinâmica e frequentemente por requisitos de segurança/viabilidade. Seus fundamentos teóricos incluem:

  • Princípio do Máximo de Pontryagin (condições necessárias via Hamiltonianos/custoestados),
  • Programação Dinâmica / HJB (realimentação ótima via funções de valor),
  • LQR (controle ótimo em forma fechada para sistemas linear-quadráticos; um bloco de construção chave).

Na prática, controle ótimo é resolvido usando otimização numérica de trajetória (tiro, colocação, SQP, ponto interior) e métodos locais de segunda ordem como iLQR/DDP. Ele motiva diretamente e impulsiona o MPC, uma das estratégias de controle mais usadas na robótica moderna porque combina otimização com realimentação e restrições.

Para aprofundamentos em casos especiais e implementações, veja: