我想编写一个轨迹规划器,比如说一个机器人,我可以将加速命令传递给机器人,机器人可以在一维中移动。规划器的结果现在是一个带有加速度的向量,例如 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 的“超调”和第一个评论中提到的摆动行为。