当前位置:   article > 正文

蒙特卡洛法求解机械臂工作空间(以IRB4600型工业机械臂为例)_机械臂工作空间计算

机械臂工作空间计算

1. 概念

工作空间是衡量机器人工作能力的一个重要的运动学指标,蒙特卡洛法是一种随机模拟方法,用于在计算机上估计某些统计量,对于要估计的统计量,通过模拟大量的随机抽样,并计算这些样本的随机值来估算这个统计量的值。 蒙特卡洛法的优点在于,在处理许多复杂的问题时可以通过模拟来估计答案,而无需解决复杂的数学方程。

2. 蒙特卡洛法求解

蒙特卡洛法求解机械臂工作空间流程是将各个关节在限位范围内离散后随机组合,最终求得机械臂末端在空间上的位置集合的过程。可通过建立运动学模型与组合求解两个步骤实现

2.1 建立机器人运动学模型,设置关节旋转角度限制

对于六自由度工业机器人来说,一般情况下对各个关节的旋转角度有限制,查找说明可得IRB4600型工业机械臂关节限位如下:

蒙特卡洛法要求解工作空间,首先要实现IRB4600型工业机械臂的DH建模和运动学正解,详细可参考:机械臂标准DH建模及正运动学分析(以IRB4600型工业机械臂为例)
,这里为了求解方面,利用matlab的robotic toolbox工具箱建立机器人模型,关键代码如下:

clc;
clear;
%          thetai       di      ai-1     alphai-1
L1 = Link([0            495     175      -pi/2  ],'standard');
L2 = Link([0            0       1095      0     ],'standard');L2.offset=-pi/2;
L3 = Link([0            0       175      -pi/2  ],'standard');
L4 = Link([0            1230.5  0        pi/2   ],'standard');
L5 = Link([0            0       0        pi/2   ],'standard');L5.offset=-pi;
L6 = Link([0            85      0        0      ],'standard');
 
L1.qlim =[-180*pi/180, 180*pi/180];
L2.qlim =[-90*pi/180, 150*pi/180];
L3.qlim =[-180*pi/180, 75*pi/180];
L4.qlim =[-400*pi/180, 400*pi/180];
L5.qlim =[-125*pi/180, 125*pi/180];
L6.qlim =[-400*pi/180, 400*pi/180];

IRB4600=SerialLink([L1 L2 L3 L4 L5 L6], 'name', 'IRB4600');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2.2

3.组合求解

组合求解可大致分为三个步骤实现:
(1)设置随机工作点数目;
(2)在关节旋转角度限制下随机取得各关节角
(3)所有末端点的随机点的集合构成机械臂的工作空间。
利用matlab的随机数生成函数rand,生成所有关节角组合并逐一基于robotic toolbox工具箱建立的模型正解得到机械臂法兰中心的空间位置,关键代码如下:

% 蒙特卡洛法确定工作空间
NUM = 3000;% 随机点数
J = zeros(NUM,6);
POS = zeros(NUM,3);%x,y,z
for i = 1:NUM
    J(i,1) = L1.qlim(1) + (L1.qlim(2)-L1.qlim(1))*rand;
    J(i,2) = L2.qlim(1) + (L2.qlim(2)-L2.qlim(1))*rand;
    J(i,3) = L3.qlim(1) + (L3.qlim(2)-L3.qlim(1))*rand;
    J(i,4) = L4.qlim(1) + (L4.qlim(2)-L4.qlim(1))*rand;
    J(i,5) = L5.qlim(1) + (L5.qlim(2)-L5.qlim(1))*rand;
    J(i,6) = L6.qlim(1) + (L6.qlim(2)-L6.qlim(1))*rand;
    T = IRB4600.fkine(J(i,:));
    POS(i,:) = transl(T);
    % 绘制结果
end
% 绘制结果
IRB4600.plot(J(NUM,:));%最后一个点
hold on
plot3(POS(:,1),POS(:,2),POS(:,3),'b.','MarkerSize',0.5);%随机轨迹
grid on;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

上述代码中, 随机工作点的数目设置为3000,为每个关节角在转动的角度范围内随机生成3000个点,形成3000组关节角,并正解成笛卡尔空间的位置绘制出来,所形成的包络面如下图所示,所有离散点包络的范围及机器人的工作空间范围。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/993199
推荐阅读
相关标签
  

闽ICP备14008679号