利用运动学DH参数构建机器人

利用Puma560机器人的Denavit-Hartenberg (DH)参数增量式建立刚体树机器人模型。

指定连接每个关节时的相对DH参数。

可视化机器人框架,并与最终模型进行交互。

DH参数定义了每个刚体如何通过关节连接到其父刚体的几何形状。这些参数遵循四个转换约定:

A -两个z轴之间的公法线的长度,它垂直于两个轴。

α -公法线的旋转角度

d-沿z轴在法线方向上的偏移,从父到子

θ - x轴沿前一个z轴的旋转角度

将Puma560机器人的参数指定为一个矩阵:

dhparams = [0   	pi/2	0   	0;
            0.4318	0       0       0
            0.0203	-pi/2	0.15005	0;
            0   	pi/2	0.4318	0;
            0       -pi/2	0   	0;
            0       0       0       0];

创建一个刚体树对象:

robot = rigidBodyTree;

为刚体对象创建一个单元数组,为关节对象创建另一个单元数组。遍历DH参数,执行以下过程:

创建一个具有唯一名称的rigidBody对象。

创建并命名一个旋转的rigidBodyJoint对象。

使用setFixedTransform指定使用DH参数的关节的体到体转换。

这个函数忽略了DH参数的最后一个元素,theta,因为机器人body的角度取决于关节的位置。

使用addBody将主体附加到刚体树。

bodies = cell(6,1);
joints = cell(6,1);
for i = 1:6
    bodies{i} = rigidBody(['body' num2str(i)]);
    joints{i} = rigidBodyJoint(['jnt' num2str(i)],"revolute");
    setFixedTransform(joints{i},dhparams(i,:),"dh");
    bodies{i}.Joint = joints{i};
    if i == 1 % Add first body to base
        addBody(robot,bodies{i},"base")
    else % Add current body to previous body by name
        addBody(robot,bodies{i},bodies{i-1}.Name)
    end
end

使用showdetails或show函数验证机器人是否已正确构建。

showdetails函数在MATLAB命令窗口中列出了机器人的所有主体。

show功能显示指定配置的机器人(默认为home)。

showdetails(robot)
--------------------
Robot: (6 bodies)

 Idx    Body Name   Joint Name   Joint Type    Parent Name(Idx)   Children Name(s)
 ---    ---------   ----------   ----------    ----------------   ----------------
   1        body1         jnt1     revolute             base(0)   body2(2)  
   2        body2         jnt2     revolute            body1(1)   body3(3)  
   3        body3         jnt3     revolute            body2(2)   body4(4)  
   4        body4         jnt4     revolute            body3(3)   body5(5)  
   5        body5         jnt5     revolute            body4(4)   body6(6)  
   6        body6         jnt6     revolute            body5(5)   
--------------------
figure(Name="PUMA Robot Model")
show(robot);

可得到的可视化界面如下:

 与机器人模型交互

通过使用interactiveRigidBodyTree对象可视化机器人模型以确认其尺寸

figure(Name="Interactive GUI")
gui = interactiveRigidBodyTree(robot,MarkerScaleFactor=0.5);

 单击并拖动交互GUI中的标记,以重新定位末端执行器。

GUI使用逆运动学来求解关节位置,以实现与指定末端执行器位置的最佳匹配。

右键单击特定的机器人body框架,可将其设置为目标标记body,或更改设置特定关节位置的控制方法。

接下来就可以进行:

(1)执行逆运动学得到基于期望末端执行器位置的关节构型。除模型参数外,指定机器人约束,包括目标约束、笛卡尔边界和姿态目标。

(2)轨迹生成和跟踪,基于路径点和其他参数,用梯形速度剖面,b样条,或多项式轨迹。

(3)执行机械手运动规划利用机器人模型和快速探索随机树(RRT)路径规划。

(4)使用碰撞检测环境中的障碍,以确保您的机器人安全有效的运动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值