Está en la página 1de 9

cuerpo1=rigidBody('cuerpo1');

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

cuerpo1.Joint=jta1;

jta1.HomePosition=pi/4;

robot=rigidBodyTree;

addBody(robot,cuerpo1,'base')

showdetails(robot);

cuerpo2=rigidBody('cuerpo2');

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

>> cuerpo2.Joint=jta2;

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

>> showdetails(robot);

cuerpo3=rigidBody('cuerpo3');

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

>> cuerpo3.Joint=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;

limitJointChange.Weights = zeros(size(limitJointChange.Weights)); fixOrientation.Weights = 0;

distanceFromCup.TargetPosition = [0,0,intermediateDistance];

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


fixOrientation, limitJointChange);

limitJointChange.Weights = ones(size(limitJointChange.Weights)); fixOrientation.Weights = 1;

fixOrientation.TargetOrientation = 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. distanceFromCup.TargetPosition(3) =


distanceFromCupValues(k-1); % Restrict the joint positions to lie close to their previous values.
limitJointChange.Bounds = [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); p.XData(k) =


gripperPosition(k,1); p.YData(k) = gripperPosition(k,2); p.ZData(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 = [robot.homeConfiguration robot.randomConfiguration


robot.randomConfiguration]; 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 = [robot.homeConfiguration robot.randomConfiguration
robot.randomConfiguration];
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