Bézier Curve
- 別名: Bezier curve
- カテゴリ: Planning & manipulation › Trajectory optimisation
- タグ: trajectory-optimization, splines, path-planning, geometry, motion-planning
制御点によって定義される多項式曲線。最初の制御点で始まり、最後の制御点で終わり、その間の制御点に引き寄せられる。ロボットの経路、軌道、ストロークの形状に広く使われる。
定義
n 次の ベジェ曲線(Bézier curve)は、n + 1 個の制御点 P₀ … Pₙ と、0 から 1 まで動くパラメータ t によって定義される多項式曲線である:B(t) = Σ C(n, i) (1 − t)ⁿ⁻ⁱ tⁱ Pᵢ。ここで重みは Bernstein 基底多項式である。曲線は P₀ で始まり Pₙ で終わり、両端での接線は制御多角形の最初と最後の辺の方向を向く。内側の制御点は曲線の形を決めるが、一般に曲線上にはない。4 つの制御点をもつ 3 次曲線が最もよく使われる。この形式は 1960 年代のフランスの自動車産業で、ルノーの Pierre Bézier と、それとは独立にシトロエンの Paul de Casteljau によって開発された。
いくつかの性質により、ベジェ曲線はロボティクスで扱いやすい。曲線全体は制御点の凸包の内側にあるので、制御点を障害物のない凸領域の内側に保てば、曲線もその内側にとどまることが保証される。これにより衝突回避が線形制約になり、凸集合グラフ上の軌道最適化はこれを利用している。ベジェ曲線の導関数は次数が 1 つ低い別の ベジェ曲線であり、その制御点は n(Pᵢ₊₁ − Pᵢ) となる。そのため速度と加速度の上限も、保守的ではあるが制御点に課すことができる。de Casteljau のアルゴリズムは、線形補間を繰り返すことで、数値的に安定な方法で曲線の評価と分割を行う。
注意すべき限界もある。パラメータ t は時間でも弧長でもないので、軌道として使う曲線にはやはり時間パラメータ化が必要であり、t を等間隔に刻んでも曲線上で等距離にはならない。1 つの制御点を動かすと曲線全体が変わるので、長い経路は通常、位置、接線、曲率に連続性条件を課してつないだ複数の低次セグメントで構成するか、局所的な制御ができる B スプラインで表現する。複雑な形状に合わせるために次数を上げると、曲線の形を整えにくくなり、数値的な性質も悪くなる。
重要な理由
ベジェ曲線は、自動車やドローンの軌道から工具や筆のストロークまで、経路や軌道をコンパクトで滑らかに、かつ制約を課しやすい形で表現する。凸包の性質と導関数の性質によって、安全上の制限や動的な制限を少数の点に対する単純な制約に変えられるため、多くの最適化ベースのプランナーで使われている。
主な用途
- ドローンや移動ロボットのための滑らかな軌道生成
- グラフ探索やサンプリングベースの計画の後の経路平滑化
- 自動運転車の車線変更と駐車の経路
- 描画、作画、ディスペンシングを行うロボットの工具、筆、ペンのストローク
- 凸集合グラフを用いたモーションプランニング
- 脚ロボットの遊脚軌道
実際の使われ方
あるドローンのプランナーは、倉庫を通るルートを障害物のない凸領域の連鎖に分割し、各領域に Bézier セグメントを 1 本ずつ割り当てる。各セグメントの制御点がその領域の内側にあることを要求し、あるセグメントの最後の制御点群を次のセグメントの最初の制御点群と結びつけて、つなぎ目で位置、速度、加速度が一致するようにし、さらに導関数曲線の制御点に上限を課して速度と加速度の制限を守らせる。これらの制約はすべて制御点に対して線形なので、問題全体は高速に解ける凸計画になる。最後のステップで、選んだ所要時間に基づいて各セグメントのパラメータ t を時間に対応付ける。所要時間を短くすると、ドローンが到達しなければならないすべての速度と加速度が比例して大きくなる。
よくある誤解
- ベジェ曲線はすべての制御点を通る — 曲線上にあるのは最初と最後の制御点だけであり、内側の制御点は曲線を引き寄せるが、曲線はそこに触れない
- パラメータ t は時間である — t は 0 から 1 の間の形状パラメータであり、速度と加速度は別の時間スケーリングで決まる
- 複雑な経路には次数が高いほど常によい — 高次の曲線は局所的な制御を失うので、低次セグメントの連鎖や B スプラインのほうが通常は望ましい
- 制御点に上限を課せば正確な速度制限が得られる — 導関数の制御点に対する上限は十分条件ではあるが保守的なので、実際のピークは通常その上限を下回る
知っておくべき人
- 動作計画と軌道計画のエンジニア
- 自動運転車とドローンの開発者
- 塗装、溶接、ディスペンシングのロボットプログラマ
- 遊脚軌道を設計する脚式ロコモーションのエンジニア
関連技術
- B スプライン(B-Splines)
- de Casteljau のアルゴリズム(de Casteljau Algorithm)
- Bernstein 多項式(Bernstein Polynomials)
- NURBS
- 時間最適経路パラメータ化(Time-Optimal Path Parameterization)
- 凸最適化(Convex Optimization)
関連用語
関連プロジェクト
- 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
動画
- The Beauty of Bézier Curves: Freya Holmér