利用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)使用碰撞检测环境中的障碍,以确保您的机器人安全有效的运动。