仿人型手腕 6R机械臂 D-H参数和运动学逆解

计算正向运动学通常需要使用D-H参数法对机械臂建模。

第一步: 绘制机械臂模型图

可用手绘机械臂结构简图或者模型图,使用圆柱体代表转动关节和线表示的连杆,当写论文的时候,可以使用PPT或者CAD来绘图,ppt里面提供了很多现成的线条形状,通过组合功能可以设计出很nice的结构,用来画简图绰绰有余。百度搜索运动学图表或者google搜索kinematic diagram来获取些许参考。

第二步: 找出你的坐标轴

完成结构简图的绘制之后, 通过D-H参数法为每运动关节分配坐标轴。如果轴分配准确,之后的工作就比较容易。这些轴是计算参数模拟器,逆运动学求解器的基础。从油管上下载的视频可供参考:https://www.youtube.com/watch?v=rA9tm0gTln8 视频讲解的还是比较清楚的,这里就当笔记记下来了。

  • Z-axis — Z 轴ー The z-axis should lie on the axis of rotation for a revolute joint or axis of extension for a prismatic joint. Z 轴就是关节的旋转轴或滑动关节的移动方向
  • X-axis — X 轴ー The x-axis should lie along the "common normal", which is the shortest orthogonal line between the previous z-axis and the current z-axis  当前关节的Z轴和前一关节Z轴的公共垂线,是最短的正交线
  • Y-axis — Y 轴ー Once you've calculated the other two, this axis should fall into place by following the "right hand rule" (see below)第三个轴根据右手定则即可确定
  • 通过Z轴和X轴的确定,就确定了坐标系的位置,因此除了第一个坐标系的建立是通过指定x轴,其余坐标系都是根据上个坐标系Z轴确定的,所以坐标系原点可能出现在很奇怪的位置(视频中提到的)

一般情况使用三种颜色绘制坐标轴: z 轴(蓝色)、 x 轴(红色)和 y 轴(绿色)。 这也是 ROS 的 RViz 可视化工具中使用的着色方案。

第三步: 末端执行器坐标系

计算正向运动学的目的是能够从关节的位置计算末端执行器的姿态。因此在制定运动学模型时,最好也应该仔细考虑末端执行器的坐标系建立。

第四步: 计算 D-H 参数

Dh 参数将机器人的每个关节分解成四个参数,每个参数都与之前的关节相关。 

  • d - the distance between the previous x-axis and the current x-axis, along the previous z-axis. - 前一个 x 轴与当前 x 轴之间的距离,沿前一个 z 轴
  • θ - the angle around the z-axis between the previous x-axis and the current x-axis. - 先前的 x 轴和当前的 x 轴之间围绕 z 轴的角度
  • a - the length of the common normal, which is the distance between the previous z-axis and the current z-axis - 公共垂线的长度,即前 z 轴与当前 z 轴之间的距离
  • α - the angle around the common normal to between the previous z-axis and current z-axis. - 公垂线与前 z 轴和当前 z 轴之间的夹角

其中θ和α 的方向如图所示:

D-H 方法是最常见的正向运动学方法,它的缺点之一是不能很好地处理平行的 z 轴。 有各种各样的选择,包括螺旋理论表示,Hayati-Roberts,和其他几何模型。这些可能(也可能不是)是更好的方法。大多数运动学库都是能接受 D-H 参数的。

第四步: 实例

对于UR的根据D-H参数逆解的步骤可以参考https://www.zhihu.com/question/47605775/answer/113477680?from=profile_answer_card

第五步: Inverse kinematic运动学逆解

本次设计的机械臂是6R仿人型手臂 Anthropomorphic arm with spherical wrist,和PUMA不太一样的是,参数d=0,如图:

左图中第一个关节和第二个关节之间是有一个偏置的,而我设计的机械臂是右边这种没有偏置的,它们末端的三个自由度都是一样的,相较于一点,因此这两种结构的逆解还是比较相似的。先看末端三个自由度的D-H 参数,两种结构是一样的:

通过解方程式的方式很难直接以封闭形式求解,大多数机器人手臂就是这种情况。 因此,我们需要利用系统的运动学结构的进行分析。 而正向运动学问题始终具有独特的解决方案,可以通过评估正向方程,逆运动学问题简单地获得可能有解决方案,也可能没有解决方案。 即使存在解决方案,它也可能是唯一的,也可能不是唯一的。

 

 

 

 

 

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个基于MATLAB编写的轴机器人运动学逆解代码,供您参考: % 轴机器人运动学逆解代码 % 假设机器人的DH参数如下所示 a = [0, 650, 0, 0, 0, 0]; alpha = [-pi/2, 0, pi/2, -pi/2, pi/2, 0]; d = [400, 0, 0, 700, 0, 150]; theta = [0, 0, 0, 0, 0, 0]; % 假设目标末端执行器位姿如下 p = [600, 300, 800]; R = [0, 0, 1; 0, 1, 0; -1, 0, 0]; T = [R, p'; 0, 0, 0, 1]; % 进行运动学正解 T06 = FK_6R(a, alpha, d, theta); % 进行运动学逆解 q = IK_6R(a, alpha, d, T); % 输出逆解结果 disp(q); % 6R机器人运动学正解函数 function T06 = FK_6R(a, alpha, d, theta) T01 = DH(a(1), alpha(1), d(1), theta(1)); T12 = DH(a(2), alpha(2), d(2), theta(2)); T23 = DH(a(3), alpha(3), d(3), theta(3)); T34 = DH(a(4), alpha(4), d(4), theta(4)); T45 = DH(a(5), alpha(5), d(5), theta(5)); T56 = DH(a(6), alpha(6), d(6), theta(6)); T06 = T01*T12*T23*T34*T45*T56; end % DH参数转换矩阵函数 function T = DH(a, alpha, d, theta) T = [cos(theta), -sin(theta)*cos(alpha), sin(theta)*sin(alpha), a*cos(theta); sin(theta), cos(theta)*cos(alpha), -cos(theta)*sin(alpha), a*sin(theta); 0, sin(alpha), cos(alpha), d; 0, 0, 0, 1]; end % 6R机器人运动学逆解函数 function q = IK_6R(a, alpha, d, T) p = T(1:3,4); R = T(1:3,1:3); % 进行末端执行器位姿的逆解计算 p_ = p - a(6)*R*[0;0;1]; theta1 = atan2(p_(2), p_(1)); d4 = d(4); a2 = a(2); a3 = a(3); p_ = sqrt(p_(1)^2+p_(2)^2); q1 = atan2(p_(3)-d(1), p_) - atan2(sqrt(1-(a2^2+d4^2)/(p_^2-d(1)^2)), (a2+d4)^2/(p_^2-d(1)^2)-(a2^2+d4^2)/(p_^2-d(1)^2)); q5 = atan2(sqrt(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值