主要内容

逆运动学二维路径跟踪

介绍

这个例子展示了如何计算一个简单的2D机械手使用inverseKinematics类。机械臂机器人是一种具有转动关节的简单的2自由度平面机械臂,由刚体装配成一个具有转动关节的平面机械臂rigidBodyTree对象。在二维平面上创建一个圆形轨迹,并作为点给出给逆运动学求解器。求解器计算所需的关节位置,以实现这一轨迹。最后,动画显示机器人实现圆轨迹的构型。

构建机器人

创建一个rigidBodyTree物体和刚体及其相关关节。指定每个刚体的几何属性并将其添加到机器人中。

从一个空白的刚体树模型开始。

机器人= rigidBodyTree (“DataFormat”“列”“MaxNumBodies”3);

指定机器人手臂的手臂长度。

L1 = 0.3;L2 = 0.3;

添加“link1”的身体“joint1”关节。

身体= rigidBody (“link1”);联合= rigidBodyJoint (“joint1”“转动”);setFixedTransform(关节,trvec2tform ([0 0 0]));关节。JointAxis = [0 0 1];的身体。联合=联合;addBody(机器人,身体,“基地”);

添加“link2”的身体“joint2”关节。

身体= rigidBody (“link2”);联合= rigidBodyJoint (“joint2”“转动”);setFixedTransform(关节,trvec2tform ((L1, 0, 0)));关节。JointAxis = [0 0 1];的身体。联合=联合;addBody(机器人,身体,“link1”);

添加“工具”终端执行器与“fix1”固定的联合。

身体= rigidBody (“工具”);联合= rigidBodyJoint (“fix1”“固定”);setFixedTransform(joint, trvec2tform([L2, 0, 0]));的身体。联合=联合;addBody(机器人,身体,“link2”);

显示机器人的详细信息以验证输入属性。机器人的刚体应具有两个非固定关节,末端执行器应具有一个固定关节。

showdetails(机器人)
-------------------- 机器人:(3)Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 link1 joint1转动基地(0)link2 (2) 2 link2 joint2转动link1(1)(3) 3工具fix1固定link2 (2 ) --------------------

定义轨迹

定义一个要在10秒内追踪的圆。这个圆在xy半径为0.15的平面。

t =(0:0.2:10)”;%的时间数=长度(t);中心= [0.3 0.1 0];半径= 0.15;θ= t *(2 *π/ t(结束));点=中心+半径*[cos(theta) sin(theta) 0 (size(theta))];

逆运动学解

使用一个inverseKinematics目标是找到一个机器人构型的解决方案,以实现给定的末端执行器位置沿轨迹。

以矩阵的形式预分配配置方案万博 尤文图斯qs

q0 = homeConfiguration(机器人);ndof =长度(q0);q = 0 (count, ndof);

创建逆运动学求解器。因为xy笛卡儿点是此工作流末端执行器姿态的唯一重要因素,为第四和第五元素指定非零权重重量向量。所有其他元素都设置为零。

本土知识= inverseKinematics (“RigidBodyTree”,机器人);Weights = [0, 0, 0, 1, 1, 0];endEffector =“工具”;

通过循环点的轨迹来追踪圆。调用本土知识对象生成达到末端执行器位置的关节构型。存储稍后使用的配置。

qInitial = q0处;%使用home配置作为初始猜测i = 1:计数%求解满足所需末端执行器的配置%的位置点=点(我:);本土知识qSol = (endEffector trvec2tform(点),重量、qInitial);%存储配置qs(我:)= qSol;%从之前的解决方案开始qInitial = qSol;结束

动画解决方案

使用特定的机器人配置为解决方案的每个框架绘制机器人。同样,画出想要的轨迹。

以轨迹的第一个配置显示机器人。调整绘图以显示绘制圆的二维平面。画出想要的轨迹。

图显示(机器人,qs (: 1) ');视图(2)ax = gca;斧子。投影=“拼写”;持有情节(点(:1),点(:,2),“k”轴([-0.1 0.7 -0.3 0.5])

建立了一个rateControl对象以每秒15帧的固定速率显示机器人轨迹。从逆运动学求解器中显示每个构型的机器人。观察手臂沿着所示的圆形轨迹运动。

framesPerSecond = 15;r = rateControl (framesPerSecond);I = 1:count show(robot,qs(I,:)',“PreservePlot”、假);drawnow waitfor (r);结束

另请参阅

|||

相关的话题