Minimum-Snap Trajectory
- 又稱: minimum snap trajectory, min-snap
- 類別: Planning & manipulation › Trajectory optimisation
- 標籤: trajectory-generation, quadrotors, aerial-robotics, motion-planning, optimization
藉由最小化 snap(位置的四階導數)平方的積分而得到、通過各航點的平滑路徑;是規劃四旋翼飛行的標準做法。
定義
最小 snap 軌跡(minimum-snap trajectory)依序通過一連串航點,同時使位置四階時間導數(稱為 snap)平方的積分最小。每個座標通常以分段多項式表示,每對相鄰航點之間一段,並在接點處強制位置及其各階導數連續。由於成本是多項式係數的二次式,而航點條件與連續性條件都是線性的,在各段時長固定時,求解係數就是一個二次規劃問題,在無約束的情況下還能以封閉形式求解。
這個方法與四旋翼密切相關。Mellinger 與 Kumar(2011)證明四旋翼是微分平坦的,以位置與偏航角作為平坦輸出:完整的狀態與輸入都能由這些輸出及其導數算出。推力的方向與大小由加速度決定,機體角速度由 jerk 決定,而角加速度,連帶馬達扭矩,則由 snap 決定。因此,最小化 snap 能讓所需的馬達命令變化維持小而平滑,使軌跡更容易追蹤。同樣的想法用在較低階上,就得到長久以來用於機器手臂運動的最小 jerk 軌跡,以及最小加速度路徑。
多項式求解只涵蓋問題的一部分。各段時長必須另外選定,通常透過外層最佳化,或者透過縮放時間,直到滿足速度、推力與機體角速度限制為止。解會通過各航點,但本身並不會避開航點之間的障礙物,因此規劃器要不是在路徑切過轉角的地方加入中間航點,就是把每一段限制在安全的凸走廊內。最小 snap 軌跡是平滑的,但並非時間最佳,這也是競速系統還會使用以取樣為基礎或以最佳化為基礎的時間最佳規劃器的原因。
為何重要
最小 snap 軌跡生成是把航點轉換成多旋翼可飛行參考軌跡的預設方法。它速度快、原理清楚,並能透過微分平坦性乾淨地對應到四旋翼動力學,因此出現在研究用自動駕駛儀、無人機競速與空中巡檢中。
主要應用
- 四旋翼航點飛行與激進機動
- 無人機競速的參考軌跡
- 空中巡檢與空拍路徑
- 機器手臂的平滑關節空間或笛卡兒空間軌跡(最小 jerk 變體)
- 在幾何路徑規劃器之後進行軌跡精修
實際應用
一支無人機競速團隊手上有一張賽道各個門位置的地圖。他們在每個門的中心放一個航點,把偏航角設為朝向下一個門,並在 x、y、z 上擬合一條最小 snap 分段多項式,在每個門處確保直到 snap 的連續性。初始時間分配由距離與標稱速度得出。接著,他們依據透過平坦性映射算出的速度、總推力與機體角速度限制檢查軌跡,並拉長或縮短各段時間,直到每項限制都在留有裕度的情況下成立。得到的軌跡以控制器頻率取樣,交給幾何追蹤控制器,同一條參考軌跡也用來為學習式感知策略產生標籤。
常見誤解
- 最小 snap 是時間最佳的 — 它在各段時間固定的前提下最小化平滑性成本,而不是飛行時間
- 因為航點沒有碰撞,所以軌跡會避開障礙物 — 除非加入走廊約束,航點之間的軌跡段仍可能切過轉角
- 致動器限制會自動處理 — 速度、推力與機體角速度限制必須透過時間分配或約束來檢查並強制滿足
- 最小 snap 等同於微分平坦性 — 平坦性是飛行器模型的性質;最小 snap 是用來規劃平坦輸出的其中一種成本
誰需要了解
- 空中機器人與無人機自動駕駛儀工程師
- 運動規劃研究人員
- 無人機競速與巡檢開發者
- 研讀軌跡生成的控制領域學生
相關技術
- 二次規劃(Quadratic Programming)
- 分段多項式樣條(Piecewise Polynomial Splines)
- PX4
- SE(3) 上的幾何追蹤控制(Geometric Tracking Control on SE(3))
- 安全飛行走廊(Safe Flight Corridors)
相關術語
- Differential Flatness
- Trajectory Planning
- UAV
- Direct Collocation
- Kinodynamic Planning
- Model Predictive Control
相關專案
- Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design
- GTSAM: Factor-graph optimization library powering many modern SLAM backends
- 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
- PyPose: PyTorch library for differentiable robotics with deep learning and Lie group optimization