You are on page 1of 21

ROBOTICA INDUSTRIAL.

Cuando escuchamos la palabra Robot, en algunas ocasiones pensamos en esas pelculas que nos han sorprendido por presentarnos Robots que realizan acciones superiores a las capacidades del ser humano. Quizs los modelos ms famosos de robots han sido los creados por George Lucas en su pelcula Stars Wars a quienes conocimos como C3PO y R2D2, y otros como Robocop. Sin embargo, la idea que nos presentan las pelculas se encuentra bastante alejada de la aplicacin industrial de los robots, a los cuales se les considera como un tipo de mquinasherramientas. El siglo XVIII constituye la poca del nacimiento de la robtica industrial. Hace ya ms de doscientos aos se construyeron unas muecas mecnicas, del tamao de un ser humano, que ejecutaban piezas musicales. Sin duda, hoy se puede afirmar que el desarrollo de las mquinas-herramientas ha sido sumamente acelerado. El concepto actual de robot industrial no se aplica a aquellas antiguas muecas sino a lo que aqu aprenderemos es un robot industrial. Definicin : Mikell Groover, en su libro Automation, Production Systems and Computer Integrated 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..." Cabe destacar que la caracterstica antropomrfica ms comn en nuestros das es la de un brazo mecnico, el cual realiza diversas tareas industriales. Existen en el mercado diversas empresas dedicadas a la fabricacin de robots industriales por lo que existen diferentes marcas y modelos. Estos ltimos son normalmente asignados para identificarlos o de acuerdo a su funcin. En el caso de los robots a analizar en esta monografa se encuentra la marca Amatrol modelo Jpiter. La marca Mitsubishi modelo Move Master Ex.

La marca Unimate, modelo Puma, ste ltimo dado como abreviacin de Programable Universal Machine for Assembly

Robot utilizado dentro de los sistemas de almacenamiento (AS/RS) marca Amatrol

Para acercarnos ms al estudio de los robots, identificaremos sus componentes. Componentes El componente principal lo constituye el manipulador, el cual consta de varias articulaciones y sus elementos.

Las partes que conforman el manipulador reciben los nombres de: cuerpo, brazo, mueca y efector final. Al efector final se le conoce comnmente como sujetador o gripper.

En este trabajo voy a centrar mi atencin en los elementos de las articulaciones. Cada articulacin provee al robot de al menos un "grado de libertad". En otras palabras, las articulaciones permiten al manipulador realizar movimientos:

Lineales que pueden ser horizontales o verticales.

Por articulacin

(En los dos casos la lnea roja representa la trayectoria seguida por el movimiento del robot).

Adems del manipulador, los otros elementos que forman parte del robot son un controlador,

mecanismos de entrada y salida de datos y dispositivos especiales. El controlador del robot, como su nombre lo indica, es el que controla cada uno de los movimientos del manipulador y guarda sus posiciones. El controlador recibe y enva seales a otras mquinas-herramientas (por medio de seales de entrada/salida) y almacena programas. Los mecanismos de entrada y salida, ms comunes son: teclado, monitor y caja de comandos llamada "teach pendant". En el dibujo anterior tenemos un controlador (computer module) que enva seales a los motores de cada uno de los ejes del robot, la caja de comandos ("teach pendant") la cual sirve para ensearle las posiciones al manipulador del robot. La siguiente figura muestra un "teach pendat" para un tipo de robot industrial.

Los dispositivos de entrada y salida permiten introducir y, a su vez, ver los datos del controlador

Para mandar instrucciones al controlador y para dar de alta programas de control, comnmente se utiliza una computadora adicional. Es necesario aclarar que algunos robots nicamente poseen uno de estos componentes. En estos casos, uno de los componentes de entrada y salida permite la realizacin de todas las funciones. Esto lo podemos ver en el robot Jpiter, el cual se puede programar utilizando el "teach pendant". En el caso del robot del AS/RS, ste se puede programar y ensear sus posiciones a travs de un teclado y monitor conectado directamente al controlador.

