本文主要是介绍蒙特卡洛法求解机械臂工作空间(以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');
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:NUMJ(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;
上述代码中, 随机工作点的数目设置为3000,为每个关节角在转动的角度范围内随机生成3000个点,形成3000组关节角,并正解成笛卡尔空间的位置绘制出来,所形成的包络面如下图所示,所有离散点包络的范围及机器人的工作空间范围。
这篇关于蒙特卡洛法求解机械臂工作空间(以IRB4600型工业机械臂为例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!