机器人学——3.4-轨迹规划

news/2024/12/3 7:45:38/

机器人学中最常见的要求之一,是把机器人末端执行器平滑地从位姿 A A A 移动至位姿 B B B。基于之前讨论过的轨迹的内容,我们将讨论两种方法来产生轨迹:在关节空间中的直线和在笛卡儿空间中的直线。这两种直线分别被称为关节空间运动和笛卡儿空间运动。

关节空间运动

我们考虑末端执行器在两个笛卡儿位姿之间移动:

>> T1 = transl(0.4, 0.2, 0) * trotx(pi);
>> T2 = transl(0.4, -0.2, 0) * trotx(pi/2);

它们位于 x y xy xy 平面内,且末端执行器指向朝下。与这两个位姿对应的初始和最终关节坐标向量为

>> q1 = p560.ikine6s(T1);
>> q2 = p560.ikine6s(T2);

而我们要求整个运动发生在 2 2 2 秒时间内,采样时间间隔为 50 50 50 微秒。

>> t = [0:0.05:2]';

通过在q1q2两个位形之间的平滑插值就能得到一个关节空间轨迹。我们可以用之前的标量插补函数tpolylspb,再配合多轴驱动函数mtraj一起实现:

>> q = mtraj(@tpoly, q1, q2, t);

>> q = mtraj(@lspb, q1, q2, t);

其结果是得到一个 50 × 6 50×6 50×6 阶的矩阵q,其中每行对应一个采样 time step,每列对应一个关节值。但在这里及以后,我们将使用jtraj这个更方便的函数:

>> q = jtraj(q1, q2, t);

其作用相当于具有tpoly插值的mtraj,但它对多轴情况进行了优化,而且还允许使用额外的参数来设置初始和最终速度。对于mtraj+tpoly,最后一个参数可以是一个时间向量,如示例,或者是一个指定采样时间步数的整数。

我们可以通过可选的输出参数,获得随时间变化的关节速度和加速度向量:

>> [q,qd,qdd] = jtraj(q1, q2, t);

SerialLink类中的jtraj方法为上述步骤提供了一个更简洁的表达方式:

>> q = p560.jtraj(T1, T2, t);

所得轨迹可以绘制出动画进行观察:

>> p560.plot(q)

我们也可以绘制出关节角的图形,例如所有随时间变化的关节角:

>> plot(t, q)

在这里插入图片描述
关节坐标轨迹虽然是平滑的,但我们并不知道机器人末端执行器在笛卡儿空间中将如何移动。然而通过将正运动学作用于关节坐标轨迹,可以很容易地确定其效果

>> T = p560.fkine(q);

其结果得到一个三维的笛卡儿轨迹。该轨迹的位移部分为

>> p = transl(T);
>> about(p)
p [double] : 41x3 (984 bytes)

其中,每一行代表一个采样时间上的末端执行器位置向量。绘制出的各坐标分量随时间变化的图形如图所示。
在这里插入图片描述
我们也可以绘制出末端执行器在 x y xy xy 平面内的轨迹:

>> plot(p(:,1), p(:,2))

在这里插入图片描述
显然,这条轨迹不是一条直线。这是预料之中的,因为我们仅仅指定了两个端点的笛卡儿坐标。当机器人在运动过程中旋转其腰部关节时,末端执行器的运动轨迹会自然地划出一个圆弧。在实际工作中,这可能会导致机器人和附近物体之间发生碰撞,即使它们不在位姿A和B之间的路径上。

我们还可以绘制出末端执行器的姿态随时间变化的图形(横滚-俯仰-偏航角形式):

>> plot(t, tr2rpy(T))

在这里插入图片描述
注意初始横滚角显示为 − π -\pi π,但在下一个采样时间步它变为 π \pi π。这是一个有限精度算法的产物,且这两个角度在圆周上是等价的。

我们也可以在 Simulink 中实现上述示例:

>> mdl_puma560
>> sl_jspace

