系列文章目录
前言
一、
使用 Puma560® 机械手机器人的 Denavit-Hartenberg (DH) 参数,逐步建立刚体树形机器人模型。在连接每个关节时,指定其相对 DH 参数。可视化机器人坐标系,并与最终模型进行交互。
DH 参数定义了每个刚体通过关节与其父体连接的几何形状。这些参数遵循四种变换惯例:
- A - 两个 Z 轴之间公共法线的长度,垂直于两个轴
- α - 共同法线的旋转角度
- d - 沿 Z 轴在法线方向上从父代到子代的偏移量
- θ - X 轴沿前 Z 轴的旋转角度
以矩阵形式指定 Puma560 机器人 [1] 的参数。
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 参数,执行此过程:
- 创建一个具有唯一名称的刚体对象。
- 创建并命名一个外旋刚体关节对象。
- 使用 setFixedTransform 使用 DH 参数指定关节的体到体变换。该函数会忽略 DH 参数的最后一个元素 theta,因为体的角度取决于关节位置。
- 使用 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功能显示指定配置(默认为原点)的机器人。
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);
单击并拖动交互式图形用户界面中的标记,重新定位末端执行器。图形用户界面使用逆运动学求解关节位置,以实现与指定末端执行器位置的最佳匹配。右键单击特定的身体坐标系,将其设置为目标标记体,或更改设置特定关节位置的控制方法。
三、下一步
现在您已经在 MATLAB® 中建立了模型,接下来可能要采取以下步骤。
- 执行逆运动学,根据所需的末端执行器位置获得关节配置。除模型参数外,指定机器人约束条件,包括瞄准约束条件、笛卡尔边界和姿势目标。
- 根据航点和其他参数,利用梯形速度曲线、B-样条曲线或多项式轨迹生成轨迹。
- 利用机器人模型和快速探索随机树(RRT)路径规划器执行机械手规划。
- 对环境中的障碍物进行碰撞检测,确保机器人安全有效地运动。
参考资料
[1] Corke, P. I., and B. Armstrong-Helouvry. “A Search for Consensus Among Model Parameters Reported for the PUMA 560 Robot.” Proceedings of the 1994 IEEE International Conference on Robotics and Automation, 1608–13. San Diego, CA, USA: IEEE Computer Soc. Press, 1994. https://doi.org/10.1109/ROBOT.1994.351360.