En otros casos, es indispensable conectar una computadora al controlador del robot. Ejemplo de ello es el robot Move Master (Mitsubishi), el cual requiere una computadora externa para realizar y cargar los programas del controlador. Seales de entrada y salida Las seales de entrada y salida se obtienen mediante tarjetas electrnicas instaladas en el controlador del robot las cuales le permiten tener comunicacin con otras mquinasherramientas. En manufactura, por ejemplo, se utilizan estas tarjetas para comunicar al robot PUMA con las mquinas de control numrico (torno y centro de maquinado, por ejemplo). Estas tarjetas se componen de relevadores los cuales mandan seales elctricas que despus son interpretadas en un programa de control, estas seales nos permiten controlar cuando debe entrar el robot a cargar una pieza a la mquina, cuando debe empezar a funcionar la mquina o el robot, etc.

Posicionamientos del Move Master EX

Paso ahora a los dispositivos especiales. Entre los dispositivos especiales se encuentran los ejes que facilitan el movimiento transversal del manipulador y las estaciones de ensamble, que son utilizadas para sujetar las distintas piezas de trabajo. En la estacin del robot Move Master EX (Mitsubishi) se pueden encontrar los siguientes dispositivos especiales:

a con el robot.

Con todos estos dispositivos el robot cuenta con seales de entrada/salida para poder realizar la integracin de su funcin incorporando estos elementos. Efector final (gripper) El efector final (griper) es un dispositivo que se une a la mueca del brazo del robot con la finalidad de activarlo para la realizacin de una tarea especfica. La razn por la que existen distintos tipos de efectores finales es, precisamente, por las funciones que realizan. Los diversos tipos podemos dividirlos en dos grandes categoras: pinzas y herramientas. Las pinzas han sido diseadas para que el robot cargue y descargue objetos, transporte material y ensamble piezas.

Los tipos de pinzas ms comunes pertenecen al tipo llamado pivotante. Los dedos de la 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 lineal. En este caso, los dedos se abren y se cierran ejecutando un movimiento paralelo entre s.

Al 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 los dedos. Con estos lineamientos, se puede asegurar una buena sujecin, de tal forma que la pinza no modifique o dae la estructura de la pieza. Una regla general es que la pinza debe sujetar a la pieza de trabajo en su centro de gravedad, esto ocasiona que se anulen los momentos que se pudieran generar por el peso de la pieza de trabajo.

Para reducir los tiempos de ciclo en operaciones de carga y descarga de piezas a mquinasherramientas se pueden disear efectores finales con doble pinza. Existen otros tipos de pinzas como ventosas, pinzas magnticas y pinzas adhesivas. Dependiendo de la aplicacin se puede sustituir las pinzas por herramientas. Grados de libertad Sin duda, una de las principales caractersticas que definen a los robots lo constituye los "grados de libertad" que posea. Hablar de "grados de libertad" equivale a decir nmero y tipo de movimientos del manipulador.

Observando los movimientos del brazo y de la mueca, se puede determinar el nmero de grados de libertad que presenta un robot. Generalmente, tanto en el brazo como en la mueca, se encuentra una variacin que va desde uno hasta los tres grados de libertad. A la mueca de un manipulador le corresponden los siguientes movimientos o grados de libertad: giro (hand rotate), elevacin (wrist flex) y desviacin(wrist rotate) como lo muestra el siguiente modelo.

Cabe hacer notar que existen muecas que no pueden realizar los tres tipos de movimiento. Las muecas, tanto del robot del sistema de almacenamiento y reposicin automtica (AS/RS) como la del robot Jpiter, muestran nicamente un grado de libertad de giro. Por su parte, la mueca del robot MoveMaster Mitsubishi est diseada para realizar movimientos de giro y de elevacin. Es decir, presenta dos grados de libertad. Los grados de libertad del brazo de un manipulador estn directamente relacionados con su anatoma, o configuracin Tipos de configuraciones Cuando se habla de la configuracin de un robot, se habla de la forma fsica que se le ha dado al brazo del robot. El brazo del manipulador puede presentar cuatro configuraciones clsicas: la cartesiana, la cilndrica, la polar y la angular. Configuracin cartesiana: Posee tres movimientos lineales, es decir, tiene tres grados de libertad, los cuales corresponden a los movimientos localizados en los ejes X, Y y Z. Los movimientos que realiza este robot entre un punto y otro son con base en interpolaciones lineales. Interpolacin, en este caso, significa el tipo de trayectoria que realiza el manipulador cuando se desplaza entre un punto y otro. A la trayectoria realizada en lnea recta se le conoce como interpolacin lineal y a la trayectoria hecha de acuerdo con el tipo de movimientos que tienen sus articulaciones se le llama interpolacin por articulacin.

