Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

Informe Lab 3 Robotica

Table of Contents
Video ................................................................................................................................ 1
Asignación sistema de coordenadas ........................................................................................ 1
Parametros DHmod ............................................................................................................. 1
Toolbox ............................................................................................................................. 1

Realizado por: Brayan Steeven Hernandez Rodriguez Nicolas Rios Perez

Video
https://www.youtube.com/watch?v=yTTW8NGIRw4&feature=youtu.be

Asignación sistema de coordenadas

Parametros DHmod

Toolbox
clear
%Dimensiones l1 l2 l3 l4

1
Informe Lab 3 Robotica

l1 = 42;
l2 = 105;
l3 = 105;
l4 = 110;

q1=[-0.34 -0.34 -0.34 -0.34];


q2=[0.52 -0.52 0.52 -0.52];
q3=[-1.57 0.26 -0.95 0.29];
q4=[-1.57 0.78 -0.95 0.78];

Creacion links

L(1)= Link('revolute','alpha',0
,'a',0,'d',l1,'offset',0,'qlim',deg2rad([-150 150]),'modified');
L(2)=
Link('revolute','alpha',pi/2 ,'a',0,'d',0,'offset',pi/2,'qlim',deg2rad([-150
150]),'modified');
L(3)=
Link('revolute','alpha',0,'a',l2,'d',0,'offset',0,'qlim',deg2rad([-150
150]),'modified');
L(4)=
Link('revolute','alpha',0,'a',l3,'d',0,'offset',0,'qlim',deg2rad([-150
150]),'modified');

Union eslabones

robot= SerialLink(L,'name','Px');
%
A_4T=[0 0 1 l4;
-1 0 0 0;
0 -1 0 0;
0 0 0 1];
robot.tool=A_4T;

%grafica Home
robot.plot(deg2rad([0 0 0 0]),'workspace',[-500 500 -500 500 -500
500], 'scale', 0.4, 'jaxes',...
'tilesize',2);
hold on

2
Informe Lab 3 Robotica

robot.plot(q1,'workspace',[-500 500 -500 500 -500 500], 'scale',


0.4, 'jaxes',...
'tilesize',2);
hold on

3
Informe Lab 3 Robotica

robot.plot(q2,'workspace',[-500 500 -500 500 -500 500], 'scale',


0.4, 'jaxes',...
'tilesize',2);
hold on

4
Informe Lab 3 Robotica

robot.plot(q3,'workspace',[-500 500 -500 500 -500 500], 'scale',


0.4, 'jaxes',...
'tilesize',2);
hold on

5
Informe Lab 3 Robotica

robot.plot(q4,'workspace',[-500 500 -500 500 -500 500], 'scale',


0.4, 'jaxes',...
'tilesize',2);
hold on

6
Informe Lab 3 Robotica

Published with MATLAB® R2017b

7
Script Matlab ROS
clear
home=[2.61 2.61 2.61 2.61 0];
q1=[0 0 0 0 0];
q2=[-0.34 -0.34 -0.34 -0.34 0];
q3=[0.52 -0.52 0.52 -0.52 0];
q4=[-1.57 0.26 -0.95 0.29 0];
q5=[-1.57 0.78 -0.95 0.78 0.17];
q=home+q3;

rosinit; %Conexión con nodo maestro

client=rossvcclient('/waist_controller/set_speed');
newspeed=rosmessage(client);
client2=rossvcclient('/waist_controller/set_torque_limit');
newtorque=rosmessage(client2);

newspeed.Speed=0.2;
newtorque.TorqueLimit=7;
call(client,newspeed);
call(client2,newtorque);

pos1Pub = rospublisher('/waist_controller/command','std_msgs/
Float64'); %Creación publicador
pos1Msg = rosmessage(pos1Pub); %Creación de mensaje
pos1Msg.Data = q(1); %Valor del mensaje
send(pos1Pub,pos1Msg); %Envio
pause(8);

client=rossvcclient('/shoulder_controller/set_speed');
newspeed=rosmessage(client);
client2=rossvcclient('/shoulder_controller/set_torque_limit');
newtorque=rosmessage(client2);

newspeed.Speed=0.2;
newtorque.TorqueLimit=10;
call(client,newspeed);
call(client2,newtorque);

pos2Pub = rospublisher('/shoulder_controller/command','std_msgs/
Float64'); %Creación publicador
pos2Msg = rosmessage(pos2Pub); %Creación de mensaje
pos2Msg.Data = q(2); %Valor del mensaje
send(pos2Pub,pos2Msg); %Envio
pause(5);

client=rossvcclient('/elbow_controller/set_speed');
newspeed=rosmessage(client);
client2=rossvcclient('/elbow_controller/set_torque_limit');
newtorque=rosmessage(client2);

newspeed.Speed=0.2;
newtorque.TorqueLimit=6.5;

1
call(client,newspeed);
call(client2,newtorque);

pos3Pub = rospublisher('/elbow_controller/command','std_msgs/
Float64'); %Creación publicador
pos3Msg = rosmessage(pos3Pub); %Creación de mensaje
pos3Msg.Data = q(3); %Valor del mensaje
send(pos3Pub,pos3Msg); %Envio
pause(5);

client=rossvcclient('/wrist_controller/set_speed');
newspeed=rosmessage(client);
client2=rossvcclient('/wrist_controller/set_torque_limit');
newtorque=rosmessage(client2);

newspeed.Speed=0.2;
newtorque.TorqueLimit=5;
call(client,newspeed);
call(client2,newtorque);

pos4Pub = rospublisher('/wrist_controller/command','std_msgs/
Float64'); %Creación publicador
pos4Msg = rosmessage(pos4Pub); %Creación de mensaje
pos4Msg.Data = q(4); %Valor del mensaje
send(pos4Pub,pos4Msg); %Envio
pause(5);

client=rossvcclient('/hand_controller/set_speed');
newspeed=rosmessage(client);
client2=rossvcclient('/hand_controller/set_torque_limit');
newtorque=rosmessage(client2);

newspeed.Speed=0.2;
newtorque.TorqueLimit=5;
call(client,newspeed);
call(client2,newtorque);

pos5Pub = rospublisher('/hand_controller/command','std_msgs/
Float64'); %Creación publicador
pos5Msg = rosmessage(pos5Pub); %Creación de mensaje
pos5Msg.Data = q(5); %Valor del mensaje
send(pos5Pub,pos5Msg); %Envio
pause(5);
rosshutdown

Published with MATLAB® R2017b

You might also like