上一篇博客Matlab机器人工具箱(1)——机器人的建立、绘制与正逆运动学介绍了matlab RTB 臂型机器人的基本操作,本篇博客展示两个常用的预分析方法,包括蒙特卡洛法可视化机器人可达空间 和 机器人的可操作性可视化
在规划机器人任务时,往往需要首先知道机器人的可达空间。本例用蒙特卡洛随机采样的方法,对各个关节角在关节范围内进行随机选取,取大量的采样点进行计算,通过正运动学求解,即可得到相应的末端位置,绘制后即可可视化机器人工作空间。
以上一篇博客中的Scara机器人为例:
代码在这里:
clear ; clc; close all;
% theta d a alpha offset
% 机器人各连杆DH参数
d1 = 0;
d2 = 86;
d3 = -92;
% 由于关节4为移动关节,故d4为变量,theta4为常量
theta4 = 0;
a1 = 400;
a2 = 250;
a3 = 0;
a4 = 0;
alpha1 = 0 / 180 * pi;
alpha2 = 0 / 180 * pi;
alpha3 = 180 / 180 * pi;
alpha4 = 0 / 180 * pi;
% 关节限制
q1_lim = [-180,180]; q1_lim= deg2rad(q1_lim);
q2_lim = [-180 ,180]; q2_lim= deg2rad(q2_lim);
q3_lim = [-180 ,180]; q3_lim= deg2rad(q3_lim);
q4_lim = [0 ,180];
% 定义各个连杆,默认为转动关节
% theta d a alpha
L(1)=Link([0 d1 a1 alpha1]); L(1).qlim=q1_lim;
L(2)=Link([0 d2 a2 alpha2]); L(2).qlim=q2_lim; L(2).offset=pi/2;
L(3)=Link([0 d3 a3 alpha3]); L(3).qlim=q3_lim;
% 移动关节需要特别指定关节类型--jointtype
L(4)=Link([theta4 0 a4 alpha4]); L(4).qlim=q4_lim; L(4).jointtype='P';
% 把上述连杆“串起来”
Scara=SerialLink(L,'name','Scara');
% 定义机器人基坐标和工具坐标的变换
Scara.base = transl(0 ,0 ,305);
Scara.tool = transl(0 ,0 ,100);
% 蒙特卡洛法求机器人工作空间
N=3000; %随机次数
theta1=q1_lim(1)+diff(q1_lim)*rand(N,1); %关节1限制
theta2=q2_lim(1)+diff(q2_lim)*rand(N,1); %关节2限制
theta3=q3_lim(1)+diff(q3_lim)*rand(N,1); %关节3限制
theta4=q4_lim(1)+diff(q4_lim)*rand(N,1); %关节4限制
pos = {1,N};
% 正运动学求解
for i=1:N
pos{i}=Scara.fkine([theta1(i) theta2(i) theta3(i) theta4(i)]);
end
% 绘图
figure
Scara.plot([0 0 0 0],'jointdiam',1)
axis equal;
hold on;
for i=1:N
plot3(pos{i}.t(1),pos{i}.t(2),pos{i}.t(3),'r.');
hold on;
end
grid off
view(20,30)
评价机器人的可操作性一般看雅克比的条件数,可视化方法,即绘制速度可操作性椭球
这里采用RTB自带的puma560机器人进行举例:
clear;clc;close all;
% 载入RTB自带的puma560机器人
mdl_puma560;
q = [0 pi/3 pi/6 0 pi/3 pi/4];
J = p560.jacob0(q);
% 线速度的可操作性椭球
figure
plot_ellipse( J(1:3,:)*J(1:3,:)' )
xlabel('x');ylabel('y');zlabel('z')
% 角速度的可操作性椭球
figure
plot_ellipse( J(4:6,:)*J(4:6,:)' )
xlabel('x');ylabel('y');zlabel('z')
% 可操作性度量
p560.maniplty(q)
Manipulability: translation 0.0358079, rotation 2.44949
这里,可操作性度量与椭球的体积成正比。
本篇文章主要对机器人进行预分析,可视化其工作空间和可操作性,以避免规划路径时的错误和偏差。一下篇博客将开始机器人轨迹规划的讲解。Matlab机器人工具箱(3)——轨迹规划