机器人运动学及轨迹规划— (2)DH建模与正运动学方程

1、DH参数法建模

       可以将机器人各轴看成由一系列关节连接起来的连杆组成,将坐标系固连在每一个连杆关节上,则可以通过齐次变换来描述这些坐标系之间的相对位置和方向。这种通过齐次变换建立机构的运动学模型被称为D-H参数法,在DH参数模型下机器人各连杆的关系可以用a、alpha、d、theta 四个参数表示,其中theta为关节角度,d为相邻关节距离,a为连杆长度,alpha 为连杆扭角。

       目前DH参数法一般分为标准SDH(standard DH)与改进DH(modified DH),标准DH将固连坐标系定义在连杆的末端,而改进DH则是将坐标系定义在连杆的前端。MDH适用范围更广,更容易理解和推导,本文采用MDH对ABB的IRB2600-1.65型号机器人进行建模,由于后三轴坐标系建立在腕部,到法兰的距离在matlab机器人工具箱中难以体现,因此对MDH参数建模的验证在ABB的离线编程仿真软件RobotStudio中进行。

(1)SDH

        SDH的变换顺序为θ、d、a、α

        因此转换矩阵为: 

(2)MDH

      MDH的变换顺序为α、a、θ、d:

       则转换矩阵为:

       对于IRB2600型号机器人,首先确定各关节轴 J1-J6:

        此时Z轴方向已知确定X和Y轴方向:

        X轴方向为由(Z)关节轴线i指向i+1。

        Y轴方向由右手法则确定(右手握拳,螺旋方向与Z轴转向X轴方向一致,拇指指向为Y轴正方向)。

        求得的DH参数为:

2、建立正运动学方程

       正运动学是给定机器人关节空间下的各关节角度,来求解机器人末端位姿,即将关节空间的关节变量转换为笛卡尔空间的位置和姿态。

       将MDH参数代入转换矩阵_{i}^{i-1}\textrm{T}得:

        将矩阵输入matlab计算给定关节角度下的位姿:

%改进DH参数建模  正运动学
theta=[60*pi/180,-25*pi/180,40*pi/180,45*pi/180,-20*pi/180,60*pi/180];%给出关节角度
theta1 = theta(1);
theta2 = theta(2);
theta3 = theta(3);
theta4 = theta(4);
theta5 = theta(5);
theta6 = theta(6);
%    theta          d         a         alpha
MDH=[theta1         0.445     0              0;
     theta2-pi/2    0         0.150      -pi/2;
     theta3         0         0.700          0;
     theta4         0.795     0.115      -pi/2;
     theta5         0         0           pi/2;
     theta6         0         0         -pi/2];
 
 T01=[cos(MDH(1,1))         -sin(MDH(1,1))           0                    0;
      sin(MDH(1,1))         cos(MDH(1,1))            0                    0;
      0                     0                        1             MDH(1,2);
      0                     0                        0                   1];
 T12=[cos(MDH(2,1))         -sin(MDH(2,1))           0             MDH(2,3);
      0                     0                        1                    0;
      -sin(MDH(2,1))        -cos(MDH(2,1))           0                    0;
      0                     0                        0                   1];
 T23=[cos(MDH(3,1))         -sin(MDH(3,1))           0             MDH(3,3);
      sin(MDH(3,1))         cos(MDH(3,1))            0                    0;
      0                     0                        1                    0;
      0                     0                        0                   1];
 T34=[cos(MDH(4,1))         -sin(MDH(4,1))           0             MDH(4,3);
      0                     0                        1             MDH(4,2);
      -sin(MDH(4,1))        -cos(MDH(4,1))           0                    0
      0                     0                        0                   1];
 T45=[cos(MDH(5,1))         -sin(MDH(5,1))           0                    0;
      0                     0                        -1                   0;
      sin(MDH(5,1))         cos(MDH(5,1))            0                    0;
      0                     0                        0                   1];
 T56=[cos(MDH(6,1))         -sin(MDH(6,1))           0                    0;
      0                     0                        1                    0;
      -sin(MDH(6,1))        -cos(MDH(6,1))           0                    0;
      0                     0                        0                   1];
% 腕部到法兰
 T6TCP=[-1                  0                        0                    0;
        0                   -1                       0                    0;
        0                   0                        1                0.085;
        0                   0                        0                   1];
    
  T06=T01*T12*T23*T34*T45*T56*T6TCP;

       输入运行以上代码,然后命令行窗口输出注释行即可得到以下结果:

       由T06可以得到机器人末端的位置为(385,625.7,983.9),而姿态为以上旋转矩阵。在RobotStudio6.08中添加IRB2600型号机器人,各关节设置为(60°,-25°,40°,45°,-20°,60°),示教目标点后在机器人控制器中查看机器人当前位姿:

       控制器中机器人姿态采用欧拉角表示,而我们得到的结果为旋转矩阵,因此需要进行转换,可以自己写旋转矩阵转欧拉角公式:

R=[ -0.6992     0.1693    0.6946
     0.6781    -0.1505    0.7194    
     0.2263     0.9740   -0.0096 ];

r11=R(1,1);r12=R(1,2);r13=R(1,3);
r21=R(2,1);r22=R(2,2);r23=R(2,3);
r31=R(3,1);r32=R(3,2);r33=R(3,3);

Euler= [atan2(r21, r11); atan2(-r31, sqrt(r32 ^ 2 + r33 ^ 2)); atan2(r32, r33); ]*57.3

       也可以直接用matlab的转换函数rotm2eul(R):

R=[-0.6992    0.1693    0.6946    
    0.6781   -0.1505    0.7194    
    0.2263    0.9740   -0.0096];
Euler=rotm2eul(R)*57.3

       得到结果为:

       可以看到在相同的关节角度下,求得的机器人末端位姿与官方数据一致,证明建立的MDH参数与正运动学方程准确无误。

DH参数逆运动学是指在机器人标准DH建模法下,通过已知末端执行器的位姿信息,求解机器人各关节的角度信息的过程。DH参数是描述机器人关节之间几何关系的一组参数,包括关节长度、关节偏移量、相邻关节之间的旋转角度和链接的旋转角度。在进行逆运动学求解时,需要根据机器人DH参数建立完整的运动学模型,并使用正向运动学方程计算出末端执行器的位姿信息,然后通过反解运动学方程求解各关节的角度信息。 具体来说,对于一个n自由度的机器人系统,可以按照以下步骤进行逆运动学求解: 1. 根据机器人DH参数建立完整的运动学模型。这个模型是一个由多个坐标系组成的层次结构,每个坐标系代表一个机器人关节的运动范围,并通过旋转和平移变换描述相邻坐标系之间的关系。DH参数可以帮助我们计算出每个坐标系的变换矩阵。 2. 利用正向运动学方程计算出机器人末端执行器的位姿信息。正向运动学方程是将机器人各个关节的角度信息转换为末端执行器的位置和姿态信息的方程,可以利用DH参数和变换矩阵来求解。 3. 根据末端执行器的位姿信息,使用反解运动学方程求解各关节的角度信息。反解运动学方程是将末端执行器的位置和姿态信息转换为机器人各个关节的角度信息的方程,可以通过代数解法或数值优化方法来求解。 需要注意的是,机器人的逆运动学求解存在多解性和奇异性等问题,需要针对具体机器人系统进行分析和处理。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Horo321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值