Configuracin cilndrica: Puede realizar dos movimientos lineales y uno rotacional, o sea, que presenta tres grados de libertad. El robot de configuracin cilndrica est diseado para ejecutar los movimientos conocidos como interpolacin lineal e interpolacin por articulacin. La interpolacin por articulacin se lleva a cabo por medio de la primera articulacin, ya que sta puede realizar un movimiento rotacional (ver movimiento A en el dibujo siguiente).

Configuracin polar: Tiene varias articulaciones. Cada una de ellas puede realizar un movimiento distinto: rotacional, angular y lineal. Este robot utiliza la interpolacin por articulacin para moverse en sus dos primeras articulaciones y la interpolacin lineal para la extensin y retraccin.

Configuracin angular (o de brazo articulado): Presenta una articulacin con movimiento rotacional y dos angulares.Aunque el brazo articulado puede realizar el movimiento llamado interpolacin lineal (para lo cual requiere mover simultneamente dos o tres de sus articulaciones), el movimiento natural es el de interpolacin por articulacin, tanto rotacional como angular.

Adems de las cuatro configuraciones clsicas mencionadas, existen otras configuraciones llamadas no clsicas. El ejemplo ms comn de una configuracin no clsica lo representa el robot tipo SCARA, cuyas siglas significan: Selective apliance arm robot for asembly. Este brazo puede realizar movimientos horizontales de mayor alcance debido a sus dos articulaciones rotacionales. El robot de configuracin SCARA tambin puede hacer un movimiento lineal (mediante su tercer articulacin). Ejemplo de un robot SCARA:

Volumen de Trabajo: Para acercarnos ms al conocimiento de los robots industriales, es preciso tocar el tema que se refiere al volumen de trabajo y la precisin de movimiento. Entre las caractersticas que identifican a un robot se encuentran su volumen de trabajo y ciertos parmetros como el control de resolucin, la exactitud y la repetibilidad. El volumen de trabajo de un robot se refiere nicamente al espacio dentro del cual puede desplazarse el extremo de su mueca. Para determinar el volumen de trabajo no se toma en cuenta el efector final. La razn de ello es que a la mueca del robot se le pueden adaptar gripers de distintos tamaos. Para ilustrar lo que se conoce como volumen de trabajo regular y volumen de trabajo irregular, tomaremos como modelos varios robots.

El robot cartesiano y el robot cilndrico presentan volmenes de trabajo regulares. El robot cartesiano genera una figura cbica.

El robot de configuracin cilndrica presenta un volumen de trabajo parecido a un cilindro (normalmente este robot no tiene una rotacin de 360)

Por su parte, los robots que poseen una configuracin polar, los de brazo articulado y los modelos SCARA presentan un volumen de trabajo irregular.

Para determinar el volumen de trabajo de un robot industrial, el fabricante generalmente indica un plano con los lmites de movimiento que tiene cada una de las articulaciones del robot, como en el siguiente caso:

Precisin de Movimientos: La precisin de movimientos en un robot industrial depende de tres factores: la resolucin espacial, la exactitud y la repetibilidad.

La resolucin espacial se define como el incremento ms pequeo de movimiento que puede ejecutar un robot depende Directamente del control del sistema y de las inexactitudes mecnicas del robot. Del control del sistema porque ste, precisamente, es el medio para controlar todos los incrementos individuales de una articulacin.

Las inexactitudes mecnicas se encuentran estrechamente relacionadas con la calidad de los componentes que conforman las uniones y las articulaciones. Como ejemplos de inexactitudes mecnicas pueden citarse la holgura de los engranes, las tensiones en las poleas, las fugas de fluidos, etctera. Para explicar con mayor precisin el trmino resolucin espacial tomemos el siguiente ejemplo:

