前言
在四足机器人的研究中,有一个很关键的问题,就是如何减少足端在触地瞬间的冲击,避免把机器人把自己给蹬倒了?这时候就需要一个合理的足端轨迹规划。本篇将会介绍几种足端轨迹。
本文将对四足机器人的足端轨迹进行规划。将数学中的复合摆线和多项式曲线引入到足端轨迹的规划中,根据零冲击原则[2],规划出 3 条满足要求的足端轨迹,包括:
- 复合摆线轨迹
- 八次多项式轨迹
- 分段五次多项式轨迹
本篇先介绍 – 八次多项式轨迹
一、多项式曲线拟合
众所周知,过任意不同的两点可以确定一条直线。即已知:
可求得用两点式表示直线方程:
该式可在带入坐标点后化简得到其点斜式形式,也就是一条一次的多项式,这里我们可以称已知的两个点坐标为方程的约束:
2、二次多项式
加入给定任意不同的三个点,我们能否确定一条曲线通过这些点,答案是可以的。已知
根据初高中的知识,我们知道通过这三点的曲线是一条抛物线,因此我们可以假设该曲线方程为
将点坐标带入当成即可求解得到该二次方程,对于该方程,存在3个位置点的约束。
3、多次多项式
将上述推广到一般情况,对于给定n个不同坐标点,我们可以确定一条n-1次多项式的曲线,我们可以利用该特性来设计一种四足机器人足端轨迹方程,即在满足约束条件下的曲线方程。
二、足端轨迹约束方程
为达到理想的步态,足端轨迹规划需要满足:
- ① 行进平稳、协调,无明显的上下波动、左右摇晃和前后冲击;
- ② 各关节没有较大冲击,特别是摆动相抬腿和落地瞬间实现零冲击抬腿和落地软
着陆; - ③ 摆动腿跨步迅速,足端轨迹圆滑,关节速度和加速度平滑连续无畸点;
- ④ 避免足端与地面接触时产生滑动,无摆动腿拖地现象。
规定在0-T/2 ,足端处于摆动相,在T/2-T ,足端处于支撑相。设水平方向为 X 方向,竖直方向为 Y 方向,步长为S。根据四足机器人足端运动位置的要求,可确定足端轨迹在水平方向(X 方向)和竖直方向(Y 方向)的位移方程有以下约束。
1、水平x方向
位置约束:初始位置为0,摆动相结束位置为0,支撑相结束位置为0
速度约束
加速度约束
2、竖直y方向
我们设摆动相周期为T0,带入以下约束方程,
可得
其一阶导二阶导分别为:
设置摆动相周期为1,步长100, 抬腿高度30,其位置,速度,加速度曲线如下:
2、Y方向
竖直方向上有9个约束,因次Y方向上的轨迹函数为8次多项式:
带入约束, 这里手算比较复杂,我们用sympy进行求解:
from sympy import *
A, B, C, D, E, F, T, H = symbols('A B C D E F T H')
f1 = A*T**8 + B*T**7 + C*T**6 + D*T**5 + E*T**4 + F*T**3
f2 = 8*A*T**7 + 7*B*T**6 + 6*C*T**5 + 5*D*T**4 + 4*E*T**3 + 3*F*T**2
f3 = 56*A*T**6 + 42*B*T**5 + 30*C*T**4 + 20*D*T**3 + 12*E*T**2 + 6*F*T
f4 = -H + A*(T**8/256) + B*(T**7/128) + C*(T/2)**6 + D*(T/2)**5 + E*(T/2)**4 + F*(T/2)**3
f5 = 8*A*(T/2)**7 + 7*B*(T/2)**6 + 6*C*(T/2)**5 + 5*D*(T/2)**4 + 4*E*(T/2)**3 + 3*F*(T/2)**2
f6 = 56*A*(T/2)**6 + 42*B*(T/2)**5 + 30*C*(T/2)**4 + 20*D*(T/2)**3 + 12*E*(T/2)**2 + 6*F*(T/2)
result = solve([f1, f2, f3, f4, f5, f6], [A, B, C, D, E, F])
print(result)
输出结果为:
{A: -768*H/T**8, B: 3072*H/T**7, C: -4864*H/T**6, D: 3840*H/T**5, E: -1536*H/T**4, F: 256*H/T**3}
数学形式为:
其一阶导跟二阶导分别为:
设置摆动相周期为1,步长100, 抬腿高度30,其位置,速度,加速度曲线如下:
轨迹图像: