10.07.2015 Views

Informe Final (.pdf) - Wiphala.net

Informe Final (.pdf) - Wiphala.net

Informe Final (.pdf) - Wiphala.net

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Universidad Nacional de IngenieríaInteligencia ArtificialIMPLEMENTACIÓN DE UN SISTEMA DE ENSAMBLE DE PARTES DE UN TALLER DEENSAMBLADOINFORME FINALST 414 - USonia Díaz Vásquez, 012639F, soniadiva2002@hotmail.comRafael Delgado Cayetano 010102E, rafo_del_20@yahoo.esRobert Laurent Carrasco, 014523E, rob_laurent@yahoo.comChristian Rivera Pérez, 987503G, crivera@intercorp.com.peJoel Ramos Palacios, 011069A, joel17ramos@yahoo.es9 Diciembre del 2006Resumen.La propuesta planteada corresponde al trabajo grupal del curso de inteligencia artificial. Estapropuesta se enmarca dentro del tema de Operaciones de Traslación de objetos, dentro deldominio de la robótica. Para esta investigación hemos elegido el titulo “Implementación de unsistema de ensamble de partes de un taller de ensamblado”, en el cual vamos a aplicar losconceptos de traslación de objetos dentro de un taller.Actualmente en muchos talleres no se tiene automatizado el traslado y ensamble de partesdentro del proceso de ensamblado lo cual ocasiona muchas veces que el trabajo manualrequiera más esfuerzo además de una mayor precisión. Con esta propuesta se pretendebrindar una solución a la no automatización del ensamblaje de partes en la industriamanufacturera peruana, de manera que se consiga un uso más eficiente de la mano de obra, locual conllevara a incurrir en menores costos tanto en personal como en tiempo.En cuanto a antecedentes que intentan aliviar esta situación no se han encontrado dentro de lainvestigación realizada.Para llevar a cabo la solución propuesta contamos con el uso del Robot Mitsubishi de 5 gradosde liberta programado en JRobot y conectado a un PC la cual tendrá instalada los drivers quese requieran para la comunicación entre ambos equipos. Para simplificar la experimentacióndel modelo emplearemos anillos los cuales deben ser trasladados y colocados endeterminadas posiciones estáticas.Se espera obtener un algoritmo para el adecuado desenvolvimiento del robot en el problemaplanteado.Palabras ClavesGripperCinemática InversaEslabónArticulaciónTraslado de objetosJRobotGrados de libertadEnsamble de Piezas1


IMPLEMENTACIÓN DE UN SISTEMA DE ENSAMBLE DE PARTES DE UN TALLER DE ENSAMBLADOI. INTRODUCCIÓNEn el siguiente proyecto se propondrá unasolución al problema de la noautomatización del ensamblaje de partes enla industria manufacturera peruana en vistaque este proceso no esta del todoautomatizado en muchas empresas delsector.El problema se da cuando se necesitaensamblar las piezas de manera masprecisa, en menos tiempo y cuando estassean peligrosas para intervención de laspersonas.Por consiguiente resolveremos el problemade la traslación de partes de diferentestamaños, los cuales tienen determinadolugar específico donde deben ser colocadospara seguir el ensamble correcto de laspiezas.Se pretende resolver el problema por loscostos que implica el proceso manual deensamble de piezas, y por el deseo dedisminuir el margen de error y los costos queconlleva esto.a desarrollar, específicamente en ensamblede partes.Entre los factores técnicos contemplados enel problema se considera que el robot deberealizar sus tareas en tiempo real ysincronizado, para lo cual necesite de unalgoritmo optimo que satisfaga tal necesidad.1.2. Objetivos.• Automatizar el proceso de ensamble.• Reducir los costos y tiempo deensamble.• Aumentar la precisión de ensamble.1.3. Modelo de solución.El software debe recibir como datos deentrada la posición inicial de los dos objetos,el anillo y el tubo, los cuales estaránlocalizados dentro del espacio de trabajo delrobot, lo cual se nota en la imagen como unagrilla de 30x45cm. También se indica lamedida de cada eslabón del robot. Conestas medidas y los datos de entrada elsoftware debe ser capaz de trasladar elanillo y colocarlo en el tubo, determinando elmovimiento de cada articulación del robot.El brazo mecánico debe coger un anillodeterminado y luego deberá colocar el anilloen un tubo, cuya posición es fija, para lo cualusaremos el software JRobot y el robotMitsubishi RVM1 conectado a una PC.La solución del problema nos permitiráreducir los costos, el tiempo y los errores deprecisión en el proceso de ensamble.El trabajo constará del siguiente primerodefinimos el problema a investigar luegoplantearemos el plan de trabajo,posteriormente a ello desarrollaremos unmarco teórico contemplando la parte técnicay los conceptos a considerar, con estopodremos plantear un modelo de solución, locual nos permitirá diseñar el prototipo yprobarlo en el laboratorio lo cual incluye laexperimentación.1.1. El ProblemaEl problema es la poca automatización de laindustria manufacturera peruana. Esta pocaautomatización (alrededor del 50% deindustria) conlleva a un elevado costo enmano de obra y poca precisión en el trabajo1.3. Preguntas de la investigación1. ¿Cuales son las características quedebe tener el algoritmo para resolverel problema?2. ¿Cuales son las principalesdificultades para lograr elmovimiento del robot?3. ¿Cuales son las clases en el Jrobotque tuvieron que ser modificadas,para trabajar con cinemática inversa?2


IMPLEMENTACIÓN DE UN SISTEMA DE ENSAMBLE DE PARTES DE UN TALLER DE ENSAMBLADOII.DESARROLLO TEÓRICO2.1. Robot Mitsubishi RVM1El brazo robot utilizado para este trabajo esel que se presenta en el grafico, que posee5 grados de libertad, los cuales estándenotados por sus similares al ser humano,estos son: Cintura, hombro, codo, muñecaelevacióny muñeca-giro. Además poseeuna tenaza que permite coger objetos.Para cada grado de libertad hay un motorque acciona el movimiento, estos grados delibertad, permitirán representar todos losmovimientos de lo motores.Para comprender el sistema del control delbrazo del robot, se tiene que conocer lasvariables o señales que intervienen y el flujode información que circula a través de dichosistema.La variable de entrada es la posición delbrazo y la señal es obtenida por medio delos encoders (encargados de representar losmovimientos del motor), la variable de salidaes el movimiento de las articulaciones delbrazo y es obtenida por medio delfuncionamiento de los motores.2.2. Ensamble de piezasEl proceso de ensamble de piezas requierede gran precisión y habilidad pero al mismotiempo contiene un problema al evitar laflexibilidad. Si embargo, el hecho de queeste proceso represente un ahorrosignificativo de los costes totales delproducto, ha propiciado las investigaciones ydesarrollos en esta área, consiguiéndoseimportantes avances.En la actualidad existe muchos procesos deensamble que se han automatizadoempleando maquinas especiales de granprecisión y rapidez. Por otro lado el mercadonecesita de sistemas más flexibles quepermitan introducir frecuentesmodificaciones en los productos al costomínimo. Aquí es donde entra como soluciónel robot industrial, definido con unmanipulador multifuncional, reprogramable ycapaz de mover materias, piezas,herramientas o dispositivos especiales,según trayectorias variables programadaspara realizar tareas diversas.Existen aplicaciones donde el robotmanipula piezas pequeñas, para lo cual seayuda de alimentadores, posicionadores ocensores, y estos últimos, necesarios entrabajos con bajas tolerancias. En todos loscasos, es vital precisión y la repetitibilidad,siendo lo ideal que el robot maneje objetospequeños.Para lograr que el robot se mueva no bastacon conocer la posición inicial y final delgripper; es necesario conocer los ángulos enque se deben girar cada articulación delbrazo del robot. Para ello se recurre a lacinemática inversa. La cual tiene comoobjetivo encontrar la posición que debenadoptar las diferentas articulaciones paraque el final del movimiento el sistema lleguea una posición concreta.Hay que tener en cuenta que en lacinemática inversa, el procedimiento para laobtención de las ecuaciones de la solucióndepende de la articulación del robot, como laposición inicial del robot y la longitud decada parte móvil que integra al robot.2.2. TécnicasEl brazo manipulador tiene 5 grados delibertad, el cual le permite localizar suobjetivo en un punto predefinido del entorno.Los objetivos situados dentro del espacio detrabajo del robot son estacionarios, y laplanificación de la trayectoria es un caminogeométrico descrito con una curva continuade longitud finita en el espacio del robot.Este proceso considera la posición delelemento objetivo en base a ella determinalos movimientos a seguir. Esta técnica esconocida como cinemática inversa donde adiferencia de la cinemática directa, elsoftware del robot calculara el conjunto deángulos que debe seguir cada uno de susgrados de libertad para poder lograr su meta.Para la técnica de cinemática inversa a usarse requiere del algoritmo de Denavit-Hartenberg, el cual permite calcular lacadena cinemática del robot para determinarlos ángulos que deben moverse cada uno delos grados de libertad del robot paraposicionar el efector final en el objeto meta.Luego de posicionar el efector final en esteobjeto, se llevará a cabo otra cinemáticainversa para trasladarlo.3


IMPLEMENTACIÓN DE UN SISTEMA DE ENSAMBLE DE PARTES DE UN TALLER DE ENSAMBLADOLos pasos para determinar la cadenacinemática del algoritmo Denavit-Hartenbergson los siguientes:• Determinar los sistemascoordenados• Determinar la orientación de los ejes• Identificar las rotaciones para pasardel SCi SC i+1• Armar la matriz D-H• Armar la cadena cinemáticaLas reglas a considerar para hacer esteproceso:• Rotar en Z• Traslación en Z si es eslabón móvil• X perpendicular a Zi y Zi-1• Traslación en X si es eslabón fijo• No se rota en Y• No se traslada en Y2.3. AplicacionesLos robots son usados hoy en día para llevara cabo tareas sucias, difíciles y repetitivaspara los humanos. Esto usualmente toma laforma de un robot industrial usado en laslíneas de producción. Otras aplicacionesincluyen limpieza de residuos tóxicos,exploración espacial, minera, búsqueda yrescate de personas y la localización deminas terrestres. La manufactura continuasiendo el principal mercado donde los robotsson utilizados. En particular robotsarticulados (Similares en capacidad ymovimiento a un brazo humano) son los másusados comúnmente. Las aplicacionesincluyen soldado, pintado y carga demaquinaria. La industria automotriz hatomado gran ventaja de esta tecnologíadonde los robots han sido programados parareemplazar el trabajo de los humanos enmuchas tareas repetitivas. Existe una granesperanza especialmente en Japón, de queel cuidado del hogar para la población deedad avanzada pueda ser llevado por robots.Las siguientes empresas utilizan robots parael proceso de ensamble:Ford-MazdaFUENTE:http://redem.buap.mx/t3adrian.htmBoeingFUENTE:http://www.avmag.com.ar/n12/boeing-787-aeromexico.htmLa Ford Motor Company cuenta con 172robots en las distintas áreas deproducción.FUENTE:http://www.usembassymexico.gov/boletines/sp040127Ford.htmlLos robots industriales KUKA son utilizadospor empresas como GM, Chrysler, Ford,Porsche, BMW, Audi, Mercedes-Benz,Volkswagen, Harley-Davidson o Boeing,Siemens, IKEA, Wal-Mart, Nestlé, Budweisery Coca-ColaFUENTE:http://es.wikipedia.org/wiki/KUKAPor ejemplo Volkswagen México cuenta conlíneas de fabricación indpendiente para susmodelos Jetta, Beetle, Sedan y BeetleCabrio. Su proceso inicia con la fabricaciónde la plataforma, posteriormente se añadenlas cajas de rueda, la pared transversal y lachapa de cierre, enseguida se anexan loscostados y el toldo para terminarensamblado puertas y tapas dando eldetallado final a la carrocería, antes de suentrega a pintura. Para ello cuenta con 250robots KUKA, que apoyan el ensamble delas partes.FUENTE:http://catarina.udlap.mx/u_dl_a/tales/documentos/lii/luna_m_d/capitulo1.<strong>pdf</strong>BSH Bosch und Siemens HausgeräteAplicación: Colocación de aislante enlavavajillasFUENTE:http://www.kuka.com/mexico/es/solutions/solutions_search/L_R218_Handling_of_dishwater_housings.htm4


IMPLEMENTACIÓN DE UN SISTEMA DE ENSAMBLE DE PARTES DE UN TALLER DE ENSAMBLADOIII.DESARROLLO EXPERIMENTAL.3.1. Planteamiento de la solución.Captura la posición delobjeto en el sistema decoordenadas BHalla la posición final delefector en el sistema decoordenadas AResolver el sistema deecuacionesHallar los ángulos derotación de los motoresdel robot1Mover los motores delrobotSe considera el centro geométrico de losobjetos como posiciones en el experimento.La solución consiste en los siguientes pasos:el programa debe recibir como entrada laposición del objeto (anillo) a trasladar en elsistema de coordenadas del espacio detrabajo y la posición donde va a sercolocado (tubo), también respecto al sistemadel espacio de trabajo. Con este dato, sedebe calcular la posición requerida delobjeto respecto al sistema del efector (B) yla posición respecto a la base del robot (A).Coger el objetoCapturar posición paracolocar objetos1Colocar elobjetoAplicando cinemática inversa, el programadebe hallar los ángulos de rotación que debegirar cada motor para que el efector semueva a la posición del objeto. Una veztomado el objeto (cerrar el gripper), se debecalcular la posición destino en base a lossistemas A y B para que el efector trasladeel objeto a dicha posición. Una vez logradoesto, el robot introduce lentamente el anilloen el tubo y abre el gripper para soltarlo.5


IMPLEMENTACIÓN DE UN SISTEMA DE ENSAMBLE DE PARTES DE UN TALLER DE ENSAMBLADOModelo de Denavit-Hartenberg:i α a θ d1 θ1 l1-π/22 θ2a13 θ3a24 θ45 -π/2a3-π/2θ5Cadena cinemática:B T EF = Rot(z,θ1)Tras(0,0,l1)Rot(x,-π/2)Rot(z,θ2)Tras(a1,0,0)Rot(z,θ3)Tras(a2,0,0) Rot(z,θ4)Tras(a3,0,0)Rot(z,-π/2) Rot(x,-π/2) Rot(z,θ5)Espacio de trabajo:3.2. Desarrollo experimental.Pseudocódigo:Variables: θ1, θ2, θ3, θ4, θ5Entrada: número de anillos a colocar (n)Definir posición inicial (home) del Efector<strong>Final</strong> (EF). [Entrada: (x,y,z) de EF en B]contador = n?Si: FIN;No: Hacer lo siguiente:Definir posición siguiente (posición delobjeto a trasladar: anillo) [Entrada: (x,y,z) delanillo en B).Movimiento del robot (Mediante CinemáticaInversa hallar los θi para cada articulación).(mov. rápido)Movimiento de aproximación (mov. lento).Cerrar pinza.Movimiento de retirada (mov. Lento).Definir posición siguiente (posición del lugardonde colocar el anillo) [Entrada: (x,y,z) deltubo).Movimiento del robot (Mediante CinemáticaInversa hallar los θi para cada articulación).(mov. rápido)Movimiento de aproximación (mov. lento).Abrir pinza.Movimiento de retirada (mov. Lento).Regresar a la posición inicial (home).Ir a 3.IV. CONCLUSIONES1. La robótica tiene una aplicaciónimportante en la industria, puespermite automatizar procesos con elmínimo margen de error.6


