主要内容

基于逆运动学的二维路径跟踪

简介

这个例子展示了如何计算一个简单的二维机械臂的逆运动学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(关节,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);Center = [0.3 0.1 0];半径= 0.15;θ= t *(2 *π/ t(结束));点=中心+半径*[cos() sin() 0 (size())];

逆运动学解

使用一个inverseKinematics对象,寻找机器人配置的解决方案,以实现沿轨迹给定的末端执行器位置。

将配置解决方案预先分配为矩阵qs

q0 = homeConfiguration(机器人);ndof =长度(q0);Qs = 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) ');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);结束

另请参阅

|||

相关的话题

Baidu
map