zoukankan      html  css  js  c++  java
  • motoman机器人正向运动学

    正向运动学

    不用twist也不用D-Htable,直接随便建立坐标系,根据相邻坐标系之间的坐标变换,来计算总的变换。经试验,的确可行。
    %输入是各个关节的数值,输出(BASE)世界坐标系的6维向量
    in=[7952, 2913, -815, 56554, -2050, -34617];

    s1=in(1)*pi/2/120000;
    s2=-in(2)*pi/2/160000; % -
    s3=-s2+in(3)*pi/2/120000; % + 和2有耦合
    s4=-in(4)*pi/2/80000; % -
    s5=in(5)*pi/2/80000; % +
    s6=-in(6)*pi/2/50000; % -

    %从世界坐标系c0到坐标系c1,仅有绕z轴的转动
    g01=rot(3,s1,[0 0 0]);

    %从c1到c2,包括一个y轴平移和一个绕x轴的转动
    g12=rot(1,s2,[0 150 0]);

    %从c2到c3,包括一个z轴平移和一个绕x轴的转动
    g23=rot(1,s3,[0 0 260]);

    %从c3到c4,包括一个z轴平移和y轴转动
    g34=rot(2,s4,[0 0 60 ]);

    %从c4到c5,包括一个y轴平移和x轴转动
    g45=rot(1,s5,[0 260 0]);

    %从c5到c6,包括一个y轴转动
    g56=rot(2,s6,[0 0 0]);
    %c6到ctool
    g6t=[0 1 0 0;0 0 1 90;1 0 0 0;0 0 0 1];

    gw0=[0 1 0 0;-1 0 0 0;0 0 1 0;0 0 0 1];
    g01
    g02=g01*g12
    g03=g02*g23
    g04=g03*g34
    g05=g04*g45
    g06=g05*g56

    gw6=gw0*g06
    gwt=gw6*g6t

    out=[gwt(1:3,4).' oula(gwt(1:3,1:3).')*180/pi]

    function y=oula(x)
    [h,w]=size(x);
    if h==3 & w==3
        y=oula1(x);
    else
        y=oula2(x);
    end

    function [sitaxyz]=oula1(R)
    R=R.';
    if abs(det(R)-1)>1e-2,error;end
    sita=asin(-R(3));

    if abs(1-R(3)^2)<1e-5
        sai=0;
        fai=0;
        sitaxyz=[fai sita sai];
        return;
    end

    sai=asin(R(2)/sqrt(1-R(3)^2));
    if R(2)>=0 & R(1)>=0
    elseif R(1)<0
        sai=pi-sai;
    else
        sai=2*pi+sai;
    end
       
    fai=asin(R(6)/sqrt(1-R(3)^2));
    if R(9)<0
        fai=pi-fai;
    elseif R(6)<0 & R(9)>0
        fai=2*pi+fai;
    end

    if fai>pi
        fai=fai-2*pi;
    end
    if sai>pi
        sai=sai-2*pi;
    end
    sitaxyz=[fai sita sai];

    function R=oula2(sitaxyz)
    if length(sitaxyz)~=3,error;end
    fai=sitaxyz(1);
    sita=sitaxyz(2);
    sai=sitaxyz(3);
    R=[1 0 0;0 cos(fai) sin(fai);0 -sin(fai) cos(fai)]* [cos(sita) 0 -sin(sita);0 1 0;sin(sita) 0 cos(sita)]* [cos(sai) sin(sai) 0;-sin(sai) cos(sai) 0;0 0 1];




    坐标系定义.JPG

    例子:
    ----PulseNO.S 0,L 0,U 0,R 0,B 0,T 0
    ----CartPos.S 500.001,L 0.001,U 319.999,R 180,B -90,T 0

    ----PulseNO.S 1568,L 75,U -846,R 1088,B -777,T 1816
    ----CartPos.S 500.699,L 10.249,U 314.796,R 108.51,B -85.29,T 72.71

    ----PulseNO. 7952, 2913, -815, 56554, -2050, -34617
    ----CartPos. 505.507, 49.537, 314.702, 109.49, -85.34, 74.46


     

  • 相关阅读:
    webpack-dev-server的使用及说明
    Web框架
    HTTP协议
    jQuery的使用
    发红包
    python操作mysql
    mysql索引与补充
    JavaScript之BOM操作
    JavaScript之DOM操作
    JavaScript之基础语法
  • 原文地址:https://www.cnblogs.com/cutepig/p/994071.html
Copyright © 2011-2022 走看看