Open Source Robotics

Una colección curada de proyectos, herramientas y software de robótica de código abierto de alta calidad.

Bézier Curve

  • También llamado: Bezier curve
  • Categoría: Planning & manipulation › Trajectory optimisation
  • Etiquetas: trajectory-optimization, splines, path-planning, geometry, motion-planning

Una curva polinómica definida por puntos de control: empieza en el primero, termina en el último y es atraída hacia los intermedios; muy utilizada para caminos y trayectorias de robots y para formas de trazos.

Definición

Una curva de Bézier (Bézier curve) de grado n es una curva polinómica definida por n + 1 puntos de control P₀ … Pₙ y un parámetro t que va de 0 a 1: B(t) = Σ C(n, i) (1 − t)ⁿ⁻ⁱ tⁱ Pᵢ, donde los pesos son los polinomios de la base de Bernstein. La curva empieza en P₀ y termina en Pₙ, y su tangente en cada extremo apunta a lo largo del primer y del último tramo del polígono de control; los puntos de control interiores dan forma a la curva, pero en general no están sobre ella. Las curvas cúbicas, con cuatro puntos de control, son las más comunes. La forma se desarrolló en la industria automovilística francesa en la década de 1960, por Pierre Bézier en Renault y, de forma independiente, por Paul de Casteljau en Citroën.

Varias propiedades hacen que las curvas de Bézier resulten cómodas en robótica. Toda la curva está dentro de la envolvente convexa de sus puntos de control, de modo que mantener los puntos de control dentro de una región convexa libre de obstáculos garantiza que la curva también se mantiene dentro de ella; esto convierte la evitación de colisiones en restricciones lineales, como en la optimización de trayectorias sobre grafos de conjuntos convexos. La derivada de una curva de Bézier es otra curva de Bézier de un grado menos, con puntos de control n(Pᵢ₊₁ − Pᵢ), por lo que también pueden imponerse límites de velocidad y aceleración, de forma conservadora, sobre los puntos de control. El algoritmo de De Casteljau evalúa y divide curvas de forma numéricamente estable mediante interpolación lineal repetida.

Hay límites que conviene tener en cuenta. El parámetro t no es ni el tiempo ni la longitud de arco, por lo que una curva usada como trayectoria sigue necesitando una parametrización temporal, y pasos iguales en t no dan distancias iguales a lo largo de la curva. Mover un punto de control cambia toda la curva, por lo que los caminos largos suelen construirse a partir de varios segmentos de grado bajo unidos con condiciones de continuidad en posición, tangente y curvatura, o se representan con B-splines, que dan control local. Subir el grado para ajustar formas complejas hace que las curvas sean más difíciles de moldear y se comporten peor numéricamente.

Por qué importa

Las curvas de Bézier ofrecen una representación compacta, suave y fácil de restringir para caminos y trayectorias, desde trayectorias de coches y drones hasta trazos de herramienta y de pincel. Sus propiedades de envolvente convexa y de derivada convierten los límites de seguridad y dinámicos en restricciones sencillas sobre un puñado de puntos, por eso aparecen en muchos planificadores basados en optimización.

Aplicaciones clave

  • Generación de trayectorias suaves para drones y robots móviles
  • Suavizado de caminos tras una planificación por búsqueda en grafos o basada en muestreo
  • Caminos de cambio de carril y de aparcamiento para vehículos autónomos
  • Trazos de herramienta, pincel y bolígrafo para robots que pintan, dibujan y dispensan
  • Planificación de movimiento con grafos de conjuntos convexos
  • Trayectorias del pie en balanceo para robots con patas

En la práctica

Un planificador de drones divide una ruta por un almacén en una cadena de regiones convexas de espacio libre y asigna un segmento de Bézier a cada región. Exige que los puntos de control de cada segmento estén dentro de su región, enlaza los últimos puntos de control de un segmento con los primeros del siguiente para que la posición, la velocidad y la aceleración coincidan en las uniones, y acota los puntos de control de las curvas derivadas para respetar los límites de velocidad y aceleración. Como todas estas restricciones son lineales en los puntos de control, el problema completo es un programa convexo que se resuelve rápidamente. Un último paso asigna el parámetro t de cada segmento al tiempo con una duración elegida; acortar la duración aumenta todas las velocidades y aceleraciones que el dron debe alcanzar.

Ideas erróneas comunes

  • Una curva de Bézier pasa por todos sus puntos de control — solo el primero y el último están sobre la curva; los interiores la atraen sin que la curva los toque
  • El parámetro t es el tiempo — t es un parámetro de forma entre 0 y 1; un escalado temporal aparte fija velocidades y aceleraciones
  • Un grado mayor siempre es mejor para caminos complejos — las curvas de grado alto pierden el control local; suelen ser preferibles cadenas de segmentos de grado bajo o B-splines
  • Acotar los puntos de control da límites de velocidad exactos — las cotas sobre los puntos de control de la derivada son suficientes pero conservadoras, por lo que el pico real suele quedar por debajo de la cota

Quién debería saberlo

  • Ingenieros de planificación de movimiento y de trayectorias
  • Desarrolladores de vehículos autónomos y drones
  • Programadores de robots de pintura, soldadura y dispensado
  • Ingenieros de locomoción con patas que diseñan trayectorias de balanceo

Tecnologías relacionadas

  • B-Splines
  • Algoritmo de De Casteljau (de Casteljau Algorithm)
  • Polinomios de Bernstein (Bernstein Polynomials)
  • NURBS
  • Time-Optimal Path Parameterization
  • Optimización convexa (Convex Optimization)

Términos relacionados

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

Proyectos 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 sitio web requiere JavaScript. Por favor, habilite JavaScript para explorar nuestros proyectos de robótica.