1.引言
看过UR机器人脚本手册的都应该知道有这样一个直线插补函数:
interpolate_pose(p_from, p_to, alpha);
参数:p_from表示初始pose,p_to表示目标pose,alpha通常为0-1之间的浮点数,如果alpha=0,则函数插值返回的pose是p_from;如果alpha=1,则函数插值返回的pose是p_to;如果alpha<0,则函数插值返回的pose是这条直线在p_from之前的部分;如果alpha>1,则函数插值返回的pose是这条直线在p_to之后的部分;
返回值:返回一个插值之后的pose;
这个函数在实际应用的过程中表现非常好,很少出现奇异点和不可达的点的问题。那么这个函数具体是如何实现的呢?
也许有人要说了,直线插补太简单了,不屑一顾。但是我看过许多国内机器人教材,很少能把机器人轨迹是如何生成的这一过程讲清楚,或者连一个简单的点到点直线插补全过程都写得含糊不清。
以前我也觉得这样简单的算法没什么好研究的,随便找本书或论文看看就知道了,但当我真正要在机器人上实现这一算法时,遇到了各种各样的问题,于是我就怀疑是否真的了解了机器人生成轨迹的方法,直到我看完这本书
本文深入探讨UR机器人直线插补函数的工作原理,引用《Modern Robotics》阐述路径(Path)与时间尺度(Time Scaling)的概念。点到点的直线轨迹分为关节空间和工作空间两种情况,详细讲解了直线路径的数学表达式和时间尺度的三次多项式及梯形速度曲线方法。通过路径与时间的分离,实现了动态性能良好的轨迹规划。
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



