一般来说控制机器人(or Motor)运动一个轨迹需要经过这些步骤:
- 操作空间轨迹规划(直线和圆弧就比较简单了,如果是未知的轨迹例如壁障,可通过概率路标-sample based,快速扩展随机树-RRT,tree based等算法生成的壁障轨迹)
- 以时间(或者距离,误差精度and其他)为参数,获得轨迹上的MultiPoints,或者生成pvt数据,再通过机器人逆运动学和雅克比求得关节空间的位置和速度—关节空间pvt数据。
- 重要的一步,generate reference inputs to motion control system:如果是PTP运动,则在关节空间通过梯形或者 double S 规划获得需要运动的轮廓轨迹;如果是连续轨迹运动,则通过多个点的样条插值,生成光滑的轨迹(cubic spline—加速度连续)。通过来说生成光滑的轨迹一般会结合拟合和插值两种算法(因为通过CAM软件或者其他软件生成的轨迹一般不会直接用来输出,需要通过拟合或者插值算法来使得轨迹的速度和加速度满足约束,否则会对机器造成很大的震动等。)。
- 再通过 pid 或者 piv 算法跟踪生成的轮廓轨迹
在工业应用上,一般走个直线或者圆弧就基本上能处理大多数的轨迹了,涉及到未知空间的轨迹规划还是应用比较少,所以操作空间一般来说轨迹比较简单,就不介绍了。
这里主要简单介绍一下不同轨迹生成的算法区别:
PTP
梯形 ( 即 Linear Segments with Parabolic Blends —LSPB ):
优点:就是简单粗暴,能够很方便计算出速度、加速度是否超限。
缺点:加速度不连续
Double S:
优点:优点多多滴
缺点:计算复杂,存在无解的情况。
MultiPoint
起点和终点速度不定(v0=0.1, v1=0.2),为了速度和加速度不超限,需要调整同步时间。
速度连续的:
加速度连续的 (端点处都为0):
Want more? This will give you an ans:
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjEgeaQhqfOAhWVHsAKHTtBBVoQFggcMAA&url=http%3A%2F%2Fwww.d.umn.edu%2F~rlindek1%2FME4135_11%2FRobotic%2520Path%2520Control%2520Techniques_F12.pptx&usg=AFQjCNG2bLsJBsQZshOknQC8jYm1ON7gBg&sig2=4y-eKYjmzXkg8nnDZws-XA&bvm=bv.128617741,d.eWE