轨迹规划:多项式作为通用的、可积的近似函数?

计算科学 优化 多项式
2021-12-12 04:03:44

我想编写一个轨迹规划器,比如说一个机器人,我可以将加速命令传递给机器人,机器人可以在一维中移动。规划器的结果现在是一个带有加速度的向量,例如 10 个加速度,并且由于我将加速度设置为频率 2,这足以在接下来的 5 秒内引导机器人。

轨迹应该以(a)最小化加加速度和(b)尽可能接近所需速度的方式进行规划。所以我知道我的适应度函数是由什么组成的:加总平方和差平方 v,v_desired。

所以我想尽量减少混蛋。我想我搜索一个 jerk profile(即 10 个离散时间的 jerk 值,如 0.5、1、...、5,与上面的示例一致),将其整合两次,这样我也有速度配置文件,并应用我的健身功能。使用粒子群优化器搜索 jerk 轮廓。好消息是,0 已经是配置文件的良好初始化。

然后我想到了用多项式逼近jerk profile,而不是直接搜索profile,而是搜索多项式参数。这样,集成将是微不足道的,一切都会稳定流畅,而且我可以在任何时候对点进行采样。至少我认为这是个好主意。

所以我的问题是:多项式是一个很好的工具吗?我不敢相信估计例如 5 个参数(并在例如 30 个位置评估生成的多项式)会比直接搜索 30 个点(混蛋)产生更好的结果。我过去几个小时的实验表明,曲线很快开始看起来像波浪,这不是你想要的轨迹,尤其是速度剖面......

我用“估计函数参数而不是样本点”的方法不好吗?多项式是坏的吗?是否有更好的功能,易于扩展参数数量并且易于集成?

我希望我的问题是可以理解的,如果不是,请投诉,我会尝试更具体。

更新

下图显示了我的第一种方法的结果,为 jerk 的 4 次多项式“优化”了参数。这与我的一维世界中的 a、v 和 s 的正确初始值相结合。初始 v 设置为 5.0,所需 v 为 2.0,初始加速度为 2.0。我希望速度首先增加(由初始加速度引起),然后缓慢减小到 2。在第 10 点,您可以看到 v 的“超调”和第一个评论中提到的摆动行为。

尝试轨迹

2个回答

好的,我今天做了很多实验,使用样条线看起来很有希望。虽然设置样条曲线需要更多的计算工作(矩阵求逆等等,但我使用了 Eigen3),但集成相当简单。使用多项式表示,我可以在分析上做很多事情,例如,速度偏差的成本将成为多项式的差异(分段又名样条曲线和零度常数之一),这正是获取成本,无需在离散点抽取样本并汇总。不知道我是否需要那个,但至少这是一次很好的训练。

然而,这是我的优化器提出的第一个结果,我优化了样条线的支持点(本例中为 5,只是巧合,它也是水平轴上选择的时间范围)。

在此处输入图像描述

与第一个具有高次多项式的版本相比,这看起来很有希望!

如果您通过多项式在区间上逼近一个函数,并且您可以自由选择x逼近点,则推荐的方法是使用高斯正交点和相应的多项式基。一旦获得近似值,您当然可以在区间的任何地方自由评估它。所以将切比雪夫多项式与切比雪夫节点一起使用这样您就不会看到任何振荡,并且您可以轻松地在整个域上集成/区分解决方案。