主要内容

与逆运动学的2-D路径跟踪

介绍

此示例显示了如何使用使用的简单2D操纵器计算逆运动学onderedkinematics.班级。操纵器机器人是一种简单的2级自由度平面操纵器,其具有旋转接头,通过将刚体组装成一个刚性小组细胞目的。圆形轨迹在二进制飞机中创建,并作为逆运动学求解器的指向给出。求解器计算所需的关节位置以实现此轨迹。最后,机器人被动画地显示实现圆形轨迹的机器人配置。

构建机器人

创建一个刚性小组细胞物体和刚体与其相关联的关节。指定每个刚体的几何属性并将其添加到机器人中。

从空白刚体树模型开始。

robot =刚性小牛排('datomformat''柱子''maxnumbodies',3);

为机器人手臂指定ARM长度。

l1 = 0.3;l2 = 0.3;

添加'link1'身体'联合1'联合的。

身体=刚体('link1');关节=刚体加('联合1''旋转');setfixedTransform(接头,TRVEC2TForm([0 0 0]));joint.jodeaxis = [0 0 1];Body.joint =联合;加法人(机器人,身体,'根据');

添加'link2'身体“联合2”联合的。

身体=刚体('link2');关节=刚体加(“联合2”'旋转');setfixedTransform(接头,TRVEC2TForm([L1,0,0]));joint.jodeaxis = [0 0 1];Body.joint =联合;加法人(机器人,身体,'link1');

添加'工具'末端效应器'fix1'固定联合。

身体=刚体('工具');关节=刚体加('fix1''固定的');setfixedTransform(接头,TRVEC2TForm([L2,0,0])));Body.joint =联合;加法人(机器人,身体,'link2');

显示机器人的详细信息以验证输入属性。机器人应具有两个用于刚体的非固定接头,以及用于末端效应器的固定体。

showdetails(机器人)
-----------------------100----------  -   -  ---------- ---------- --------------------------- 1 link1连接旋转基础(0)Link2(2)2 Link2 Connect2旋转Link1(1)工具(3)3工具Fix1固定链路2(2)-------------------

定义轨迹

定义一个圆圈在10秒的过程中追踪。这个圆圈在XY.半径为0.15的平面。

t =(0:0.2:10)';% 时间count =长度(t);中心= [0.3 0.1 0];半径= 0.15;theta = t *(2 * pi / t(端));点=中心+半径* [cos(θ)sin(θ)zeros(尺寸(θ)];

逆运动学解决方案

用A.onderedkinematics.对象找到沿着轨迹实现给定的末端效应位置的机器人配置的解决方案。

预先分配配置解决方案作为矩阵金宝搏官方网站QS.

Q0 = HomeConfiguration(机器人);ndof =长度(q0);QS =零(计数,NDOF);

创建反向运动学求解器。因为这XY.笛卡尔积分是此工作流程的末端效应子姿势的唯一重要因素,为第四和第五个元素指定了非零权重重量向量。所有其他元素都设置为零。

ik = underedkinematics('刚性小组特雷', 机器人);权重= [0,0,0,1,1,0];Endeffector ='工具';

循环通过点的轨迹来跟踪圆圈。打电话给我知道每个点的对象产生实现终端效应器位置的联合配置。存储稍后使用的配置。

Qinitial = Q0;%使用家庭配置作为初始猜测为了我= 1:计数对于满足所需末端执行器的配置来解决%% 位置点=点(i,:);QSOL = IK(Endeffector,Trvec2tForm(Point),权重,Qinitial);%存储配置qs(i,:) = qsol;%从先前解决方案开始Qinitial = QSOL;结尾

动画解决方案

使用特定机器人配置绘制解决方案的每个帧的机器人。此外,绘制所需的轨迹。

在轨迹的第一个配置中显示机器人。调整图表以显示圆的2-D平面。绘制所需的轨迹。

图显示(机器人,Qs(1,:)');查看(2)AX = GCA;AX.PROJEGENT ='ortcographic';抓住绘图(点(:,1),点(:,2),'K')轴([ -  0.1 0.7-0.3 0.5])

设置A.RATECONTROL.对象以每秒15帧的固定速率显示机器人轨迹。从反向运动求解器显示每个配置中的机器人。手表臂横线显示所示的圆形轨迹。

Framespersecond = 15;r = RATECONTROL(FRAMESPERSECOND);为了i = 1:计数显示(机器人,Qs(i,:)','preserveplot',错误的);rawingwor(r);结尾

也可以看看

|||

相关话题