PX4(1.11.3正式版本)中与S曲线相关的函数库为"VelocitySmoothing.hpp"和“VelocitySmoothing.cpp”,以及内部测试文件“test_velocity_smoothing”
标题图片摘自多旋翼的加加速度限制型轨迹 | PX4 自动驾驶用户指南,他画的好看...
头文件的注释也非常形象:
其中两个重要函数:
void updateDurationsMinimizeTotalTime(); 根据最短时间规划S曲线
void updateDurationsGivenTotalTime(float T123); 根据给定时间规划S曲线
本文针对最短时间,介绍S曲线规划原理。
个人认为S曲线原理简单,但是十分开放,根据不同的输入、不同的约束、不同的输出,即可设计各种各样的曲线。在实际应用中,需要明确需求和所有约束条件,不然可能会产生非期望的结果。PX4中就是根据规划时间最小化规划S曲线。在推导完公式之后,即可转化为最小化问题,下面直接进行公式推导。
下文变量均自带符号。
加加速度:
加速度:
速度:
T1时刻:
加加速度:
加速度:
速度:
T2时刻:
加加速度:
加速度:
速度:
T3时刻:
目标:已知当前状态和目标速度,如何规划时间最短S曲线路径达到目标设定
总时间:
化简之后:
求导、求极值点等等,可知
评论(0)
您还未登录,请登录后发表或查看评论