我Matlab建机械手云图时,它报错“此类型的变量不支持使用点进行索引”,我还是第一次遇到,希望有人看看
程序是这个
%建立机器人模型
% theta d a alpha offset
L1=Link([pi/2 85 27 -pi/2 0 ]); %定义连杆的D-H参数
L2=Link([-pi/2 0 102 0 0 ]);
L3=Link([0 0 20 -pi/2 0 ]);
L4=Link([0 96 0 pi/2 0 ]);
L5=Link([0 0 0 -pi/2 0 ]);
L6=Link([0 39 0 0 0 ]);
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manji'); %连接连杆,机器人取名manji
%为每一个关节设置旋转角度限制
l1u = 180.0;
l1d = -180.0;
l2u = -90.0;
l2d = 90.0;
l3u = -90.0;
l3d = 90.0;
l4u = -180.0;
l4d = 180.0;
l5u = -90.0;
l5d = 90.0;
l6u = -180.0;
l6d = 180.0;
%示教并进行工作空间计算
teach(robot);
robot.plot([pi/2,-pi/2,0,0,0,0])
hold on;
N=2000; %随机取得的工作点个数
theta1=(l1d+(l1u-l1d)*rand(N,1))*pi/180; %随机取得关节1角度
theta2=(l2d+(l2u-l2d)*rand(N,1))*pi/180; %随机取得关节2角度
theta3=(l3d+(l3u-l3d)*rand(N,1))*pi/180; %随机取得关节3角度
theta4=(l4d+(l4u-l4d)*rand(N,1))*pi/180; %随机取得关节4角度
theta5=(l5d+(l5u-l5d)*rand(N,1))*pi/180; %随机取得关节5角度
theta6=(l6d+(l6u-l6d)*rand(N,1))*pi/180; %随机取得关节6角度
for n=1:1:N
q=[theta1(n),theta2(n),theta3(n),theta4(n),theta5(n),theta6(n)];
robot.plot(q);%动画显示
p=robot.fkine(q);
a=zeros(3,1);
a(:,1)=p(1,1,1).t;
plot3(a(1,1),a(2,1),a(3,1),'b.','MarkerSize',0.5);%画出落点
hold on;
end
报错是这样的
检查下工作区里变量p当前值是否为空,有无成员属性t,可能是之前的程序计算有问题导致p无法正常被索引。