Brazo mecnico controlado por motores de paso acoplados a un sistema con microprocesador
Reporte final presentado a la Divisin de Ciencias Bsicas e Ingeniera, como parte del Proyecto de Ingeniera Electrnica II
: /
91320399 92220209
Abril de 2000
lndice
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Propsito. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Justificacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Captulo 1
Qu es un robot?
1
2 2 2 3 3 5 5 6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Clasificacin de los robots . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Partes de un robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Captulo 2 Caractersticas generales de los robots . . . . . . . . . . . . . . . . . . .
11
11
12 14
2.1Grados de libertad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 . 1 Punto de vista de la teora de mecanismos y mquinas . . . . . . . . 2.1.2PuntodevistadelaRobtica 2.2Volumendetrabajo:Capacidaddecarga 2.3 El conceptodegr@per(elementoterminal) 2.3.1 Tipos de herramientas 2.4 Precisin en la repetibilidad
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 14
. . . . . . . . . . . . . . . . . . . 14
. . . . . . . . . . . . . . . . . . . . . . . . .
15 15 16 16 17
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 17
y posicionamientoderobots
. . . . . . . . . . . . . . . . . . .
18 18 19 19
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 LacinemticaaplicadaalaRobtica
3.3 Problema cinemtico directo 3.4 Problema cinerntico inverso
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
21
. . . . . . . . . . . . . . . . . . . . . . .
24 24 25 28
los robots . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
4.2Motoreselctricosdepasoapaso 4.3Sistemasdecontrolparamotores
PAP . . . . . . . . . . . . . . . . . . . . .
4.3.1 Sistemas de control en lazo abierto, basados en microprocesador Captulo 5 Sistemas de control con microprocesador 5.1Estructura y funcionesdelsistemadecontrol
. . . 28
. . . . . . . . . . . . . . . . . . . 30
. . . . . . . . . . . . . . . . .
30 31 32 32 32 34 35 36 36 38 66 68
5.2Niveles de controlporcomputadora . . . . . . . . . . . . . . . . . . . . . . . Captulo6Implementacindelbrazomecnico 6.1 Circuito interface entre 6.1 . 1Diseodelcircuito 6.1.2 Lista de material 6.2Descripcinde
. . . . . . . . . . . . . . . . . . . . .
los motores
y controldelbrazomecnico
uso . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduccin
La Robtica es un concepto de dominio pblico. La mayor parte de la gente tiene una idea de lo que es la Robtica, sabe sus aplicaciones y 'el potencial que posee; sin embargo, no conocen el origen de la palabra
o bien para facilitarles las labores cotidianas; se daban cuenta de que haba tareas repetitivas quese podan
igualar con un complejo sistema, y es ascomose comienzan a crear mquinas capaces de repetir las ms bien hacia el saber humano que hacia las mismas labores que el hombre realizaba. Los ingenieros griegos aportaron grandes conocimientos acerca de
aplicaciones prcticas. Tiempo despus, los autmatas fueron los protagonistas principales de una infinidad de relatos de ciencia-ficcin. Los primeros robots creados en toda la historia de la humanidad no tenan ms que un solo fin: entretener a sus dueos. Sus inventores slo se interesaban en conceder los deseos de recrear a quien les peda construir el robot. Sin embargo, estos inventores se comenzaron a dar cuenta de que los robots podan imitar movimientos humanos o de alguna criatura viva. Estos movimientos pudieron ser mecanizados y, de esta manera, se podan automatizar y mecanizar algunas de las laboresms sencillas de aquellos tiempos.El origen del desarrollo de la Robtica se basa en el empeo por automatizar la mayora de las operaciones en una fbrica; estose remonta al sigloXVII, en la industria textil,donde se disearon telaresque se controlaban con tarjetas perforadas.
Objetivo
Disear yconstruir un brazo mecnicocontrolado por unprograma de computadora que manipule los motores de paso correspondientes a cadagrado de libertad del brazo.
Propsito
Conocer las ventajas y desventajas del usodela implementacin de un brazo de robot. computadorapersonaly
la
Con el nacimiento de la Revolucin Industrial,muchas fbricastuvieron gran aceptacin por la automatizacin de procesos repetitivos en la linea de ensamblaje. La automatizacin consiste, principalmente, en disear sistemas capaces de ejecutar tareas repetitivas hechas por los hombres y de controlar operaciones sin la ayuda de un operador humano. El trmino automatizacin tambin se utiliza para describir a los sistemas programables que pueden operar independientemente del control humano. La mayora de las industrias han
sido automatizadas o utilizan tecnologia para automatizar algunas labores; en la industria de la telefonia, la
marcacin, la transmisin y la facturacin estn completamente automatizadas. La aparicin de los robots es consecuencia directa del desafio que ha representado para el hombre hacer cadavezms eficientes los procesosdeproduccin. Asi, lasaplicaciones dela Robticaen la de aparatos automatizacin deesos procesos se han convertido en parte imprescindible de fbricas
electrnicos, automviles, etc. Hay estadsticas que indican claramente las ventajas de la utilizacin de un robot en lugar de mano de obra humana enciertas tareas (sin mencionar las implicaciones sociales de la Robtica, que no trataremos en este Proyecto). Entre esas ventajas estn la velocidad y la precisin con que operan los robots, incluyendo el hecho de que "no se cansan" y "noprotestan". Adems, existen aplicaciones donde la Robtica juega un papel fundamental, es decir, sin sta sera prcticamente imposible llevar a cabo tales aplicaciones, por ejemplo, el manejo de sustancias radioactivas mediante brazos manipuladores.
1
Qu es un robot?
1.I El trmino robot
Desde la antigedad se ha tenido la idea de crear autmatas que imitaran a los hombres o a al hombre en tareas
los animales.
Este
Pero no fue sino hasta este siglo cuando se desarroll la tecnologa paraconstruir mquinas que sustituyeran pesadas, peligrosas o montonas. Tales mquinasrecibenelnombrederobot. trmino, de origen checo, aparece por vez primera en novelas de ciencia ficcin,aunque es hasta el ao 1961 cuando llega a la industria el primer robotutil. Mikell Groover, en su libro Automation, Production Systems and Computer lntegrated Manufacturing, define al robot industrial como "...una mquina programable, de propsito general, que posee ciertas caractersticas antropomrficas, es decir, con caractersticas basadas en la figura humana...". Lafigura 1 . 1 muestra la analogaexistente entre las partes del brazo humano y el mecnico.
TEBRATO
-"
_""
BRAZO
" "
Cabe destacar que la caracterstica antropomrfica ms comn en nuestros das mecnico, el cualrealiza diversas tareas industriales.
es la de un brazo
Pero el robot industrial, que se conoce y emplea en nuestros das, no surge como consecuencia de la tendencia o aficindereproducirseresvivientes, sino de la necesidad. Con elobjetivo de disearuna mquina flexible, adaptable al entorno y de fcil manejo, George Devol, pionero de la Robtica Industrial, fue el germen del robot industrial. patent, en 1956, un manipulador programable que Para las normas ISO, un robot industrial es un manipulador automtico reprogramabley multifuncional, que posee ejes capaces de agarrar materiales, objetos, herramientas, mecanismos especializados, a travs de operaciones programadas para la ejecucin de una variedad de tareas. Un robot industrial es una mquina que puede efectuar un nmero diverso de trabajos,
automticamente, mediante la programacin previa; su estructura es en forma de brazo mecnico y tiene la capacidad de adaptarse a diferentes aprehensores o herramientas. Un robot tiene la posibilidad de llevar a cabo trabajos completamente diferentes e, incluso, tomar decisiones segn la informacin procedente del mundo exterior mediante el adecuado programa operativo de su sistema informtico.
sus
mundo que los rodea. Utilizan lgicas difusas y procesamiento dirigido por expectativas. La quinta generacin pretende que el control emerja de la adecuada organizacin y distribucin de mdulos conductuales; esta nuevaarquitectura es denominada arquitectura de subsumcin.
0 0 0
Robots de repeticin o aprendizaje: Son manipuladoresque se limitan a repetiruna secuencia de movimientos, previamente ejecutada por un operador humano, haciendo uso de un controlador manual o un dispositivo auxiliar. En este tipo de robots, el operario en la fase de enseanza, se vale de una pistola de
programacin con diversos pulsadores o teclas, o bien, de joystics, o bien utiliza un maniqu o, a veces, desplaza directamente la manodel robot. Robots con control por computadora: Son manipuladores o sistemas mecnicos multifuncionales, no necesita mover realmente el se puede
controlados por una computadora. En este tipo de robots, el programador lenguaje especifico, compuesto por varias instrucciones
elemento de la mquina, cuando la prepara para realizar un trabajo. El control por computadora dispone de un adaptados al robot, con las que
y lainteligenciaartificial,sonlascienciasquemsseestn
estudiando para su aplicacin en los robots inteligentes. Micro-Robots: Con fines educacionales, de entrenamiento o investigacin. Existen numerosos robots de formacin o micro-robots a un precio muy accesible y cuya estructura y funcionamiento son similaresa los de la aplicacin industrial. Tomando en cuenta sta y otras propuestas, hemos hecho una clasificacin ms general: hay robots de tres clases. Los robots de aprendizaje graban en su memoria electrnica los movimientos que han ejecutado por vez primera para que, posteriormente, los reproduzcan fielmente, sin ninguna intervencin ulterior del hombre. Los robotsprogramadosestngobernadosporunacomputadora,cuyasinstruccionessiguen constantemente.Por ltimo, los robotsautoadaptablesdisponen de detectores,captadores,cmarasde televisin u otros medios que le permiten tener en cuenta los eventuales cambios del entorno para modificar
su programa.
en figura 1.2, el cual consistedel mecnico slo es un componente de todo un Sistema Robtico, mostradola brazo,fuente de poderexterna,elementoterminal(gripper),sensoresexteros comounaparteintegraldetodoelsistema,dadoquelamanera interface con la computadoray control por computadora.An el software programado podra ser considerado en lacualelrobotesprogramado controlado puede tener un impacto mayor en su desempeo y un subsecuente rango de aplicaciones.
terminal
residente
El brazo humano puede ser representado en un robot, cuyas articulaciones le permiten hasta seis
grados de libertad y que, por consiguiente, puede orientarse en todas las direcciones; lleva en su extremo libre dos pinzas o algn sistema de fijacin para las herramientas que ha de usar; sus movimientos son regulados por mecanismos (p. ej. motores PAP) acoplados a un microprocesador. La idea comn quese tiene de un robot industriales la de un brazo mecnico articulado pero, como se habia mencionado al
considera tcnicamente comoun sistema de robot industrial. Un sistema de robot industrial consta de las siguientes partes: Manipulador o brazo mecnico. Controlador. Elementos mofrices o actuadores. Elemento terminal, herramientao aprehensor. Sensores de informacin en los robots inteligentes.
Los cuatro elementos rgidos del brazo estn relacionados entre si mediante articulaciones, como se muestra
pueden ser en la figura 1.3, las cuales giratorias, cuando el movimiento permitido es de rotacin, o prismticas, en las que existe un movimiento de traslacin entre los elementos que relacionan.
A semejanza con elbrazo humano, a las uniones o articulaciones del manipuladorse les denomina:
Unin del cuerpo (base-cuerpo) Unin hombro (cuerpo-brazo) Unincodo (brazo-antebrazo) Uninmueca (antebrazo-aprehensor)
O
O
El nmero de elementos del brazo, y de las articulaciones que los relacionan, determinan los grados de
libertad del manipuladorque,en
los robotsindustriales,suelen
Controlador: Recibeestenombreeldispositivo
los
elementos del manipulador y todo tipo de acciones, clculos y procesado de informacin que se realiza. La complejidad del control vara segn los parmetros que se gobiernan, pudiendo existir las siguientes categoras:
Controlador de posicin:intervieneenelcontroldelaposicindelelementoterminal.Puede actuar en modo punto a punto, o bien, en modo continuo, en cuyo caso recibe el nombre de control continuo de trayectoria.
las propiedadesdinmicasdelmanipulador,motores
Controladaptativo:considera posicin.
la variacindelascaractersticas
del manipuladoralvariarla
Elementos motriceso actuadores: Son los encargados de producir el movimiento de las articulaciones
directamente o a travs de poleas o cables. Se clasifican en tres grupos: Neumticos: emplean aire comprimido como fuente de energa y son muy indicados en el control de movimientos rpidos, pero de precisin limitada.
0
Hidrulicos: son recomendables en los manipuladores que tienen una gran capacidad de carga, junto con una precisa regulacinde velocidad. Elctricos: son los ms utilizados, por su fcil y preciso control, as como por otras propiedades ventajosas que reportasu funcionamiento.
Elemento Terminal (gripper): es undispositivo que seunealamueca finalidad de activarlo para la realizacin de una tarea especfica. Por Io general, la problemtica del elementoterminalradicaen
queha
desoportarunaelevada
capacidad de carga y, al mismo tiempo, conviene que tenga peso y tamao reducidos. Como consecuencia de la amplia variedad de tareas a las que se destinan los robots, el elemento terminal adopta formas muy
diversas. En bastantes ocasiones es necesario disear el elemento terminal de acuerdo a la aplicacin en la que se emplea.
pinzas y
Los diversos tipos de elementos terminales podemos dividirlos en dos grandes categoras:
herramientas,
Las pinzas han sido diseadas para que el robot cargue
pinza giran en relacin con los puntos fijos del pivote. De esta manera, la pinza se abre y se cierra. Otro tipo de pinzas se denominan de movimiento h a / En este caso, los dedos se abren y se cierran ejecutando un movimiento paralelo entre s.
AI momento de disear una pinza deben tomarse en cuenta la forma y peso de la pieza de trabajo, as
como el tipo de movimiento que harn
sujecin, de tal forma que la pinza nomodifique o dae la estructura de la pieza. Una regla general es que la pinzadebe sujetarala piezade trabajode su centro de gravedad. Esto ocasionaque seanulen
los
momentos que se pudieran generar por el peso de la pieza de trabajo. Para reducir
operaciones de carga y descarga de piezas a mquinas-herramientas, se pueden disear efectores finales condoble pinza. Existenotrostiposdepinzas como ventosas,pinzasmagnticas
Sensores de Informacin:Los robots de la Mima generacin tienen capacidad para relacionarse con el entorno y tomar decisiones en tiempo real, para adaptar sus planes de accin a las circunstancias exteriores. La informacin que reciben les hace autoprogramables, o sea, alteran su actuacin en funcin de la situacin externa, Io que supone disponer de un cierto grado de inteligencia artificial,
10
6 grados de libertad, como elemento terminal. Aunque la mayora de las aplicaciones industriales requieren de
las de soldadura, mecanizadoy paletizacin, otras ms complejas exigen un nmero mayor, tal es el caso de las labores de montaje. Tareas ms sencillas y con movimientos ms limitados, como las de pintura, suelen exigir 4 5 grados de libertad.
22 grados de libertad y, al mismo tiempo, la vistay el tacto ligados al La mano humana cuenta con unos
cerebro, le permiten una habilidad increble en un sinnmero de operaciones. Entonces, es necesario limitar el nmero de grados de libertad al mnimo indispensable. Esto se hace mediante el siguiente anlisis: La posicin de un cuerpo rigido en el espacio (figura 2.1) queda determinada si conocemos la posicin de tres de sus puntos. Estos, a su vez, quedan determinados por nueve coordenadas,
dado que el cuerpo es rgido, se cumple que las distancias entre los puntos son constantes, por Io que se obtienen las siguientes relaciones:
Estas tres relaciones permiten eliminar tres incgnitas. Entonces, tenemos 6 coordenadas libres, lo que nosindicaque se puede construirun mecanismoconseisgrados delibertad, paracolocar unobjeto en cualquier punto del espacio a su alcance y con cualquier orientacin. (De hecho, en los robots industriales, tres grados de libertad se emplean para definir la posicin en el espacio y los otros tres para orientar la mano de sujecin o herramienta).
Sea un sistema formado por N elementos indeformables. En el espacio de tres dimensiones, cada uno de estos elementos dispone de seis grados de libertad, de los que tres corresponden a las tres coordenadas
{XO,
yo, ZO) del centro de coordenadas asociado a I, y los otros tres definen la posicin angular de los ejes (x,
6N parmetros para definir las
posiciones de todos ellos. Adems, uno de
y, z) respecto a la referencia global. Si los elementos no estuvieran conectados mediante pares cinemticos,
sera preciso conocer
los
elementos (el soporte) esfijo y, por lo tanto, el nmero de grados de libertad se reduce a 6(N-1).
Por otra parte, los elementos del manipuladorse encuentran unidos entre s mediante pares cinemticos
R o P, que permiten, nicamente, un desplazamiento. El par que conecta la mano de sujecin con el resto del
brazo (par esfrico E) permite tres giros. En los robots con una configuracin tradicional,cada elemento tiene dos pares cinemticos, exceptoel soporte y la mano de sujecin, que slo tienen uno.
El nmero de pares cinemticos R o P es N-2, si existe un nico par esferico E. El nmero de grados
de libertad del mecanismo se puede, entonces, calcular como:
G 6 {N-?) -5 (N-2) -3
La formahabitual de trabajo de
N -t ?
aunageneracinde la mano de sujecindel
trayectorias en su forma restringida, entendiendo por tal la que trata de colocar un punto de mecanismo en una posicibn determinada. Si se impone, como nica condicin, queelcentrode parmetros sin definir. Para ilustrar mejor Io que se ha comentado aqu, supngase un brazo manipulador que actaen el plano robot ocupe una posicin dada (x, y, z), y el brazo manipulador sea de seis grados de libertad, quedarn tres
y sea de un tipo derivado de una cadena abierta formada por N elementos unidos mediante N - 1 pares R.
Si se fija uno de los elementos, por ejemplo el 1 , se obtendr un sistema cuyo nmero de grados de
libertad es:
I3
Io que el
o ms que los N considerados en el apartado anterior. Por otra parte, en nmero deelementos pasa a ser dos
as la Robtica se acostumbra a no considerar alfijo como un elemento.Llamando E al nmero de elementos contados, se verifica:
=N+ 1
El nmero de grados de libertad mediante pares de rotacin: se puede calcular teniendo en cuenta que
G = 6-5=
Los elementos de un robot con seis grados de libertad son: la base, el brazo, el antebrazo los tres y que componen la mano.
Los grippers son elementos terminales utilizados para sujetar y sostener objetos.
generalmente piezas de trabajo que tienen que ser movidas por el robot. Estas aplicaciones de manejo de
I4
piezas incluyen carga y descarga, tomar las piezas de una banda transportadora y colocar partes en un pallet. Adems de las piezas de trabajo, otros objetos materia prima y herramientas. manejados por el gripper del robot incluyen cajas, botes,
clasificacin se aplica mejor a los grippers mecnicos. El gripper sencillo se distingue por el hecho de que solamente es colocado un dispositivo de sujecin en el elemento terminal del robot. Un gripper doble tiene dos dispositivos de sujecin colocados en el elemento terminal y separado.Ambosdispositivospuedenactuarindependientemente. dispositivos de sujecin en el elemento terminal del robot. es utilizado para manejar dos objetos por El doblegripper es utilizadoparalas o ms
funciones de carga y descarga. El trmino gripper mltiple es utilizado cuando son colocados dos
Algunos ejemplos de herramientas utilizadas en las aplicaciones de robot como elementos terminales Spray-paintingnozzle(PinturaenSpray),Drilling(taladrado), tool (Herramienta de cortea presin).
Spot-Welding tools (Herramientas de soldadura punto), Arc-Welding torch (Soplete de soldadura en arco), Routing, Wire brushing(pintura), Grinding, Liquid cement applications for assembly (Aplicaciones de cemento lquido), heating torches, Waterjet cuffing
Encadacaso,
el robotdebecontrolarlaactuacin
de laherramienta.Porejemplo,elrobotdebe
2.5 Velocidad
En muchas ocasiones, una velocidad de trabajo elevada aumenta extraordinariamente el rendimiento del robot, por lo que esta magnitud se valora considerablementeen la eleccin del mismo. En las tareas de soldadura y manipulacin de piezas es muy aconsejable que la velocidad de trabajo sea alta. En pintura, mecanizado y ensamblaje, la velocidad debeser media e incluso baja.
La programacin gestual consiste en guiar el brazo del robot directamente a Io largo de la trayectoria que debe seguir. Los puntos del camino se graban en la memoria y luego se repiten. Este tipo de programacin
precisin y se evita el posicionamientoa ojo, muy corriente en la programacin gestual. El primer lenguaje textual de un robotfue WAVE, desarrollado en 1973 como un lenguaje experimental, para la investigacin de la inteligencia artificial en el laboratorio de Stanford. Esta investigacin demostraba la factibilidad de la coordinacin mano-ojo del robot. El desarrollo de un siguiente lenguaje fue en 1974, en Stanford. Este lenguaje fue llamado AL y poda ser utilizado en el control de mltiples brazos de robot en la realizacin de las tareas que requeran la coordinacin de brazos. Muchos de los conceptos de WAVE y AL se utilizaron en el desarrollo del primer lenguaje textual comercial para programar un robot: mejorado como VAL /I y presentado en 1984. Eltrabajoeneldesarrollodelenguajespararobotstambinfuerealizado lenguajes de la tareas similares.
16
VAL (Victor's
Assembly Language) fue presentado por Unimation, Inc. para sus series de robots PUMA. Este lenguaje fue
Otros lenguajes textuales para robots que deben ser mencionados son RAIL, presentado en 1981 por Atdomafix for robotic assembly and arc welding as como la mquina de visin MCL (Manufacturing Control Language) desarrollado por la fuerza area como un lenguaje mejorado de APT (Automatic Programmed
y procedimientosparadesarrollarprogramasderobots.Fueron
de la programacincon
desarrolladoslargamenteparaimplementarelcontroldelmovimientopormedio
lenguaje textual. Una caracterstica tpica de estos lenguajes incluyela capacidad de definir el movimiento del manipulador, interpolacin lineal y comandos elementales de sensor que involucran seales de on/off. El lenguaje VAL esunejemplodeunlenguajedeprogramacin de unrobotdeprimerageneracin. Las limitaciones comunes de este tipo de lenguajes comprenden la incapacidad de especificar clculos complejos de aritmtica para ser utilizados durante la ejecucin del programa, la incapacidad de hacer uso de sensores complejos y sensores de datos,y una limitada capacidad para comunicarse con otras computadoras.
Control del movimiento. Capacidades avanzadas de sensor: tiene la capacidad de manejar algo ms que seales
lnteligencia limitada: es la capacidad de utilizar informacin recibida del ambiente de trabajo para modificar el comportamiento del sistema de una manera programable. Comunicaciones y procesamiento de datos: cuentan con la capacidad de interactuar con otras computadoras y con bases de datos computarizadas con el propsito generar reportes y controlar actividades en la celda de manufactura. de mantener registros,
17
Articulacin
18
Cada articulacin representa la interconexin entre dos elementos contiguos I y I ;+l. Denotamos el eje
o el eje a Io largo del cual una articulacin prismtica se desliza, por Z i de rotacin de una articulacin giratoria
si la articulacin es la interconexin de los elementos i e i +l.Las variables de articulacin, denotadas por6 , para una articulacin giratoria y como d; para una articulacin prismtica, representan desplazamiento relativo entre elementos adyacentes.
como el problema cinemticodirecto, mientras que el segundo problema es el problema cinemtico inverso. Como las variables independientes enun robot son las variables de articulacin,y una tarea se suele dar en trminos del sistema de coordenadasdereferencia, se utilizademaneramsfrecuenteelproblema cinerntico inverso. Denavit y Hartenberg [I9551 propusieron un enfoque sistemticoy generalizado de utilizar lgebra matricial para describir y representar la geometra espacial de los elementos del brazo del robot con respecto a un sistema de referencia fijo. Este mtodo utiliza una matriz de transformacin homognea 4 x 4 para describir la relacin espacial entre dos elementos mecnicos rgidos adyacentes y reduce el problema cinerntico directo a encontrar una matriz de transformacin homognea
4 x 4 que relaciona el
desplazamiento espacial del sistema de coordenadas de la mano al sistema de coordenadas de referencia. Estas matrices de transformacin homogneas son tambin tiles en derivar las ecuaciones dinmicas de movimiento del brazo del robot. En general, el problema cinerntico inverso se puede resolver mediante los mtodos algebraico, iterativo o geomtrico.
19
El primer problema encontrado es describir la posicin de la herramienta y los sitios A y B (y, muy
probablemente, la superficie enteraS) con respecto a un sistema de coordenadas comn.
A veces, elmanipuladorpuede
ser capaz de captar su posicin de algunamanera,utilizando localizados en las articulaciones 1 y 2, los cuales pueden
(32.
las posicionesA y B en trminos de esosngulos de las articulaciones.Esto conduce al problema cinerntico directo, el cual determina la posicin y la orientacin del elemento terminalo herramienta, en trminos de los ngulos de las articulaciones. Es comn establecer un sistema fijo de coordenadas, denominado marco de la base, al cual todos
establecemos el marcode labase coordenadoo, x, y,, en la base del robot, como se muestra en la figura3.2.
Las coordenadas (x, y) de la herramienta son expresadasen este marco coordenado como
x = al cos %I + a 2 cos (8,+ g2)
20
Adems, la orientacin del marco de la herramienta, relativa al marco de la base, est dada por los cosenos de direccin de los ejes xz y y 2 , relativos a los ejes xo y yo, esto es,
marco de la base y
Estas ecuaciones sonllamadas las ecuaciones cinemticas directas. Para un robot de seis gradosde libertad, estas ecuaciones son bastante complejas no y pueden escribirse tan fcilmente como el manipulador de dos elementos.
(x, y)
estn fuera del alcance del manipulador. Si estas coordenadas estn en el alcance del manipulador, puede haber dos soluciones, como se muestra en la figura 3.3. Las denominadas configuraciones elbow up y elbow down, pueden ser exactamente una solucin si el manipulador debe extenderse completamente para alcanzar el punto. En algunos casos puede haber un numero infinito de soluciones (cuando el mecanismo consta ms elementos). de
21
Figura 3.4. Obfencin de los ngulos de las articulaciones de un brazo plano de dos elernenfos.
6 = cos -l (0)
No obstante, una mejor manera de encontrar 63 es darse cuenta que,si cos (82)est dado por(I), entonces
sen (82) est dado por
22
La ventaja de esta ltima aproximacin es que las soluciones elbow up y elbow down pueden recuperarse encontrando los signos positivo y negativo en (2), respectivamente.
la mayora de
los manipuladores
a
correspondientes a robots industriales comercializados actualmente) sin que sea necesario recurrir de sistemas de ecuaciones no lineales. Tales procedimientos
requieren un nmero de operaciones tan grande, que haran imposible el control eficaz del robot (para pasar de una posicina otra sera preciso esperarun tiempo excesivamente largo). Por el contrario, en el caso de robots con ms de seis grados de libertad, en los que hay que recurrir a criterios de optimizacin para obtener la posicin procedimientos iterativos. resulta imprescindible utilizar de los elementos,
hidrulicos,neumticos y elctricos.
Los dispositivos neumticos hacen uso de aire comprimido y los hidrulicos de un fluido a presin. Se
aconseja el empleo de elementos hidrulicos con una regulacin imprecisa de sta. En cambio, los motores elctricos se caracterizan por la facilidad de realizar un control preciso de su movimiento.HanadquiridomayoraplicacinenlaRobtica debido alafacilidad de encontrarenerga elctrica en cualquier parte, unido a su funcionamiento limpio y seguro, y su fcil adaptacin a los circuitos electrnicos basados en microprocesadores. Dentrode los diversostiposdemotoreselctricos, articulaciones de los manipuladores son los de corriente en los manipuladores que deban poseer gran capacidad de
Los dispositivos neumticos ofrecen mayor velocidad, aunque carga, con un aceptable control de velocidad. la
los ms adecuadosparaelmovimientodelas
Los de corriente continua producen un par casi proporcional al voltajede entrada, por Io que tienen una regulacin precisa. Requieren captadores que informen al sistema de control sobre la posicin del eje en cada instante, realizando un trabajo en bucle cerrado.
ngulo fijo,aplicandoa
impulsos elctricos. No requieren detectores de la posicin de su eje, ya que el simple conteode los impulsos ngulo girado.Trabajanenbucleabierto;pero,al posiciones posibles, limitan el rea de trabajo.
24
Figura 4.1. Posicionamientode/ rotor ante /as fuerzas magnticas ejercidas por /os dos estafores.
Las bobinas del estator A se alimentan de tal manera que se comportan como un polo Norte, mientras que las del estator B hacen de ste un polo Sur. Con esta situacin,el rotor giratorio, que consiste en un imn permanente, se mueve hasta alcanzar la posicin de equilibrio.
Si el estator tuviese cuatro polos, al cambiar su polaridad, mediante un control externo, el rotor girara
con incrementos angulares de
nmero de polos del estator. La interaccin entre los polos del estator y los del rotor hace que, al aplicarse dos ondas cuadradas, defasadas un cuarto de periodo entre si, a las dos bobinas de los electroimanes, el rotor gire un cuarto de paso polar por cada cambio de polaridad en la tensin aplicada a las bobinas. As, para un motor con doce pares de polos por bobina del estator, se producirn 48 pasos de revolucin, o sea, 7.5" por paso.
25
Existen dos modosde funcionamiento para los motores de paso a paso, a saber:
pasos, se conectan nuevamente las dos primeras bobinas, repitindose la secuencia. funcin del nmero de dientes del rotor y de la secuencia aplicada.
La velocidad del motor es proporcional a la frecuencia con la que se envan los impulsos de excitacin a
los devanados.
Por su construccin, los motores de pasosse dividen en cuatro tipos:
Deimnpermanente(PM). De reluctancia variable de una pila (VR). De reluctancia variable de multipilas(VRSM). Hibridos (HSM).
26
y rotor) o ms, con un reluctancia variabley los de imn permanente. Pueden tener dos secciones (de estator eje de imn permanente entrelas dos secciones. Cada seccin incluye un rotor dentado y un estator con sus
polos dentados y sus devanados, respectivamente.El nmero de dientes del rotor y del estator son diferentes. Los dientes del estator estn perfectamente alineados en las dos secciones
alineados con un defasamientode 1/2 grado. y los dientes del rotor estn
$~~~~~
emcum
27
En la figura 4.3 se muestra la representacin esquemtica para el encendido de un motor de pasos. Se hace uso de transistores para iniciar la secuencia. Los transistores amplifican de la seal de entrada que, generalmente, proviene de un microprocesador, que enva unacorrientemuybaja. del motor). La conexin de los cables de un motor de pasos se muestra en la figura 4.4. As, los transistores amplifican esta corriente hasta cien veces (lo suficiente para energizar las bobinas e iniciar el funcionamiento
VELOCIDAD
b
SISTEMA D E CONTROL
SENTIDO
DE
GIRO
b
CIRCUITO
>
ADAPTACI~N
28
Aqu, lassealesde
impone el motor, la carga y el circuito de adaptacin. En los sistemas en lazo abierto no existe realimentacin en la posicin real del eje del motor, entonces
debe responder con precisin a los cambios de excitacin que se aplican a sus bobinas. Si dichos cambios son muy rpidos y el movimiento del eje no puede seguirlos, se originan errores de posicionamiento. Tambin deben tenerse en consideracinlas variaciones de la carga conectada al motor. Sin embargo, el uso de un sistema basado en un microprocesador implica las siguientes ventajas:
estados, as como de las seales de tiempo y de carcter auxiliar. Tambin puede entregar la informacin digital sobre la posicin y los comandos dearranque y parada, dejandolaelaboracin control de fase a un controlador posterior.
Si el sistemaconmicroprocesadorseencargade
todo el control,
puedenusarse
configuraciones
complejas que optimicen el funcionamiento del motor.Por ejemplo, se podria definir con exactitud la duracin de cada paso y ajustar con precisin la velocidad a una curva memorizada. Cuando el sistema con microprocesador opera conjuntamente con un controlador auxiliar,los programas son menos ambiciosos. Para motores PAP que alcanzan los 2000 pasosls y el paso tiene una duracin de 50 microsegundos, un control exclusivo por software queda limitado entre unas 25 y 50 instrucciones, por cada pasodel motor,restringiendoelgobiernodel nmero y secuencia de pasos). sistemaa lasfuncionesms sencillas(duracindel paso,
29
y de sus funciones. Desde su multimicroprocesador o un microcomputador, dependiendo del alcance amplitud aparicin, el microprocesador ha formado parte del controlador principal de robot. La construccin dinmica de algoritmos y la simulacin de su validez empleando modelos, est siendo desarrollada, experimentalmente, en algunos centros de investigacin. Asimismo, est en fase de estudio la construccin de sistemas de control, capaces de generar de forma continua y en tiempo real, los algoritmos de gobierno, que adaptan la mquina alos cambios del mundo exterior.
Las funciones ms importantes que debe llevar acabo el sistema de control son las siguientes:
1. Control y adaptacin con los elementos motrices. 2. Control y adaptacin con los sensores exteriores y procesamientode la informacin que facilitan.
3. Elaboracin y clculo de las secuencias de movimientos.
30
Las ecuaciones dinmicas se calculan en funcin de la actuadores, que controlan los movimientos del robot
mediante un modelo matemtico apropiado. Posteriormente, se hallan los pares que han de aplicarse a los
Si no existe un mecanismo servocontrol, la situacin de cada elemento del brazo se hace posible, ya sea utilizando topes mecnicoso empleando motores de paso a paso, cuya posicin se conoce de acuerdo con la secuencia de impulsos aplicados. El sistema de control para robots de punto a punto sin servocontrol suele emplear un nico
Entrada de informacin. El teclado de control manual, junto con la puerta de informacin desde un
microcomputador, son los elementos encargados de recibir informacin desde el exterior.
Salida de informacin. Estos perifricos estn formados por los adaptadores de los pulsos de control
que se aplican a las bobinas de los motores paso a paso, por la caja de control manual y por la informacin que se trasladaa la computadora principal. La seccin de entradalsalida, que conecta al microcomputador con mundo el exterior, consta de cuatro partes importantes: gobierno de motores, teclado disponibles para el usuario. del mando manual de aprendizaje, comunicacin serie y lneas
31
8 lneasdigitales
(DO-D7) se
DO-D3: Son cuatro bits de informacin o dato por dondese enva la secuencia de pulsos para que gire el motor seleccionado. D4-D6: Son tres bits de direccin que seleccionan el motor, al que se enva la informacin.
El circuito interface (figura 6.1) consta de 8 circuitos integrados TTL y6 circuitos amplificadores que
decodifican el dato y activan el motor seleccionado.
Los 7 bits pasan al decodificador (se conectan D4-D6 a los tres pines de seleccin del C.I. 74138) y
a los latches(seconectan DO-D3 a los pinesdeentradade
QA-QD
32
Figura 6.1. Circuito eleclr6nko para controlar los mdores de paso a traves del puerto paralelo de una PC.
33
.......... ..... .. .
b+4.5 v
6.1.2
Lista de material
1 de 8 salidas)
1
6
1
14
2
Varios
I
Base para circuito integrado Placa de circuito impreso tipo protoboard Cable plano y alambre para interconexiones
34
QD
Qc
QE
QA
O
QE
I
+ 4.5v
L
Qc
se aplicanalas
cuando su eje gira en el sentido de las manecillas del reloj, se presenta en la figura 6.4, mientras que en la figura 6.5 se muestra el ciclo de estados lgicos para que agujas del reloj. eleje del motorgire en sentido contrario a las
1 2 1
O
O
O
1
3
4
O O
O
1
35
figura 6.5 Tabla de excitacin CCW de las fases del motor de pasos.
npo: Hbrido.
Nmero de fases: 4 fases.
Ahgulo de fase: 2'1 paso.
Nmero de dientesdelrotor. 45 dientes. Nmero de dientesdelestator. 36 dientes. Movhiento del diente delrotor 8 grados. Mowmiento deldiente delestator 10 grados. Razn depasos: 180 pasos I revolucin.
El movimiento del diente se define como la separacin angular entre dos puntos correspondientes
de los dientes adyacentes.
brazo ejecuta sus movimientos, se presenta en el monitor de la computadora una simulacin grfica de tales movimientos.
36
A:\ >BRAZO29
Se debe ejecutar el programa en DOS, debido a que, al hacer pruebas, detectamos un conflicto entre Windows y elprogramadelrobotporelcontroldelpuertoparalelo,quesereflejaen
los retardos
adicionales (bastante significativos) que se observaron en el envo delos datos por el puerto LPTl .
Una vez hecho esto, aparecer el men de opciones del programa, donde el usuario debe teclear el nmero correspondiente a la opcin elegida,o la tecla Esc para salir aDOS.
(Esc) Salir
(1) Introducirngulos:Enesta
segmento del brazo.
opcin,elusuariodebeespecificarcuntosgradosgirarcada
Primer ngulo (correspondiente a la rotacin de la base) Segundo ngulo (correspondiente hombro) Tercer ngulo (correspondiente al movimiento del codo) Cuarto ngulo (correspondiente al movimiento mueca) Quinto ngulo (correspondiente al de giro de l a mueca) Aprensar (1) o Soltar (O) al movimiento del
(2) Introducir coordenadas: Eligiendo esta opcin, el usuario debe sealar las coordenadas ( 4 J
hacia donde el punto del brazo se debe dirigir.
z j
37
Coordenada en X Coordenada en Y Coordenada en Z ngulo mano (correspondiente al movimiento de mueca) ngulo pinza (correspondiente al de giro de la mueca) Aprensar (1) o Soltar (O) la -180 a 180 grados
la tarea con
que ha sido programado previamente. Sta consiste en una accin repetida del llamado por coordenadas; se leingresancoordenadas haciadondeelbrazosedebedirigirconlaaccin
//ROBOT CON 6 GRADOS DE LIBERTAD. #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h> #include <math.h> #include <string.h> #define ESC
0x1b
38
int Eyl,Ey2,Ey3,Ey4,Ey5,Ey6,Ey7,Ey8,Ey9,Eancholx,EanchoIy,Eancho2x,Eancho2y; double fil,fi2,fi3,P,R,limiteinc,limiteinc2,limiteinc3; int L,D,B,d,e,f,g,h,i; int MxO,MyO,Mx1,Myl,Mx2,My2,Mx3,My3,Mx4,My4,Mx5,My5,Mx6,My6,Mx7,My7,Mx8,My8,Mx9,My9; int auxXO,auxYO,auxXl,auxYl,auxX2,auxY2,auxX3,auxY3,auxX4,auxY4,auxX5,auxY5,auxX6,auxY6,auxX7,auxY7, auxX8, auxY8,auxX9,auxYS; int desplaza1,desplaza2,desplaza3,desplaza4,desplaza5,pinza; double senR,cosR,senP,cosP,senfil ,cosfil ,ox,oy,oz,ax,ay,az; float x3ext,y3ext; int z3ext,angulomano,angulopinza; int finalx,finaly,finalz,Efinaly,Mfinalx,Mfinaly; int realfi3,realP,limiteAng,norosa; int tope,incremento,compensa,aprobado,incrernentofi2,CualSeMueve,SoltarSiAprisionara; int lirnrealfi3,limrealP,tolerasigno,tecla; char buf[4]; void IniciaGrafico(void)
I* autodeteccin */
int gdriver = DETECT, gmode, errorcode; I* inicializa grficosy variables locales*/ initgraph(&gdriver, &gmode,""); /* lee resultado de inicializacin*/ errorcode graphresult(); if (errorcode != grOk) I* si ocurri un error *I
I
printf("Graphics error:%s\n", grapherrorrnsg(errorcode)); printf("Presiona cualquier tecla para salir:"); getch0; exit(1);/* termina con un cdigo de error *I
1
I
//Calcula la componente X de algun vector. int CalculaX(int rnagnitud,double angulol ,double angulo2)
{
int x;
39
x=(magnitud*cos((angulol*3.1416)/180)*cos((angu102*3.1416)/180));
return(x);
1
//Calcula la componenteY de algn vector. int CalculaY(int magnitud,double angulo1,double angulo2)
I
int y;
y=(magnitud*sin((angulol*3.1416)/180)*cos((angulo2*3.1416)/180));
return(y);
1
//Calcula la componente Z de algn vector. int CalculaZ(int magnitud,doubleangulol)
I
int z;
z=(magnitud*sin((angulol*3.1416)/180));
return(z);
1
//Dibuja componentes grficos que permanecen estticos mientras el brazo se mueve. void Estatico(int Mx0,intMyO)
I
setcolor(5); line(233,308,402,308);//horizontales. line(217,323,418,323); line(200,340,435,340); line(180,360,455,360); line(l55,384,480,384); line(125,413,510,413); line(260,302,140,430);//verticales. line(280,302,200,430); line(300,302,260,430); line(320,302,320,430); line(340,302,380,430); line(360,302,440,430);
40
line(380,302,500,430); setcolor(l4);
ellipse(320,360,0,360,2*h,2*(h/7));
1
//Dibuja cada linea que conforma la estructura del brazo, dependiendo de las coordenadas que se le dan de entrada. void DibujaLineas(int Mancholx,int Mancholy,int Mancho2xjnt Mancho2yjnt Mx3,int My3,int Mx4,int My4,int Mx5, int My5,int Mx6,int My6,int Mx7,int My7,int Mx8,int My8,int Mx9,int My9,int Mfinalxjnt Mfinalyjnt color)
setcolor(color1);
line(Mancholx,Mancholy,Mancho2x,Mancho2y); //Brazo. line(Mancholx,Mancholy,Mx6,My6); line(Mancho2x,Mancho2y,Mx7,My7);
setcolor(color2); //Antebrazo. line(Mx6,My6,Mx7,My7); line(Mx6,My6,Mx8,My8); line(Mx7,My7,MxS,MyS); setcolor(color3); line(Mx8,My8,MxS,MyS); line(Mx8,My8,Mx3,My3); line(MxS,MyS,Mx3,My3); setcolor(color4); line(Mx3,My3,Mx4,My4); setcolor(color5); //pinza. //Mueca.
41
line(Mx3,My3,Mx5,My5);
putpixel(Mfinalx,Mfinaly,colorl); //Punto final que indica la posicin
//Calcula cada coordenada delos puntos donde el brazo tiene una articulacin void HazMatematicas(void)
I
x1 =xO+CalculaX(D,fil ,fi2); //Hombro.
yl=yO+CalculaY(D,fil,fi2);
zl=zO+CalculaZ(D,fi2); x2=x1+CalculaX(B,fil,fi3); y2=yl +CalculaY(B,fil,fi3); z2=zl+CalculaZ(B,fi3); x3=~2+CalculaX(d,fil ,P); //Mueca. y3=y2+CalculaY(d,fil ,P); z3=~2+CalculaZ(d,P);
finalx=x2+CalculaX((d+i),fil,P);
//Codo.
//Puntofinaldelbrazo.
finaly=y2+CalculaY((d+i),fil,P);
finalz=z2+CalculaZ((d+i),P); senR=sin((R*3.1416)/180);
cosR=cos((R*3.1416)/180);
senP=sin((P*3.1416)/180);
cosP=cos((P*3.1416)/180); senfil=sin((fil*3.1416)/180);
pinza.
la
oz=cosP*senR; de //orientacin ax=cosfil *cosP; ay=senfil*cosP; az=senP; x4=~3t((e*ox)+(rax)); //Puntosparaambosdedosde la pinza y4=y3+((e*oy)+(ray));
42
ancho2y=y0+CalculaY(h,fil-90,0);
y7=yl+yO+CalculaY(h+(yl/l2),fil-90,0);
z7=zl; x8=x2+x0+CalculaX(h+(y2/12),fi1+90,0); //Define dos vectoresx8,y8,z8y y8=y2+y0+CalculaY(h+(y2/12),fi1+90,0); //x9,y9,z9 para el ancho del segmento z8=z2;
ntebrazo, //del
x9=x2+x0+CalculaX(h+(y2/12),fil-90,0); y9=y2+y0+CalculaY(h+(y2/12),fil-90,0);
z9=z2;
1
//Despus de haber hecholas matemticas necesarias, esta funcin calculalos valores que deben tener las variables //para representar grficamente en el monitor un brazo de robot simulando un movimiento en 3D con perspectiva. void CalculaCoordenadas(void)
I
HazMatematicas(); Eyl=yl/7; Ey2=y2/7; Ey3=y3/7; Ey4=y4/7; Ey5=y5/7; Ey6=y6/7; Ey7=y7/7; Ey8=y8/7; //Calcula valores que representan movimiento elptico.
43
Ey9=y9/7; Efinaly=finaly/7; Eancholy=ancholy/7; Eancho2y=ancho2y/7; MxO=320;//Calculavalorespararepresentarcadapuntoenelmonitor. My0=360-~0; Mxl=320+xI ; Myl=360+Eyl -zI ; Mx2=320+x2; My2=360+Ey2-~2; Mx3=320+x3; My3=360+Ey3-~3; Mfinalx=320+finalx;
Mfinaly=360+Efinaly-finalz;
Mx4=320+x4; My4=360+~4-~4; Mx5=320+x5; My5=360+Ey5-~5; Mx6=320+x6; My6=360+~6-~6; Mx7=320+x7; My7=360+Ey7-~7; Mx8=320+x8; My8=360+Ey8-~8; Mx9=320+x9; My9=360+Ey9-~9; Mancholx=320+ancholx; //"Dibuja lneas" primero en color negro
Estatico(Mx0,MyO);
44
DibujaLineas(Mancholx,Mancholy,Mancho2x,Mancho2y,Mx3,My3,Mx4,My4,Mx5,My5,Mx6,My6,Mx7,My7,Mx8,My8,Mx9,
MyS,Mfinalx,Mfinaly,l); auxXO=Mancholx; auxYO=Mancholy; auxXl =Mancho2x; auxYI=Mancho2y; auxX2=Mx3; auxY2=My3; auxX3=Mx4; auxY3=My4; auxX4=Mx5; auxY4=My5; auxX5=Mx6; auxYS=MyG; auxX6=Mx7; auxY6=My7; auxX7=Mx8; auxY7=My8; auxX8=Mx9; auxY8=My9; auxXg=Mfinalx; auxY9=Mfinaly;
1
//Determina si el punto final del brazo del robot se encuentra adelante, es decir, si se encuentra en el cuadrante definido //por el ngulode giro fil. int ManoAdelante(v0id)
I
int resultado; if ((fil>=O)&&(fi1<90)) {if (finalx>O) {resultado=l;} else {resultado=O;}} if ((fil>=90)&&(fil480))
{if (finaly>O) {resultado=l;} else {resultado=O;}}
if ((fil~=l8O)&&(fil~270))
45
if (fil==270)
return(resultad0);
1
//Esta funcin checa que los dedos de la pinza no choquen con alguno de los segmentos del brazo de robot int NoAtraviesa(void)
I
int DondeEsta; int decide=l;
fi3=fi3-incremento; P=P-incremento;
1
if (CualSeMueve==2) //Si movemoslamueca.
I
DondeEsta=ManoAdelante();
P=P-incremento; realP=realP-incremento;
if ((realfi3~=limiteinc2-180)&&(((realPc((90-Iimiteinc2)-180))&&(incremento==1))~~((realP~((90-limiteinc2)-180))
&&(reaIP~-45)&&(incremento==-l))))
{decide=O;} if ((realfi3~=l80-limiteinc2)&&(((realP~(180-(90-limiteinc2)))&&(incremento==-l))((((realP~(l80-(90-limiteinc2)))
&&(realP>45)&&(incremento==l))))
{decide=O;}
1
if (CualSeMueve==3) //Si queremosgirarlapinza.
46
if (((realfi3~=limiteinc2-180)&&(fi2~90))~~((realfi3~=180-limiteinc2)&&(fi2~90))) {decide=O;}
if ((realP~=180-limiteinc3)~~(realP~=limiteinc3-180))
{decide=O;}
I
return(decide);
//Este procedimiento mueve el ngulo "fi3", es decir, la articulacin que corresponde al movimiento del codo,
o que fue calculado en la funcin "CalculaAngulos" //dependiendo del valor "desplaza3" que el usuario ingreso
void MueveBrazo(void)
I
int fi3inicial=realfi3; CualSeMueve=l ;
if (fi3-desplaza3!=fi3)
{
I
while ((~2~=n0r0~a)~~(z3~=norosa)~~(z4~=norosa)~~(z5~=norosa)~J(finalz~=norosa))
I
if (ManoAdelanteO) {incrementofi2=1;} else {incrementofi2=-1;} fi2=fi2+incrementofi2; fi3=fi3+incrementofi2; P=P+incrementofi2;
tope=tope+incrementofi2;
compensa=compensa+incrementofi2;
CalculaCoordenadas(); delay(1O);
1
fi3=fi3+incremento; P=P+incremento;
realfi3=realfi3+incremento;
if ((realfi3>limrealfi3)~~(realfi3~-limrealfi3)) {P=P-incremento;;fi3=fi3-incremento;realfi3=realfi3-incremento;limiteAng=l;}
41
1
limiteAng=O;
desplaza3=desplaza3-(realfi3-fi3inicial);
1 J
//Este procedimiento mueve el ngulo "P", es decir, la articulacin que corresponde al movimiento de la mueca,
o que fue calculado en la funcin "CalculaAngulos". //dependiendo del valor "desplaza4" que el usuario ingreso
void MueveMuneca(v0id)
I
int Pinicial=realP; CualSeMueve=2; if (P-desplaza4!=P)
I
if (desplaza4<0) {incremento=-I;}
I
while ((~3~=norosa)~~(z4~=norosa)~~(z5~=norosa)~~(finalz~=norosa))
{
CalculaCoordenadas(); delay(1O);
1
P=P+incremento; realP=realP+incremento; if ((realP~limrealP)~I(realP~-limrealP)) {P=P-incremento;realP=realP-incremento;limiteAng=l;} CalculaCoordenadas(); delay( 1O);
48
//Este procedimiento mueveel ngulo " R , es decir, la articulacin que corresponde a la rotacin dela pinza,
o que fue calculado enla funcin "CalculaAngulos" //dependiendo del valor "desplaza5" que el usuario ingreso
void GiraPinza(void)
{
i
while ((z4~=norosa)~~(z5~=norosa)~~(finalz~=norosa))
{
1
R=R+incremento; if ((Rzl80)II(R<-180)){R=R-incremento;limiteAng=l;} CalculaCoordenadas(); delay( O); 1
1
limiteAng=O;
desplaza5=desplaza5-(R-Rinicial);
49
//Este procedimiento mueveel ngulo "fi2", es decir, la articulacin que corresponde al movimiento del hombro, //dependiendo del valor"desplaza2 que el usuario ingreso o que fue calculado enla funcin "CalculaAngulos". void MueveHombro(void)
I
CualSeMueve=4;
if (fi2-desplaza2!=fi2) { if (desplaza2<0) {incremento=-I;}
else {incremento=l;}
if ((z2~=O)~~(z3~=O)~~(z4~=O)~~(z5~=O)~~(finalz~=O))
I
fi2=fi2+incremento; fi3=fi3+incremento; P=P+incremento;
~-limiteinc)(((fi2+1zlimiteinc+l80)) {fi2=fi2-incremento;fi3=fi3-incremento;P=P-incremento;limiteAng=l;) if ((fi2-1
1
limiteAng=O;
1
//Este procedimiento mueve el ngulo"fil", es decir, la articulacin que corresponde a la rotacin de la base, //dependiendo del valor"desplazal" que el usuario ingresoo que fue calculado enla funcin "CalculaAngulos". void GiraBase(void)
I
if (fil-desplazal!=fil)
{
if (desplazal<O) {incremento=-I;}
50
fil=fil+incremento;
if ((fi1>270)11(fil<-90)) {fil=fil-incremento;limiteAng=l;}
CalculaCoordenadas(); delay(1O);
1 1 1
//Este procedimiento cambia la posicin de la pinza, es decir, pasa de abierta a cerrada o viceversa, dependiendo del //valor de "pinza" que el usuario ingreso. void SueltaAprisiona(void)
{
if ((pinza==l)&&(SoltarSiAprisionara==O)&&(e!=l)) //Aprisionar.
I
while (e>l)
I
e=e-2; f=f+ 1; CalculaCoordenadas(); delay(30);
1 1
if ((((pinza==O)&&(SoltarSiAprisionara==O))~~((pinza==l)&&(SoltarSiAprisionara==l)))&&(e!=g)) //Soltar
I
while (ecg)
I
e=e+2; f=f-I ; CalculaCoordenadas(); delay(30);
1 1 1
//Este procedimiento llama alos 6 anteriores para cambiar la posicin total del brazo de robot segn se requiera void CambiaAngulos(void)
{
51
int NoMovioR=O; int NoMovioP=O; int NoMoviofi3=0; compensa=O; aprobado=O; limiteAng=O; SoltarSiAprisionara=l; SueltaAprisiona(); //Cambia el estado de la pinza. SoltarSiAprisionara=O; tope=R+desplaza5; //Primero Gira la pinza, mueve la mueca Girapinza(); //mueve antebrazo el
if (tope!=R) {NoMovioR=l;}
y
si requieren se mover.
tope=P+desplaza4; MueveMunecaO;
if (tope!=P) {NoMovioP=l;}
tope=fi3+desplaza3; MueveBrazoo;
if (tope!=fi3) {NoMoviofi3=1;}
if (NoMovioR) //Encaso
denohaberpodidogirarlapinzase
{ tope=R+desplazafj;//ledaotraoportunidad.
Girapinza();
if (tope!=R) {NoMovioR=l;} else {NoMovioR=O;}
1
if (NoMovioP)//En
caso de nohaberpodidomover
la muecase
{ tope=P+desplaza4;
//ledaotraoportunidad.
la pinzase
MueveMunecaO;}
if (NoMovioR) //Encasodenohaberpodidogirar { tope=R+desplaza5;
//le daunaltimaoportunidad.
Girapinza();}
52
I
//Convierte un nmero entero en una cadena de caracteres para poder ser desplegado en pantalla en modo grfico. char *Convierte(double Numero-temporal)
I
char *Num-cadena; int dec,sig,num-dig; double cant-temp; div-t x;
cant-temp=Numero-temporal;
hacer la conversin.
x = div(cant-temp,lO); cant-temp=x.quot;
1
Num-cadena ecvt(Numero-tempora1,num-dig,&dec,&sig); //Convierte un valor numrico //a una cadena de caracteres. return (Num-cadena);
I
//Despliega en pantallalos valores de los ngulos y de la coordenada en x,y,z del punto final del brazo de robot, una vez //que se ha dejado de mover. void CoordFinal()
{
X.
53
{strcat(cad_salida,"-");}
strcat(cad-salida,Convierte(temp));
outtextxy(O,O,"Coordenada en eje X:");
outtextxy(l60,0,cad~salida);
Y.
{strcat(cad-salida,"-");} strcat(cad-salida,Convierte(temp)):
outtextxy(0,20,"Coordenada en eje Y:");
outtextxy(l60,20,cad-salida);
Z.
if (finalz<O)
{strcat(cad_salida,"-");}
strcat(cad-salida,Convierte(temp));
if (filC0)
{strcat(cad-salida,"-");} strcat(cad-salida,Convierte(temp));
outtextxy(0,60,"ngulo fil:");
outtextxy(l40,6O,cad_salida);
hombro
outtextxy(0,80,"ngulo fi2:");
outtextxy(l40,80,cad-~alida);
{strcat(cad-salida,"-");}
strcat(cad-salida,Convierte(temp));
54
outtextxy(0,100,"ngulo fi3:");
outtextxy(140,100,cad~salida);
if (P<O)
{strcat(cad-salida,"-");} strcat(cad-salida,Convierte(temp));
outtextxy(450,0,"ngu10P
:'I);
outtextxy(590,0,cad-salida);
outtextxy(450,20,"ngulo R :");
outtextxy(590,20,cad-salida);
temp=realP; //Despliega valor del ngulo real de la mueca.
strset(cad-salida,'\O');
if (realPc0) {strcat(cad-salida,"-");}
strcat(cad-salida,Convierte(temp)); outtextxy(450,40,"ngu10realp:"); outtextxy(590,40,cad-salida);
1
//Borra un sector dela pantalla donde se ha escrito texto para poder volver a escribir en ese mismo lugar los nuevos //valores. void BorraSector(void)
55
setf1llstyle(SOLID-FILL,5);
bar(0,0,190,110); bar(445,0,680,70);
1
//Genera una pausa hasta que el usuario oprima cualquier tecla para continuar. void Pausa(void)
{
*I
closegraph(); exit( );
texto modo
*I
1
if( o == c ){ c getch();
I* Si elusuarionopresionounatecla
/* Lee cdigo rastreo de del teclado
ASCII ? */
*I
I
setfillstyle(S0LID-FILL,O);
bar(250,0,393,8);
1
//Este procedimiento calculalos nuevos cambios en los ngulos de las extremidades del brazo de robot, una vez que el //usuario ingres las nuevas coordenadas del punto final hacia donde el brazo debe desplazarse. void CalculaAngulos(float x3ext,floaty3extjnt z3extjnt angulomano,int angulopinza,int modopinza)
I
double filaux,filaux2,Paux,anguloxyz,C,A,angB,potc,c,Arad; float div; int x2ext,y2ext,z2ext; double fin1 ,fin2,fin3,fin4;
if (x3ext==0) //Si este valor es cero el clculo de fil se indetermina
{ if(y3exPO){filaux=SO;}//poresoseledanestosvalores
//pordefault.
I
else //En caso contrario puede calcularse normalmente.
{ div=y3extlx3ext;
56
filaux=(atan(div)*l80)/3.1416;
1
if (y3ext==0) //Si este valor es cero el clculo de fil toma el mismo valor
else if (x3extcO){filaux=180;}//ledanestosvalores.
1
//Para estos valores de x3ext y y3ext el valor de fil debe recalcularse.
if (((x3ext~0)&&(y3ext~0))~~((x3ext~O)&&(y3ext~O))) {filaux=filaux+l80;}
Paux=anguIomano; //Aqu se toman valores absolutos de x3ext y y3ext para trabajar en 2D.
if (x3extcO) {x3ext=(-l)*x3ext;}
if (y3extcO) {y3ext=(-l)*y3ext;}
if (x3ext==0){filaux2=90;}
else
{ div=y3extlx3ext;
fi1aux2=(atan(div)*l80)/3.1416;}
if (y3ext==0){fil aux2=0;}
//Secalculan las coordenadas del vector del punto donde se articula la mueca.
x2ext=x3ext-((d+i)*cos((tilaux2*3.1416)/180)*cos((Paux*3.1416)/180));
y2ext=y3ext-((d+i)*sin((filaux2*3.1416)/180)*cos((Paux*3.1416)/180));
z2ext=z3ext-((d+i)*sin((Paux*3.1416)/180))-L;
//Se calcula el ngulo que forma el vector de las coordenadas anteriores con el sistema de coordenadas base.
if ((~2ext==O)&&(y2ext==O)){anguloxyz=O;}
else
{anguloxyz=(atan(z2extl(sqrt(pow(x2ext,2)tpow(y2ext,2))))*180)/3.1416;}
//Para estos valores de x2ext, y2ext y z3ext el valor de "anguloxyz"debe recalcularse
if ((z2ext~0)&&((x2ext~O)~~(y2ext~O))) {anguloxyz=180-anguloxyz;}
c=sqrt(potc);
57
//Se calcula el ngulo que forma el segmento del brazo con el vector anterior. if (c==O) {Arad=l.5708;} else
{Arad=acos((-(pow(B,2))+pow(D,2)+potc)/(2*D*c));}
A=(Arad*180)/3.1416; //Se calcula el ngulo que forma el segmento del antebrazo con el vector.
angB=(asin((D*sin(Arad))/B)*l80)/3.1416;
//Se calcula el ngulo que forma el brazo con el antebrazo. C=180-A-angB; //Se calculan los desplazamientos que deben tener los ngulos de las articulaciones para alcanzar el nuevo punto final. finl=filaux; fin2=A+anguloxyz; fin3=C-180;
fin4=Paux-((A+anguloxyz)+(C-l80));
desplazal=finl-fil; desplaza2=fin2-fi2;
desplaza3=fin3-(fi3-fi2);
desplaza4=fin4-(P-fi3);
desplaza5=angulopinza-R;
pinza=modopinza;
1
//Funcin que verifica si el carcter ledo de la variable se trata de un nmero, regresa un cero si es algn otro carcter. int DIGITO(char simbolo2)
I
char digitos[l I ] "1234567890";
in t ap2;
int result2; result2=0; for (ap2=0; ap2<=9; ap2++)
{ if (digitos[ap2]!=simbolo2)
58
ap2=1O;
1
1
return(result2);
1
//Funcin que valida la cadena que el usuario introdujo desde el teclado, regresa un uno si la cadena es una serie de //nmeros y un cero en caso contrario. int EsNumero(char buf[4])
{
int resultl=O; int apl; for (apl =O; apl cstrlen(buf); apl++)
{ if ((apl==O)&&(buf[apl]=='-')&&(tolerasigno))//Verifica si es un
//numero negativo.
1
return(result1);
1
//Este procedimiento despliega mensajes en pantalla para pedir al usuario que ingrese los nuevos valores de las //coordenadas del punto final, y despus llama al procedimiento "CalculaAngulos". void PideCoordenadas(void)
I
clrscr(); tolerasigno=l; do{ strset(buf,'\O'); gotoxy(30,10); printf("coordenada x : gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf));
59
x3ext=atoi(buf); do{ strset(buf,'\O'); gotoxy(30,10); printf("coordenada y : gotoxy(45,1O); scanf("%s",buf);} while (!EsNumero(buf)); y3ext=atoi(buf); tolerasigno=O;
do{ strset(buf,'\O');
gotoxy(30,10); printf("coordenada z : gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); z3ext=atoi(buf); tolerasigno=l; do{ strset(buf,'\O'); gotoxy(30,1O); printf("ngu1omano : gotoxy(45,lO); scanf("%s",buf);} while (!EsNumero(buf)); angulomano=atoi(buf); do{ strset(buf,'\O'); gotoxy(30,1O); printf("ngu1o pinza: gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); angulopinza=atoi(buf);
do{ ") ; ") ;
gotoxy(30,10);
60
");
I
pinza=l;
1
if( 'O' == tecla )
pinza=O;
}
}while ((tecla!='l')&&(tecla!='O'));
CalculaAngulos(x3ext,y3ext,z3ext,angulomano,angulopinza,pinza);
1
//Este procedimiento despliega mensajes en pantalla para pedir al usuario que ingrese los desplazamientos que debe
los ngulos de las articulaciones. //hacer el brazo para cada uno de
void PideAngulos(void)
{
clrscr(); tolerasigno=l; do{ strset(buf,'\O'); gotoxy(30,10); printf("primer ngulo: gotoxy(45,l O); scanf("%s",buf);} while (!EsNumero(buf)); desplaza1 =atoi(buf); do{ strset(buf,'\O'); gotoxy(30,10); printf("segund0 ngulo: gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); desplaza2=atoi(buf);
"1;
"1;
61
do{ strset(buf,'\O'); gotoxy(30,10); printf("tercer ngulo: gotoxy(45,l O); scanf("%s",buf);} while (!EsNumero(buf)); desplaza3=atoi(buf);
do{
") ;
strset(buf,'\O'); gotoxy(30,10); printf("cuart0 ngulo: gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); desplaza4=atoi(buf); do{ strset(buf,'\O'); gotoxy(30,10); printf("quint0 ngulo: gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); desplaza5=atoi(buf); do{ gotoxy(30,1O); printf("Aprensar(1) o soltar(0): gotoxy(55,l O); tecla getche(); if( '1' == tecla )
{
") ;
");
pinza=l;
1
if( 'O' == tecla )
I
pinza=O;
62
}while ((tecla!='l')&&(tecla!='O'));
I
//Este procedimientoes la primer opcin del men principal donde el usuario debe introducir cambios en las //articulaciones del brazode robot. void MedianteAngulos(void)
{
PideAngulos(); IniciaGrafico();
//Hace simulacin del movimiento del brazo. //Borra un sector donde se escribi texto.
y coordenadas.
CoordFinal(); //Despliega
//Este procedimiento es la segunda opcin del men principal donde el usuario debe introducir nuevas coordenadas para //el punto final del brazode robot. void MedianteCoordenadas(void)
{
PideCoordenadas();//Elusuario ingresa nuevos valores, y el ordenador IniciaGrafico(); //calcula Pausa(); CambiaAngulos(); //Hacesimulacindelmovimientodelbrazo. Borrasector(); //Borra un sector donde CoordFinal(); Pausa(); closegraph();
} los desplazamientos.
se escribi texto.
y coordenadas.
//Este procedimiento es la tercer opcin del men principal donde el usuario eligi realizar una secuencia de movimientos //del brazode robot previamente programada. void TareaEspecifica(void)
I
63
CambiaAngulos(); //Hace simulacin del movimiento del brazo. Borrasector(); //Borra CoordFinal(); //Despliega un sector donde se escribi texto.
los valores de ngulos
y coordenadas.
CambiaAngulos(); //Hace simulacin del movimiento del brazo. Borrasector(); //Borra un CoordFinal(); //Despliega sector donde se escribi texto.
los valores de ngulos
y coordenadas,
CambiaAngulos(); //Hace simulacin del movimiento del brazo. Borrasector(); //Borra un CoordFinal(); //Despliega sector donde se escribi texto.
los valores de ngulos
y coordenadas,
CalculaAngulos(-l00,lOO,O,-90,0,0); //Calcula los desplazamientos. CambiaAngulos(); //Hace simulacin del movimiento del brazo. Borrasector(); //Borra un sector donde CoordFinal(); //Despliega Pausa(); closegraph(); se escribi texto.
y coordenadas,
los valores de ngulos
I
//Procedimiento principal. int main(void)
{ float divtempl ,divtemp2;
//ValoresinicialesdeAngulos
realfi3=0:
64
realP=O; L=50;//ValoresconstantesdeMagnitudesde D=lOO; B=lOO; d=30; h=15; //Ancho i=30; //Magnitud e=g; f=g; norosa=lO; xO=O; //Coordenadas del segmento base. de cada segmento. de las tenazas.
los segmentos.
yo=o;
zO=L;
divtempl=L;
divtemp2=D; //dependiendo
divtempl=divtempl/divtemp2;
de
limiteinc=(asin(divtempl)*180)/3.1416;;
I
clrscr(); //Despliega principal men gotoxy(30,5); printf("1ntroducir Angulos(I)"); gotoxy(30,1O); printf("1ntroducir Coordenadas(2)"); gotoxy(30,15); printf("Rea1izar Tarea Especifica(3)");
65
//El usuariodebeelegirunadelastresopciones
MedianteAngulos();
if( '2' == tecla )
I
MedianteCoordenadasO;
1
if( '3' == tecla )
I
TareaEspecifica();
1
}while (tecla!=ESC); return O;
}
66
Conclusiones
El diseo y la construccindelbrazomecnico,enesteProyecto,nos
de las ventajas (y desventajas) de estas herramientas. permiti aplicar,a la Robtica,las herramientas que ofrecen ciencias como la Computacin, la Electrnica y la Mecnica, as como percatarnos
robot seelaboren
basea un anlisis de la
cinemtica de un manipulador de seis grados de libertad y, as, enviar las secuencias de fases adecuadas a
considerablemente el nmero de
elementos del circuito electrnico y, por ende, las dimensiones de ste, debido a que, en diseos propuestos por diversos autores, se haba contemplado el empleo de transistores Darlington, resistencias y diodos. Una vezamplificadaen seleccionado. corriente la secuencia de pulsos, se produjo el movimiento
El uso de un programa de computadora facilit la tarea de darle versatilidad a la forma de controlar los movimientos del brazo, ya que se pudieron implementar algoritmos basados en ngulos o coordenadas,
adems de ofrecer un manejo fcil del sistema.
Sin embargo, el sistemade control delbrazo notiene unalneade informaral programa la posicin realdelejedel cambios bruscos en los movimientos ordenados por el usuario.
retroalimentacin quepudiese
al
pudieran medir los ngulos entre stas, y proporcionar esta informacin al programa de la computadora para que haga las rectificaciones necesarias. en los que se refiere ala
Adems, enlaspruebasfinales,
tuvo queefectuarse
unajuste
parte
mecnica: se aadi un contrapeso a la articulacin correspondiente a la unin hombro (cuerpo-brazo), conel objeto de que al motor de pasos se le facilitara la tarea de mover el elemento brazo. A pesar de esto, cuando algn motor ejecutaba su respectiva secuencia de pasos, seobservaban vibraciones en el brazo.
circuito
68
Bibliografa
1. ANGULO, J. M.; Robtica frhctica. Tecnologa y Aplicaciones; Ed. Paraninfo; Espaa; 1992. 2. ANGULO, J. M.; Curso de Robtica; Ed. Paraninfo; Espaa; 1989. 3. 4.
5.
AUD, D.; Cmo y cundo aplicar un robof industrial; Ed. Marcombo;Espaa; 1988. SPONG, M.; Robot dinamics and control; Ed. John Wiley; USA; 1989. KOIVO, A,; Fundamentals for controlof robotic manipulators; Ed. John Wiley; USA; 1989. GRAY, C. B.;Mquinas elctricas y sistemas accionadores; Ed. Alfaomega; Mxico; 1993. URBIETA, R.; Diseiio y construccin de un controlador digital para motor de paso; Polibits. Revista de Computacin; CINTEC-IPN; Mxico; 1990. RAMAKANT, G.; Analog and Digital Control; Ed. Prentice-Hall; USA; 1988.
6.
10. MANO, M.; Lgica digitaly diseAo de computadoras; Ed. Prentice-Hall; Mxico; 1990.
11. TEXAS INSTRUMENTS; The TTL Data Book; USA; 1992. 12. SCHILDT, H.; Turbo C/C++; Ed. McGraw-Hill; Mexico; 1995. 13. http://www.eupmt.es/cra/robotica.htm 14. http://www.angelfire.com/ri/cocrow/index.html 15. http://www.geocities.com/ResearchTriangle/Fac~lity/9407/Robotica/robot.html 16. http://www.alek.pucp.edu.pe/ApoyoaEn/MaquinasEl/mpaso.htm
68