0% encontró este documento útil (0 votos)
601 vistas9 páginas

Construcción y simulación de robots

El documento describe la construcción paso a paso de un robot utilizando comandos como rigidBody, rigidBodyJoint y addBody en MATLAB. Luego, selecciona el robot Kuka KR 10 R1100 y proporciona sus especificaciones y aplicaciones. Finalmente, programa una serie de movimientos para generar una trayectoria usando el robot Franka Emika Panda y el robot ABB IRB120.

Cargado por

Randy Barranco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
601 vistas9 páginas

Construcción y simulación de robots

El documento describe la construcción paso a paso de un robot utilizando comandos como rigidBody, rigidBodyJoint y addBody en MATLAB. Luego, selecciona el robot Kuka KR 10 R1100 y proporciona sus especificaciones y aplicaciones. Finalmente, programa una serie de movimientos para generar una trayectoria usando el robot Franka Emika Panda y el robot ABB IRB120.

Cargado por

Randy Barranco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

cuerpo1=rigidBody('cuerpo1');

jta1=rigidBodyJoint('jta1','revolute');

[Link]=jta1;

[Link]=pi/4;

robot=rigidBodyTree;

addBody(robot,cuerpo1,'base')

showdetails(robot);

cuerpo2=rigidBody('cuerpo2');

>> jta2=rigidBodyJoint('jta2','revolute');

>> [Link]=jta2;

>> addBody(robot,cuerpo2,'cuerpo1');

>> showdetails(robot);

cuerpo3=rigidBody('cuerpo3');

>> jta3=rigidBodyJoint('jta3','revolute');

>> [Link]=jta3;

>> addBody(robot,cuerpo3,'cuerpo2');
>> showdetails(robot);

bodyEndEffector=rigidBody('endeffector');

>> addBody(robot,bodyEndEffector,'cuerpo3');

>> showdetails(robot);

2. Construir un robot paso a paso con los comandos rigidBody, rigidBodyJoint,


rigidBodyTree, addBody entre otros.
3. Investigar 2 modelos de robots comerciales que posea el Robotic System
Toolbox, o el Toolbox de Robótica de Peter Corke, seleccionar uno de ellos y
realizar una simulación programando una serie de movimientos que generen una
trayectoria.

Kuka Robot KR 10 R1100

Kuka Robot KR 10 R1100 Rigged for Cinema 4D es un modelo 3D de alta calidad


y foto real que mejorará el detalle y el realismo de cualquiera de sus proyectos de
renderizado. El modelo tiene un diseño totalmente texturizado y detallado que
permite renders de primer plano. Modelo renderizado con V-Ray en 3ds Max 2012.
Los renders no tienen post procesamiento.
Kuka Robot KR 10 R1100 Modelo 3D totalmente equipado con ayudantes en
Cinema 4D R17.
Funciones:
- Modelo poligonal de alta calidad, escalado correctamente para una
representación precisa del objeto original.
- Las resoluciones de los modelos están optimizadas para la eficiencia del
polígono. (En Cinema 4D, la función Superficie de subdivisión se puede utilizar
para aumentar la resolución de malla si es necesario).
- Todos los colores se pueden modificar fácilmente.

Datos generales

 Capacidad máxima de carga: 10 Kg


 Numero de ejes: 5
 Alcance máximo horizontal: 1101 mm
 Repetibilidad: +-0.03 mm.
 Controlador: KR C4
Movimiento  de rango
 Eje 1: +/- 170º
 Eje 2: +45º/-190º
 Eje 3: +156º/-120º
 Eje 4: +/-185º
 Eje 5: +/-120ºX W
 Eje 6: +/-350º
Aplicaciones del Robot
 Ensamble
 Pick and place
 Manipulación de partes
 Embalaje

intermediateDistance = 0.3;

[Link] = zeros(size([Link])); [Link] = 0;

[Link] = [0,0,intermediateDistance];

[qWaypoints(2,:),solutionInfo] = gik(q0, heightAboveTable, ... distanceFromCup, alignWithCup,


fixOrientation, limitJointChange);

[Link] = ones(size([Link])); [Link] = 1;

[Link] = tform2quat(getTransform(lbr,qWaypoints(2,:),gripper));
finalDistanceFromCup = 0.05; distanceFromCupValues = linspace(intermediateDistance,
finalDistanceFromCup, numWaypoints-1);

maxJointChange = deg2rad(10);

for k = 3:numWaypoints % Update the target position. [Link](3) =


distanceFromCupValues(k-1); % Restrict the joint positions to lie close to their previous values.
[Link] = [qWaypoints(k-1,:)' - maxJointChange, ... qWaypoints(k-1,:)' +
maxJointChange]; % Solve for a configuration and add it to the waypoints array.
[qWaypoints(k,:),solutionInfo] = gik(qWaypoints(k-1,:), ... heightAboveTable, ... distanceFromCup,
alignWithCup, ... fixOrientation, limitJointChange); end

framerate = 15; r = rateControl(framerate); tFinal = 10; tWaypoints =


[0,linspace(tFinal/2,tFinal,size(qWaypoints,1)-1)]; numFrames = tFinal*framerate; qInterp =
pchip(tWaypoints,qWaypoints',linspace(0,tFinal,numFrames))';

gripperPosition = zeros(numFrames,3); for k = 1:numFrames gripperPosition(k,:) =


tform2trvec(getTransform(lbr,qInterp(k,:), ... gripper)); end

figure; show(lbr, qWaypoints(1,:), 'PreservePlot', false); hold on


exampleHelperPlotCupAndTable(cupHeight, cupRadius, cupPosition); p =
plot3(gripperPosition(1,1), gripperPosition(1,2), gripperPosition(1,3));

hold on for k = 1:size(qInterp,1) show(lbr, qInterp(k,:), 'PreservePlot', false); [Link](k) =


gripperPosition(k,1); [Link](k) = gripperPosition(k,2); [Link](k) = gripperPosition(k,3); waitfor(r);
end hold off
tpts = 0:4; sampleRate = 20; tvec = tpts(1):1/sampleRate:tpts(end); numSamples = length(tvec);
robot = loadrobot('frankaEmikaPanda',DataFormat='column')

rng default frankaWaypoints = [[Link] [Link]


[Link]]; frankaTimepoints = linspace(tvec(1),tvec(end),3); [q,qd] =
trapveltraj(frankaWaypoints,numSamples);

figure set(gcf,'Visible','on'); rc = rateControl(sampleRate); for i = 1:numSamples


show(robot,q(:,i),FastUpdate=true,PreservePlot=false); waitfor(rc); end

tpts = 0:4;
sampleRate = 20;
tvec = tpts(1):1/sampleRate:tpts(end);
numSamples = length(tvec);
robot = loadrobot('abbIrb120',DataFormat='column');
>> rng default
frankaWaypoints = [[Link] [Link]
[Link]];
frankaTimepoints = linspace(tvec(1),tvec(end),3);
[q,qd] = trapveltraj(frankaWaypoints,numSamples);
>> figure
set(gcf,'Visible','on');
rc = rateControl(sampleRate);
for i = 1:numSamples
show(robot,q(:,i),FastUpdate=true,PreservePlot=false);
waitfor(rc);
end

También podría gustarte