En el dibujo de la derecha, se supone que utilizando el teach pendant, se mueve al robot del P1 al P2, en este caso el P2 representa el menor incremento que se puede mover el robot a partir de P1. Si se observan estos incrementos en un plano se vera como una cuadricula. En donde en cada interseccin de lneas se encuentra un punto "direccionable" es decir un punto que puede ser alcanzado por el robot. De esta forma la resolucin espacial puede definirse tambin como la

distancia entre dos puntos adyacentes (en la primer figura sera la distancia entre los puntos P1 y P2), es importante sealar que para un robot que tuviera este espacio de trabajo la distancia entre puntos esta muy exagerada para efectos de explicar el trmino.
o

La precisin de movimientos del robot depende, adems de la resolucin espacial, de la exactitud y de la repetibilidad.

La exactitud se refiere a la capacidad de un robot para situar el extremo de su mueca en un punto sealado dentro del volumen de trabajo. La exactitud mantiene una relacin directa con la resolucin espacial, es decir, con la capacidad del control del robot de dividir en incrementos muy pequeos el volumen de trabajo. En el dibujo si quisiera mover el robot exactamente al punto donde se encuentra la pieza de trabajo, el robot solamente podra acercarse al objeto posicionndose en el punto direccionable ms prximo. En otras palabras, no podra colocarse exactamente en la posicin requerida. Un robot presenta una mayor exactitud cuando su brazo opera cerca de la base. A medida que el brazo se aleja de la base, la exactitud se ir haciendo menor. Esto se debe a que las inexactitudes mecnicas se incrementan al ser extendido el brazo. Otro factor que afecta a la exactitud es el peso de la carga, las cargas ms pesadas reducen la exactitud (al incrementar las inexactitudes mecnicas). El peso de la carga tambin afecta la velocidad de los movimientos del brazo y la resistencia mecnica.
o

La repetibilidad, el tercer y ltimo factor, se refiere a la capacidad del robot de regresar al punto que se le program las veces que sean necesarias.

En el dibujo, al robot se le ense el punto programado (PP), al indicarle mediante un comando de programacin que regrese al punto PP el robot se puede colocar en el punto de regreso (PR) o en otro punto de regreso que tenga la misma distancia hacia PP. En el dibujo del robot esta diferencia entre el punto PP y el PR est muy exagerada, ya que en un robot industrial se espera que la repetibilidad est en el orden de +/- 0,0490 mm.

Cabe hacer la aclaracin que si usamos un microscopio, es posible apreciar las microscpicas variaciones que presenta el robot cada vez que regresa al punto indicado. En otras palabras, no existe la repeticin absolutamente exacta. Sistemas de Impulsin: Los ms comunes son tres: impulsin hidrulica, impulsin elctrica e impulsin neumtica.
o

El sistema de impulsin hidrulica es en la que se utiliza un fluido, generalmente un tipo de aceite, para que el robot pueda movilizar sus mecanismos. La impulsin hidrulica se utiliza para robots grandes, los cuales presentan mayor velocidad y mayor resistencia mecnica. Se le da el nombre de impulsin elctrica cuando se usa la energa elctrica para que el robot ejecute sus movimientos. La impulsin elctrica se utiliza para robots de tamao mediano, pues stos no requieren de tanta velocidad ni potencia como los robots diseados para funcionar con impulsin hidrulica. Los robots que usan la energa elctrica se caracterizan por una mayor exactitud y repetibilidad. Solo resta hablar de aquellos robots que se valen de la impulsin neumtica para realizar sus funciones. En la impulsin neumtica se comprime el aire abastecido por un compresor-, el cual viaja a travs de mangueras. Los robots pequeos estn diseados para funcionar por medio de la impulsin neumtica. Los robots que funcionan con impulsin neumtica estn limitados a operaciones como la de tomar y situar ciertos elementos.

Es importante sealar que no todos los elementos que forman el robot pueden tener el mismo tipo de impulsin. CARACTERSTICAS FSICAS DE LOS ROBOT EXAMINADOS Robot Unimate modelo PUMA.

Este robot presenta una configuracin angular, tiene 3 grados de libertad en el cuerpo y brazo y 3 en la mueca, dando un total de 6 grados de libertad.

Su utilizacin principal en la celda de manufactura, o produccin, es para carga y descarga de materiales a las maquinas de control numrico. Robot del sistema AS/RS