其框图模型如图所示。jtraj模块的参数是关节坐标的初始值和最终值,以及运动的持续时间(Simulink 的积分时间需要设置为等于运动段时间,设置可以通过Simulation菜单或通过 MATLAB 命令>> sim('sl_jspace','10);)。平滑变化的关节角被分成两路传送,一路到plot模块中,该模块能在一个单独的窗口中显示机器人运动的动画;另一路到fkine模块用于计算机器人的正运动学。plotfkine两个模块有一个共同的SerialLink对象参数,本示例中该参数为p560。使用T2xyz模块能够将末端执行器位置中的笛卡儿位置提取出来,它类似于工具箱函数translXY Graph模块可以绘制随x变化的y
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

笛卡尔运动

前面是在位形空间中做直线运动而笛卡尔空间不为直线,现在我们讨论在笛卡尔空间中的直线运动。可以通过使用工具箱函数ctraj来实现,这个函数之前已经介绍过。它的用法与jtraj很相似:

>> Ts = ctraj(T1, T2, length(t));

其输入参数是初始和最后的位姿,以及时间步数,它返回的是一个三维矩阵形式的轨迹。
对于前面的关节空间运动的例子,我们将提取并绘制其位置分量:

>> plot(t, transl(Ts))

在这里插入图片描述
以及姿态分量:

>> plot(t, tr2rpy(Ts))

在这里插入图片描述
各分量的运动以及 x y xy xy 平面内末端执行器的路径如下图所示。相比关节空间运动的图,我们注意到一些重要的差异。第一,笛卡尔运动中的位置和姿态随时间线性变化。姿态的俯仰角是为零的常数且不随路径变化。其次,末端执行器在 x y xy xy 平面内沿着一条直线运动。
在这里插入图片描述

>> qc = p560.ikine6s(Ts);
>> qplot(t, qc);

在这里插入图片描述

通过奇异点的运动

我们特意选择一个通过机器人奇异点的运动轨迹。我们将先前示例中的笛卡儿端点变为

>> T1 = transl(0.5, 0.3, 0.44) * troty(pi/2);
>> T2 = transl(0.5, -0.3, 0.44) * troty(pi/2);

其结果是得到一个沿着 y y y 方向的运动,且末端执行器的 z z z 轴指向 x x x 方向。其笛卡儿路径是

>> Ts = ctraj(T1, T2, length(t));

我们将其转换到关节坐标:

>> qc = p560.ikine6s(Ts);

在这里插入图片描述

各关节轨迹如图所示。在 t ≈ 0.7 s t\approx 0.7s t0.7s 时,我们观察到手腕关节角度 q 4 q_4 q4 q 6 q_6 q6 的变化率非常高。其原因是 q 5 q_5 q5 几乎已经为零,这意味着 q 4 q_4 q4 q 6 q_6 q6 的旋转轴几乎对齐重合了,也就是万向节死锁情况或奇异点。

关节轴重合意味着该机器人已经失去了一个自由度,实际上现在是一个五轴机器人。从运动学上我们只能求解出 q 4 + q 6 q_4+q_6 q4+q6 的和值,而针对同一个和值可以有无数的 q 4 q_4 q4 q 6 q_6 q6 解。但如果是采用两个位姿之间的关节空间运动,则可以避免上述问题,因为它不需要求解逆运动学。然而,关节空间运动不会在整个路径中始终维持工具在 x x x 方向上的姿态,除了在两个端点。广义逆运动学的方法ikine能很容易地处理奇异性问题。


http://www.ppmy.cn/news/117023.html

相关文章

HTML小游戏7 —— 《罗斯魔影》魔法消除游戏(附完整源码)

💂 网站推荐:【神级源码资源网】【摸鱼小游戏】🤟 风趣幽默的前端学习课程:👉28个案例趣学前端💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】💬 免费且实用的计算机相关知识题库:👉进来逛逛给大家安利一个免费且实用的前端刷题(面经大全)…

机器人轨迹规划

目录 1.轨迹规划概述 2.关节空间的轨迹规划 3.直角坐标空间的轨迹规划 1.轨迹规划概述 路径规划:路径点是空间中的位置或关节角度,路径规划是找到一系列要经过的路径点。 (目标:使路径与障碍物尽量远,同时路径尽量…

五子棋人机对战完整代码

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:点击跳转 目录 〇,前言 一,五子棋棋盘 二,五子棋比赛规则 1,行棋顺序 2,判断胜…

轨迹数据

如何通过轨迹相似性度量方法&#xff0c;发现新冠易感人群 轨迹作为一种时空数据&#xff0c;指的是某物体在空间中的移动路径&#xff0c;通常表示为GPS点的序列&#xff0c;例如tr<p1→p2→…pn>&#xff0c;其中点pi(lat,lng,t)&#xff0c;表示该物体在t时刻位于地理…

百度离线地图示例之十三:动态运行轨迹实现(附源码)

前言介绍&#xff1a; 主要是基于v3.0的API版本进行的离线&#xff0c;纯内网可操作&#xff0c;基本上实现了现有90%以上的功能点&#xff0c;能兼容jpg和png格式的瓦片图层&#xff0c;实现了原生和基于Vue两个版本&#xff08;包含常用的55个示例&#xff09;&#xff0c;文…

EmuELEC初体验(源码下载)

接触这个EmuELEC复古系统有几个月&#xff0c;从了解到深度定制开发&#xff0c;也花了不少时间。记得当时开始接触emuelec的时候&#xff0c;也是各种查阅资料&#xff0c;发现这块开发的资料在国内的确非常少&#xff0c;所以走了很多弯路&#xff0c;目前对此系统源码也还算…

光之轨迹探险记:迷失之城 NFT 素材包

光之轨迹探险记带来了他们的标志性资产&#xff0c;伟大的《失落之城》中又一个丰富多彩、独创的未来主义体验。 不要犹豫&#xff0c;这些酷炫的资产值得拥有&#xff01; 別忘了&#xff0c;购买该系列中的任意一个资产将授予你「收藏家徽章」&#xff0c;可以解锁 30 SAND 的…

web前端 -- javascript(02) -- 数据类型转换、常见运算符及顺序、选择和循环结构

数据类型转换 &#xff08;1&#xff09;自动类型转换&#xff1a; 特点&#xff1a;低类型自动向高类型进行转换 boolean < int < float < string PS&#xff1a; boolean类型如果与数值型进行运算&#xff1a;true 1&#xff1b;false 0其他基本数据类型与字符串…