Open Source Robotics

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

Bézier Curve

  • Também chamado: Bezier curve
  • Categoria: Planning & manipulation › Trajectory optimisation
  • Tags: trajectory-optimization, splines, path-planning, geometry, motion-planning

Uma curva polinomial definida por pontos de controle: começa no primeiro, termina no último e é puxada em direção aos intermediários; muito usada para caminhos e trajetórias de robôs e para formas de traços.

Definição

Uma curva de Bézier (Bézier curve) de grau n é uma curva polinomial definida por n + 1 pontos de controle P₀ … Pₙ e por um parâmetro t que vai de 0 a 1: B(t) = Σ C(n, i) (1 − t)ⁿ⁻ⁱ tⁱ Pᵢ, em que os pesos são os polinômios da base de Bernstein. A curva começa em P₀ e termina em Pₙ, e sua tangente em cada extremidade aponta ao longo do primeiro e do último trecho do polígono de controle; os pontos de controle internos dão forma à curva, mas em geral não estão sobre ela. As curvas cúbicas, com quatro pontos de controle, são as mais comuns. A forma foi desenvolvida na indústria automobilística francesa na década de 1960, por Pierre Bézier na Renault e, de forma independente, por Paul de Casteljau na Citroën.

Várias propriedades tornam as curvas de Bézier convenientes em robótica. A curva inteira fica dentro da envoltória convexa de seus pontos de controle, então manter os pontos de controle dentro de uma região convexa livre de obstáculos garante que a curva também fique dentro dela; isso transforma a prevenção de colisões em restrições lineares, como na otimização de trajetórias sobre grafos de conjuntos convexos. A derivada de uma curva de Bézier é outra curva de Bézier de um grau a menos, com pontos de controle n(Pᵢ₊₁ − Pᵢ), de modo que limites de velocidade e aceleração também podem ser impostos, de forma conservadora, sobre pontos de controle. O algoritmo de De Casteljau avalia e divide curvas de forma numericamente estável por interpolação linear repetida.

Há limites a ter em mente. O parâmetro t não é nem o tempo nem o comprimento de arco, então uma curva usada como trajetória ainda precisa de uma parametrização temporal, e passos iguais em t não dão distâncias iguais ao longo da curva. Mover um ponto de controle muda a curva inteira, por isso caminhos longos costumam ser construídos a partir de vários segmentos de grau baixo unidos com condições de continuidade de posição, tangente e curvatura, ou representados com B-splines, que dão controle local. Aumentar o grau para ajustar formas complexas torna as curvas mais difíceis de moldar e numericamente menos bem-comportadas.

Por que importa

As curvas de Bézier oferecem uma representação compacta, suave e fácil de restringir para caminhos e trajetórias, de trajetórias de carros e drones a traços de ferramenta e de pincel. Suas propriedades de envoltória convexa e de derivada transformam limites de segurança e dinâmicos em restrições simples sobre um punhado de pontos, e é por isso que elas aparecem em muitos planejadores baseados em otimização.

Principais aplicações

  • Geração de trajetórias suaves para drones e robôs móveis
  • Suavização de caminhos após planejamento por busca em grafos ou baseado em amostragem
  • Caminhos de troca de faixa e de estacionamento para veículos autônomos
  • Traços de ferramenta, pincel e caneta para robôs que pintam, desenham e dispensam
  • Planejamento de movimento com grafos de conjuntos convexos
  • Trajetórias do pé em balanço para robôs com pernas

Na prática

Um planejador de drone divide uma rota por um armazém em uma cadeia de regiões convexas de espaço livre e atribui um segmento de Bézier a cada região. Ele exige que os pontos de controle de cada segmento fiquem dentro de sua região, liga os últimos pontos de controle de um segmento aos primeiros do seguinte para que posição, velocidade e aceleração coincidam nas junções, e limita os pontos de controle das curvas derivadas para respeitar os limites de velocidade e aceleração. Como todas essas restrições são lineares nos pontos de controle, o problema inteiro é um programa convexo que se resolve rapidamente. Uma etapa final mapeia o parâmetro t de cada segmento para o tempo com uma duração escolhida; encurtar a duração aumenta todas as velocidades e acelerações que o drone precisa atingir.

Equívocos comuns

  • Uma curva de Bézier passa por todos os seus pontos de controle — só o primeiro e o último estão sobre a curva; os internos a puxam sem serem tocados
  • O parâmetro t é o tempo — t é um parâmetro de forma entre 0 e 1; uma escala de tempo separada define velocidades e acelerações
  • Grau mais alto é sempre melhor para caminhos complexos — curvas de grau alto perdem o controle local; cadeias de segmentos de grau baixo ou B-splines costumam ser preferíveis
  • Limitar os pontos de controle dá limites exatos de velocidade — limites sobre os pontos de controle da derivada são suficientes, mas conservadores, então o pico real costuma ficar abaixo do limite

Quem deve saber

  • Engenheiros de planejamento de movimento e de trajetórias
  • Desenvolvedores de veículos autônomos e drones
  • Programadores de robôs de pintura, soldagem e dispensação
  • Engenheiros de locomoção com pernas que projetam trajetórias de balanço

Tecnologias relacionadas

  • B-Splines
  • Algoritmo de De Casteljau (de Casteljau Algorithm)
  • Polinômios de Bernstein (Bernstein Polynomials)
  • NURBS
  • Time-Optimal Path Parameterization
  • Otimização convexa (Convex Optimization)

Termos relacionados

  • Trajectory Planning
  • Minimum-Snap Trajectory
  • Graph of Convex Sets
  • Motion Primitive
  • Elastic band

Projetos relacionados

  • Nav2: ROS 2 navigation stack with path planning and obstacle avoidance for mobile robots
  • ROS Motion Planning: One repo implementing 40+ classic and learning-based robot path planners as ROS plugins
  • 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

Vídeos

  • The Beauty of Bézier Curves: Freya Holmér

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