Este es un robot de configuracin cartesiana, tiene 3 grados de libertad en el cuerpo y brazo (correspondiente a los ejes X, Y, Z), un grado de libertad rotacional en la mueca. LENGUAJE ACL ACL (Lenguaje de Control Avanzado) -Lenguaje de control que ofrece al usuario todos los -Comandos y funciones para que el robot se mueva. -Es el lenguaje de programacin del robot. - Las definiciones de cada funcin 1. Introduccin 1.1. Objeto del proyecto El objeto de este proyecto es desarrollar un analizador sintctico y lxico para el lenguaje ACL (Lenguaje de Control Avanzado) que ser implementado en una aplicacin, la cual devolver los errores de sintaxis y de lxico de un determinado programa escrito en este lenguaje, y a

continuacin lo ejecutar, pudiendo observar el brazo robtico SCORBOT en movimiento a travs de una ventana en tres dimensiones. La aplicacin principal se desarrollar en lenguaje Java, haciendo uso tambin de C++ para la creacin de la ventana en tres dimensiones. Para la creacin de la gramtica en Java utilizaremos la herramienta ANTLR. stas y el resto de herramientas utilizadas sern explicadas con detalle a lo largo de esta memoria. Esta aplicacin es especialmente til si consideramos un brazo robtico que realice un gran nmero de operaciones, detectando de manera rpida y precisa los errores cometidos en la escritura del programa en ACL. 1.2. Antecedentes Este proyecto naci a raz de una necesidad prctica para los brazos robticos SCORBOT. En concreto se deseaba tener una herramienta que permitiese realizar un programa ACL sin tener que estar en el laboratorio con el robot y poner simular el comportamiento del programa. Con dicha herramienta podra avanzarse ms rpidamente en el desarrollo de las prcticas de laboratorio. Dado que el alumno llegara al equipo (robot) con el programa ya probado y depurado. El brazo robot es de tipo articulado vertical con cinco articulaciones que proporcionan 5 grados de libertad, adems posee una pinza o garras en su extremo. El robot puede ser combinado con otros componentes de automatizacin o bien operar de forma individual y autnoma. La velocidad y precisa repetibilidad de trayectoria permiten aplicar este robot en cadenas de produccin como robot soldador, como alimentador de mquinas CNC o para llevar a cabo tareas de medicin, test o clasificacin. 12 1.1 Robot SCORBOT 1.3. Introduccin al proyecto Para el desarrollo de este proyecto se han utilizado diversas herramientas, algunas de ellas no muy extendidas, por lo que stas sern explicadas para que el lector de este documento, en caso de estar interesado, pueda desarrollar aplicaciones similares o mejorar la presente en la medida de lo posible. Tambin se explicarn los lenguajes utilizados, centrndonos en aquel con el que se ha escrito la gramtica. Esto es debido a que este lenguaje es escasamente conocido por lo que en esta memoria se desarrollar una pequea introduccin al mismo. Bsicamente el programa se compone de tres partes: la dedicada a la gramtica del lenguaje ACL, la que se basa en Java para ejecutar las acciones vinculadas a cada comando ACL y la de representacin en tres dimensiones en C++.

EL LENGUAJE DE ROBTICA INDUSTRIAL VAL II El VAL II, reemplaz al VAL y fue lanzado al mercado en 1984. Este lenguaje, forma parte de la segunda generacin de lenguajes de programacin de robots. VAL II (y los lenguajes de la segunda generacin), salvan algunas limitaciones de los lenguajes de la primera generacin y las aaden a estas capacidades mediante la incorporacin de caractersticas que hacen que el robot parezca ms inteligente. Activan el robot para que realice tareas ms complejas. A estos lenguajes de la segunda generacin, se les ha llamado lenguajes de programacin estructurada, porque poseen las construcciones de control estructuradas utilizadas en los lenguajes de programacin de la computadora. Este lenguaje tiene las siguientes caractersticas y capacidades: 1. Control de movimiento. Esta caracterstica es bsicamente la misma que para los lenguajes de la primera generacin, pero a veces, va ms all por su inclusin de problemas geomtricos ms complejos que la interpolacin de la lnea recta. 2. Capacidad de sensor avanzadas. Entre las mejoras de estos lenguajes de la segunda generacin, se incluye la capacidad para tratar con ms que seales binarias simples (todo o nada) y la capacidad para controlar los dispositivos por medio de los datos del sensor. 3. Inteligencia limitada. Esta capacidad utiliza la informacin recibida sobre el entorno de trabajo para modificar el comportamiento del sistema de una manera programada. 4. Comunicaciones y procesamiento de datos. Los lenguajes de esta segunda generacin suelen tener los medios adecuados para interactuar con computadoras y bases de datos de computadora con el propsito de almacenar registros, generar informes y controlar las actividades de la clula de trabajo.

