傅里叶级数轨迹
以傅里叶级数表示轨迹的位置,并求导得到速度和加速度的形式。
和作为参数,。其中取任意值均对轨迹无影响,而表示位置的直流分量。
边界条件
对于轨迹来说,以基频的一个周期作为轨迹的时长。起始的时间点为,结束的时间点为。
指定起始和终止的位置,而起点和终点的速度和加速度均为零。
计算不独立的系数
存在3条边界条件,令、、不独立。指定相互独立的和组合,其中。
python代码
def forier_trajectory(s, a, b, f, t) :
n = len(a)
assert(n == len(b))
# 使得起点和终点的位置速度加速度为零的约束条件
an = 0
bn = 0
b0 = s
for i in range(n):
k = i + 1
an -= k * a[i]
bn -= k * k * b[i]
b0 -= b[i]
a.append(an / (n + 1))
b.append(bn / (n + 1) / (n + 1))
b0 -= b[n]
q = b0
dq = 0
ddq = 0
for i in range(n + 1) :
w = 2 * math.pi * (i + 1) * f
q += a[i] * math.sin(w * t)
q += b[i] * math.cos(w * t)
dq += a[i] * math.cos(w * t) * w
dq += - b[i] * math.sin(w * t) * w
ddq += - a[i] * math.sin(w * t) * w * w
ddq += - b[i] * math.cos(w * t) * w * w
return q, dq, ddq
效果
取,令起点和终点的位置为零,多组随机的系数,得到如下结果。