利用Denavit-Hartenberg参数构建机械手机器人
1、DH参数定义了机器人的几何形状,与每个刚体如何连接到其父体有关。为了方便,在矩阵中设置Puma560机器人的参数。Puma机器人是一个串行链操作器。DH参数相对于矩阵中之前的直线,对应于之前的关节附着。
命令行键入:
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];
2、创建一个刚体树对象来构建机器人。
命令行键入:
robot = robotics.RigidBodyTree;
3、创建第一个刚体并将其添加到机器人中。加入刚体
创建一个RigidBody对象并给它一个唯一的名称。
命令行键入:
body1 = robotics.RigidBody('body1');
4、创建一个联合对象并给它一个唯一的名称。
命令行键入:
jnt1 = robotics.Joint('jnt1','revolute');
5、使用setFixedTransform指定使用DHparameters的从主体到主体的转换。DH参数的最后一个元素,被忽略了,因为这个角度依赖于关节的位置。
命令行键入:
setFixedTransform(jnt1,dhparams(1,:),'dh');
6、命令行键入:
addBody(robot,body1,'base')
7、创建并添加其他刚体到机器人。指定发送addBody以附加它的前一个主体名称。每个固定变换相对于前一个关节坐标系。
命令行键入:
body2 = robotics.RigidBody('body2');
jnt2 = robotics.Joint('jnt2','revolute');
body3 = robotics.RigidBody('body3');
jnt3 = robotics.Joint('jnt3','revolute');
body4 = robotics.RigidBody('body4');
jnt4 = robotics.Joint('jnt4','revolute');
body5 = robotics.RigidBody('body5');
jnt5 = robotics.Joint('jnt5','revolute');
body6 = robotics.RigidBody('body6');
jnt6 = robotics.Joint('jnt6','revolute');
setFixedTransform(jnt2,dhparams(2,:),'dh');
setFixedTransform(jnt3,dhparams(3,:),'dh');
setFixedTransform(jnt4,dhparams(4,:),'dh');
setFixedTransform(jnt5,dhparams(5,:),'dh');
setFixedTransform(jnt6,dhparams(6,:),'dh');
body2.Joint = jnt2;
body3.Joint = jnt3;
body4.Joint = jnt4;
body5.Joint = jnt5;
body6.Joint = jnt6;
addBody(robot,body2,'body1')
addBody(robot,body3,'body2')
addBody(robot,body4,'body3')
addBody(robot,body5,'body4')
addBody(robot,body6,'body5')
8、使用showdetails或show函数验证您的机器人是否正确构建。showdetails列出MATLAB命令窗口中的所有主体。show显示带有给定配置(默认为home)的therobot。调用axis修改axis限制并隐藏axis标签。
命令行键入:
showdetails(robot)
9、命令行键入:
show(robot);
axis([-0.5,0.5,-0.5,0.5,-0.5,0.5])
axis off