IMPLEMENTACIÓN DE UN SISTEMA DE ENSAMBLE DE PARTES DE UN TALLER DE ENSAMBLADO2. Una de estas aplicaciones en laindustria es el ensamblaje de partes,sobre todo en la industria automotriz.3. La cinemática directa e inversa sonmétodos muy útiles para viabilizar elmovimiento del robot; la primera essencilla de calcular, sin embargo, lasegunda brindará mayor exactitud.V. BIBLIOGRAFÍA.Universidad de Guadalajara- CentroUniversitario de Ciencias Exactas eIngenierías.Hppt://proton.ucting.udg.mx/materiascinematica.htmX-ROBOTICShttp://www.x-robotics.com/cinematica.htmhttp://catarina.udlap.mx/u_dl_a/tales/documentos/lis/lezama_m_r/capitulo2.<strong>pdf</strong>http://es.wikipedia.org/wiki/robotAIMA capitulo 3, Página 75: Secuencia deensamble.VI. ANEXOS6.1 Código de la cinemática inversapackage ch.unige.rvm1;import java.util.StringTokenizer;public class DrawYZCommand extendsAbsoluteMoveCommand {public DrawYZCommand() {}public DrawYZCommand(int y, int z) {super();_y = y;_z = z;inverseKinematics();}protected void setName() {_name = "DY";}protected void sendCommand() {String relativeCommand =toAbsoluteMove();7_state.getConnection().send(relativeCommand);}public Command getClone() {return new DrawYZCommand(_y, _z);}protected voidparseParameters(StringTokenizer tokenizer)throws Exception {String token = tokenizer.nextToken();_y = Integer.parseInt(token);token = tokenizer.nextToken();_z = Integer.parseInt(token);inverseKinematics();}public boolean areParametersValid() {return (inRange(_baseAngle, 0,RVM1.BASE_ROTATION_RANGE) &&inRange(_shoulderAngle, 0,RVM1.SHOULDER_ROTATION_RANGE) &&inRange(_elbowAngle, 0,RVM1.ELBOW_ROTATION_RANGE) &&inRange(_pitchAngle, 0,RVM1.PITCH_ROTATION_RANGE) &&inRange(_rollAngle, 0,RVM1.ROLL_ROTATION_RANGE));}// protected void updateRVM1State() {// _state.setBasePos(_baseAngle);// _state.setShoulderPos(_shoulderAngle);// _state.setElbowPos(_elbowAngle);// _state.setPitchPos(_pitchAngle);// _state.setRollPos(_rollAngle);// }protected void appendParameters(StringBuffersb) {sb.append(" ");sb.append(_y);sb.append(",");sb.append(_z);sb.append(" (");super.appendParameters(sb);sb.append(")");}private void inverseKinematics() {_baseAngle = _state.getBasePos();_rollAngle = _state.getRollPos();int z = _z - RVM1.BASE_LINK_LENGTH;double phi = Math.atan2((double) z,(double) _y);double a = (double) (_y * _y + z * z -RVM1.SHOULDER_LINK_LENGTH *RVM1.SHOULDER_LINK_LENGTH -


IMPLEMENTACIÓN DE UN SISTEMA DE ENSAMBLE DE PARTES DE UN TALLER DE ENSAMBLADORVM1.ELBOW_LINK_LENGTH *RVM1.ELBOW_LINK_LENGTH/*-RVM1.TOOL_LENGTH *RVM1.TOOL_LENGTH*/) /(double) (2 *RVM1.SHOULDER_LINK_LENGTH *RVM1.ELBOW_LINK_LENGTH/**RVM1.TOOL_LENGTH*/);// System.out.println("a:" + a);double a2 = a * a;double theta2;double b = 0.0;if(a2 > 1.0) {a2 = 1.0;}b = Math.sqrt(1.0 - a2);// System.out.println("b:" + b);// int y = (int)(_y - Math.cos(phi) *RVM1.TOOL_LENGTH);// z -= Math.sin(phi) *RVM1.TOOL_LENGTH;sb.append((int)Math.round(_shoulderAngle*10)/10 - _state.getShoulderPos());sb.append(',');sb.append((int)Math.round(_elbowAngle*10)/10 -_state.getElbowPos());sb.append(',');sb.append((int)Math.round(_pitchAngle*10)/10 -_state.getPitchPos());sb.append(',');sb.append((int)Math.round(_rollAngle*10)/10 -_state.getRollPos());System.out.println(sb);return sb.toString();}}private int _y, _z;int c = 0;do {b = -b;theta2 = Math.atan2(-b, a);// System.out.println("theta2:" + theta2);double theta1 = Math.atan2(z, _y) -Math.atan2(RVM1.ELBOW_LINK_LENGTH *Math.sin(theta2),RVM1.SHOULDER_LINK_LENGTH +RVM1.ELBOW_LINK_LENGTH *Math.cos(theta2));double theta3 = phi - theta1 - theta2;_shoulderAngle = (float)Math.toDegrees(theta1) + 30;_elbowAngle = (float)Math.toDegrees(theta2) + 110;_pitchAngle = (float)Math.toDegrees(theta3) + 90;// System.out.println(_shoulderAngle + ","+ _elbowAngle + "," + _pitchAngle);c++;} while(!areParametersValid() && c < 2);}private String toAbsoluteMove() {StringBuffer sb = new StringBuffer();sb.append("MJ ");sb.append((int)Math.round(_baseAngle*10)/10 -_state.getBasePos());sb.append(',');8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!