Las aportaciones ms relevantes de VAL II son: Al concepto de programa de control del robot aade el de programa de control de proceso. Prioridad relativa entre procesos asncronos. Admite las cinco estructuras clsicas de control. Comunicacin con un ordenador central (host). - 22 - Jaume Yebra Prez Nria Lagos Fdez. K50 ROBT EL LENGUAJE V+

La comunicacin con un host, aumenta enormemente las posibilidades del sistema ya que pone al alcance del robot toda la potencia de clculo y de gestin de informacin procedente de sensores representada por el host. Se puede as empezar a pensar para los robots de Unimation en tareas coordinadas con sistemas de visin, en aplicacin de tcnicas de I.A. para el control de la actuacin de manipuladores, etc. Se abre as un nuevo campo de posibilidades en tareas de robtica inteligente. [Ferrat et al., 86]. En resumen, VAL II es un lenguaje y sistema de control basado en computadora diseado para los robots industriales Unimation. Proporciona la capacidad para facilitar la definicin de la tarea que va a realizar un robot, puesto que las tareas se definen mediante los programas escritos por el usuario. Incluyndose, tambin, la capacidad para responder a la informacin a partir de sensores tales como la visin de mquina, el perfeccionamiento en la ejecucin del movimiento del brazo y el trabajo en las situaciones imprevisibles o utilizando sistemas de referencia. Ejemplo de programa para apilar bloques VAL II 1. REMARK Este programa REMARK recoge piezas 6. REMARK y las apila. 7. OPENI 8. SET B = DEPOSIT 9. SETI COUNT = 0 10. 10 APPROS PICKUP, 200.00 11. MOVES PICKUP 12. CLOSEI 13. DEPARTS 200.00 14. APPRO B, 200.00 15. MOVES B 16. OPENI 17. DEPARTS 200.00 18. SETI COUNT = COUNT + 1

19. TYPEI COUNT 20. REMARK COUNT indica el n tot de apilamientos 21. IF COUNT EQ 4 THEN 20 22. REMARK mover a B incrementando z en 75.00 mm 23. SHIFT B BY 0.00, 0.00, 75.00 24. GOTO 10 25. 20 SPEED 50.00 ALWAYS 26. READY 27. TYPE *** FIN DE PROGRAMA APILAR *** - 23 - Jaume Yebra Prez Nria Lagos Fdez. K50 ROBT EL LENGUAJE V+ Significado de las lneas de programa anteriores: 1 a 6 son comentarios 7 da la orden de abrir la pinza del elemento terminal 8 asigna a la variable B el valor de la localizacin donde se desean depositar los objetos 9 inicializa la variable entera COUNT 10 mueve el elemento terminal en lnea recta desde la posicin actual hasta una que dista 200 mm sobre el eje Z de la herramienta en el punto donde se desea recoger el objeto 11 realiza un movimiento en lnea recta que sita el elemento terminal en el punto PICKUP 12 cierra la pinza 13 se aleja de la posicin anterior 200 mm en lnea recta sobre el eje Z de la herramienta 14 realiza un movimiento de aproximacin hasta 200 mm del punto B 15 mueve el elemento terminal en lnea recta hasta B 16 abre la pinza 17 se aleja en lnea recta de B 18 aumenta una unidad el valor del contador COUNT

19 muestra el valor actual del contador COUNT 21 expresin condicional para comprobar si ha terminado el traslado de los cuatro objetos 23 modifica la localizacin de B en 75 mm segn la coordenada Z 24 vuelve a la lnea con el indicador 10 25 cambia la velocidad (50 % de la nominal) 26 lleva al manipulador a la posicin de reposo 27 escribe el mensaje de final de programa.

You might also like