以“二进制”类型的方式递增多个变量

时间:2019-12-09 06:53:46

标签: matlab robotics

我目前正在研究一些代码,以粗略显示机械臂可以使用MatLab(工作区)到达的所有点。结果应该是3D图上的点云。我希望使用正向运动学来做到这一点。我的代码当前看起来像这样。您不必了解其背后的数学原理。我只需要帮助增加它的所有值:

function [ T ] = TransMat( a,b,c,d )  
T = [ cosd(d)  -sind(d)*cosd(b)  sind(d)*sind(b)  a*cosd(d); 
      sind(d)   cosd(d)*cosd(b) -cosd(d)*sind(b)  a*sind(d); 
      0        sind(b)         cosd(b)         c; 
      0        0              0              1]; 
end 
%distal DH
a1 = 0;     alpha1 = 0;     d1 = 3; %t1 = 0   %shoulder1 to base
a2 = 0;     alpha2 = 90;    d2 = 0; %t2 = 0   %shoulder2 to shoulder1
a3 = 5.75;  alpha3 = 0;     d3 = 0; %t3 = 0   %elbow to shoulder2
a4 = 7.375; alpha4 = 0;     d4 = 0; %t4 = 0   %wrist1 to elbow
a5 = 0;     alpha5 = -90;   d5 = 2; %t5 = 0   %wrist2 to wrist1

t1=0; t2=0; t3=0; t4=0; t5=0;
A1 = TransMat(a1,alpha1,d1,t1);
A2 = TransMat(a2,alpha2,d2,t2);
A3 = TransMat(a3,alpha3,d3,t3);
A4 = TransMat(a4,alpha4,d4,t4);
A5 = TransMat(a5,alpha5,d5,t5);

for t1 = 0:180
    A1 = TransMat(a1,alpha1,d1,t1);
    A2 = TransMat(a2,alpha2,d2,t2);
    A3 = TransMat(a3,alpha3,d3,t3);
    A4 = TransMat(a4,alpha4,d4,t4);
    T = A1*A2*A3*A4;%*A5;  
    X=T(1,4);  
    Y=T(2,4);  
    Z=T(3,4);
    plot3(X,Y,Z,'.')  
    hold on; 
    t1 = t1 + 20;
    if t1 == 180
        t2 = t2 + 20;
        t1 = 0;
    end
    if t2 == 180
        t3 = t3 + 20;
        t2 = 0;
    end
    if t3 == 180
        t4 = t4 + 20;
        t3 = 0;
    end
    if t4 == 180
    end
end

此刻,我刚刚遍历了t1 9次。我想将t2递增20,然后再通过t1递增9次。说完所有这些,我相信我应该得到9 ^ 5分。我知道这很像二进制加法,但是我是一个新手程序员,我还没有编程能力来实现我的计划!


修改:

代码已更新为最新版本,并带有嵌套循环。不幸的是,代码只是在一个平面上绘制,因此仍然有些错误。如果找到解决方案,我将进行更新。

0 个答案:

没有答案