Plotting position of robot joint graph does not work

醉酒当歌 提交于 2019-12-11 07:56:32

问题


I want to write a command to display equation of robot position and its graph. This is my command, but it did not display the graph:

clear;
clc;

% initial position
theta1s=-150;
theta2s=-80;
theta3s=-50;
theta4s=-100;
theta5s=-180;

% final position
theta1f=20;
theta2f=100;
theta3f=80;
theta4f=50;
theta5f=180;

% time taken for movement
tf=input('time=')

% acceleration for every link
acc1=(4.*(20-(-150)))./(tf^2)
acc2=(4.*(100-(-80)))./(tf^2)
acc3=(4.*(80-(-50)))./(tf^2)
acc4=(4.*(50-(-100)))./(tf^2)
acc5=(4.*(180-(-180)))./(tf^2)

% blending time for every link
tb1=((0.5.*(tf))-(0.5.*(sqrt((((tf^2).*acc1)-(4.*(20-(-150))))./acc1))))
t = 0;
for x = 0:tf;
    t = t + 0.1;
    if 0<t<=tb1;
        y = theta1s+((0.5.*acc1).*(t^2));
    elseif tb1<t<=tf-tb1;
        y = (theta1s-((0.5.*acc1).*(tb1^2)))+(acc1.*tb1.*t);
    else tf-tb1<t<=tf;
        y = theta1s-((0.5.*acc1).*(tf.*t)^2);
    end

    plot(x,y,'r')
    title('Position Versus Time');
    xlabel('time in s');
    ylabel('position in m');
    grid on;
    drawnow;  
end

disp(y);

回答1:


You can replace plot(x,y,'r') by plot(x,y,'r*'). So, you will be able to see sepparate points. Also you will need to add "hold on" after plot function to be able to overlay plots for all iterations.

If you want to draw line but not sepparate points, you should better move the visualization out of the loop. Here is the modified code:

clear;
clc;

% initial position
theta1s=-150;
theta2s=-80;
theta3s=-50;
theta4s=-100;
theta5s=-180;

% final position
theta1f=20;
theta2f=100;
theta3f=80;
theta4f=50;
theta5f=180;

% time taken for movement
tf=input('time=')

% acceleration for every link
acc1=(4.*(20-(-150)))./(tf^2)
acc2=(4.*(100-(-80)))./(tf^2)
acc3=(4.*(80-(-50)))./(tf^2)
acc4=(4.*(50-(-100)))./(tf^2)
acc5=(4.*(180-(-180)))./(tf^2)

% blending time for every link
tb1=((0.5.*(tf))-(0.5.*(sqrt((((tf^2).*acc1)-(4.*(20-(-150))))./acc1))))
t = 0;

% allocate memory for array
y = zeros(1, tf+1);

for x = 0:tf;
    t = t + 0.1;
    if 0<t<=tb1;
        y(x+1) = theta1s+((0.5.*acc1).*(t^2));
    elseif tb1<t<=tf-tb1;
        y(x+1) = (theta1s-((0.5.*acc1).*(tb1^2)))+(acc1.*tb1.*t);
    else tf-tb1<t<=tf;
        y(x+1) = theta1s-((0.5.*acc1).*(tf.*t)^2);
    end
end

plot(0:tf,y,'r')
title('Position Versus Time');
xlabel('time in s');
ylabel('position in m');
grid on;
drawnow;

disp(y);


来源:https://stackoverflow.com/questions/5670946/plotting-position-of-robot-joint-graph-does-not-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!