Open Source Robotics

Uma coleção selecionada de projetos, ferramentas e software de robótica de código aberto de alta qualidade.

Direct Collocation

  • Também chamado: collocation, direct transcription
  • Categoria: Planning & manipulation › Trajectory optimisation
  • Tags: trajectory-optimization, optimal-control, nonlinear-programming, motion-planning, dynamics

Um método de otimização de trajetória que trata estados e controles em instantes amostrados como variáveis e impõe a dinâmica como restrições entre amostras vizinhas.

Definição

Colocação direta (direct collocation) é uma forma de transformar um problema de controle ótimo, encontrar as entradas de controle ao longo do tempo que levam um sistema do início à meta com o menor custo, em um programa não linear finito que um solver padrão consegue resolver. A trajetória é dividida em um número de instantes de tempo, chamados pontos de nó (knot points). Tanto o estado quanto a entrada de controle em cada ponto de nó se tornam variáveis de decisão, e a dinâmica do sistema é imposta como restrições de igualdade, chamadas restrições de defeito (defect constraints), que exigem que estados vizinhos sejam consistentes com uma regra de integração, como a regra trapezoidal ou a de Hermite–Simpson. Os métodos pseudoespectrais são uma família relacionada que usa polinômios de ordem mais alta sobre a trajetória inteira.

Isso difere dos métodos de tiro (shooting), nos quais apenas os controles são variáveis de decisão e os estados são obtidos simulando a dinâmica para frente. A colocação produz um problema maior, mas muito esparso, resolvido com solvers de programação não linear esparsa como IPOPT ou SNOPT. Suas vantagens são que limites sobre os estados, como amplitudes das juntas, distância de obstáculos ou condições de contato, são fáceis de impor diretamente; que o solver pode partir de uma estimativa que não é fisicamente consistente, como uma linha reta atravessando os obstáculos; e que ele tende a se comportar melhor que o tiro simples em horizontes longos e sistemas instáveis.

Uma consequência dessa estrutura é que as iterações intermediárias não precisam obedecer à dinâmica: o solver pode violar as restrições de defeito no início e só as satisfaz na convergência. Formulações que levam as restrições de dinâmica ou de colisão para termos de penalidade tornam isso explícito, deixando a solução passar por regiões inviáveis antes que a penalidade a traga de volta. Essa ideia foi emprestada no aprendizado robótico, por exemplo deixando primeiro um robô simulado atravessar obstáculos com uma penalidade e depois impondo colisões rígidas. Como a maior parte da otimização de trajetória, a colocação direta encontra ótimos locais, então o resultado depende da estimativa inicial.

Por que importa

A colocação direta é um dos principais burros de carga da otimização de trajetória para robôs com pernas, drones e braços robóticos, porque lida bem com restrições e parte facilmente de estimativas grosseiras. Entendê-la também explica uma ideia de projeto útil no aprendizado robótico: relaxar a física primeiro e impô-la gradualmente.

Principais aplicações

  • Otimização de trajetória para saltos, cambalhotas e marchas de robôs com pernas
  • Trajetórias de tempo ótimo e de energia ótima para braços robóticos e drones
  • Planejamento de trajetórias de busca e cobertura para robôs móveis
  • Geração de movimentos de referência para políticas aprendidas e controladores de rastreamento
  • Projeto de trajetórias de espaçonaves e aeronaves

Na prática

Um engenheiro que planeja um salto para um robô com pernas no Drake ou no CasADi monta um problema com, digamos, um número fixo de pontos de nó ao longo do salto, cada um contendo o estado do robô e os torques de junta. As restrições de defeito ligam nós consecutivos pela dinâmica do robô, restrições extras mantêm os torques dentro dos limites dos motores e os pés no chão durante o apoio, e o custo penaliza o esforço e o erro final. Ele inicializa com uma interpolação simples entre as poses de partida e de aterrissagem, que viola a dinâmica, e deixa o IPOPT encontrar uma trajetória consistente. Se o solver falha, ele adiciona pontos de nó, escala as variáveis ou melhora a estimativa inicial. A trajetória resultante é então rastreada por um controlador de realimentação ou usada como referência para uma política aprendida.

Equívocos comuns

  • Toda iteração do solver é uma trajetória fisicamente válida — a dinâmica só é satisfeita na convergência; soluções intermediárias podem violá-la
  • A colocação direta encontra a melhor trajetória global — ela resolve localmente um problema não convexo, então estimativas iniciais diferentes podem dar respostas diferentes
  • Colocação e tiro resolvem problemas diferentes — são duas transcrições do mesmo problema de controle ótimo, com comportamento numérico diferente

Quem deve saber

  • Engenheiros de otimização de trajetória e planejamento de movimento
  • Desenvolvedores de controle de robôs com pernas e drones
  • Pesquisadores de aprendizado robótico que usam movimentos de referência otimizados
  • Estudantes de robótica que estudam controle ótimo

Tecnologias relacionadas

  • Drake
  • CasADi
  • IPOPT
  • SNOPT
  • Tiro múltiplo (Multiple Shooting)
  • Métodos pseudoespectrais (Pseudospectral Methods)

Termos relacionados

  • Trajectory Planning
  • Model Predictive Control
  • Differential Flatness
  • Motion Planning
  • Curriculum Learning
  • Ergodic Coverage

Projetos relacionados

  • Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design
  • OMPL: Sampling-based motion planning library powering MoveIt and countless robotics applications
  • MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
  • PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
  • mink: Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
  • Ruckig: Real-time jerk-constrained time-optimal trajectory generation for robots and machines

Este site requer JavaScript. Por favor, habilite o JavaScript para explorar nossos projetos de robótica.