Ejercicios resueltos 📝
P1 — Guiado vs. programación textual
Sección titulada «P1 — Guiado vs. programación textual»- Una tarea de pick-and-place debe repetir siempre la misma secuencia de solo 3 puntos, y la va a configurar un operador de planta sin experiencia en programación, con acceso físico cómodo al robot. ¿El método de guiado o el textual es más adecuado aquí? Justifique usando las ventajas y desventajas propias de cada método (p. ej. “intuitivo, no requiere conocimiento de programación” frente a “preciso, reproducible, simulable”).
- Dentro de la programación por guiado, ¿qué diferencia hay entre el modo básico y el modo extendido? Dé un ejemplo de una tarea que no podría programarse adecuadamente solo con guiado básico y que sí necesitaría guiado extendido, explicando qué información adicional aporta este último.
- La página describe el modo pasivo como el uso de “un doble del robot más ligero” para enseñar los movimientos, que luego se replican en el robot real. ¿Por qué este modo sería poco práctico para programar un robot industrial pesado de 6 GDL en una línea de producción de alta velocidad, comparado con usar directamente la programación textual?
Mostrar solución
- Conviene el guiado. La tarea es simple (3 puntos), repetitiva y la programa alguien sin conocimientos de programación: el guiado es “un método intuitivo” que no exige escribir código, ideal quien solo necesita “coger de la mano” al robot y grabar los puntos. La programación textual, en cambio, ofrece mayor precisión y reproducibilidad, ventajas que no se aprovechan del todo en una tarea tan sencilla, a cambio de exigir “conocimiento de programación” que el operador no tiene.
- El guiado básico solo permite guiar al robot punto a punto por la trayectoria, sin más información que la secuencia de posiciones. El guiado extendido agrega la posibilidad de especificar, además, velocidad, tipo de trayectoria, y entradas/salidas binarias. Una tarea que necesitaría guiado extendido es, por ejemplo, una donde el robot deba activar una pinza neumática (salida binaria) al llegar a cierto punto y luego moverse más lento cerca de una pieza frágil: el guiado básico solo registraría las posiciones, sin poder programar la activación de la pinza ni el cambio de velocidad.
- El modo pasivo requiere fabricar y manipular físicamente un doble más ligero del robot para poder moverlo a mano; en un robot industrial pesado y en una línea de alta velocidad, este doble sería costoso de construir, y de todas formas el proceso de enseñanza es lento y depende de la destreza manual del operador. La programación textual, en cambio, permite especificar directamente velocidades, aceleraciones y trayectorias exactas en un programa, sin necesidad de manipular físicamente ningún robot ni réplica, siendo más práctica y repetible para una línea de producción exigente.
P2 — Niveles de abstracción, movimientos y “conceptos universales” entre fabricantes
Sección titulada «P2 — Niveles de abstracción, movimientos y “conceptos universales” entre fabricantes»-
No existe “un lenguaje de programación universal” para robots: cada fabricante tiene el suyo (RAPID de ABB, KRL de KUKA, KAREL de FANUC, URScript de UR). Sin embargo, todos estos lenguajes distinguen básicamente el mismo par de movimientos (
MoveJ/PTP/J/movejpor un lado,MoveL/LIN/L/movelpor otro). ¿Por qué, a pesar de no compartir sintaxis, los fabricantes sí comparten estas mismas dos categorías de movimiento? Justifique pensando en qué depende cada tipo de movimiento, más allá del lenguaje particular en que se escriba. -
Clasifique cada una de las siguientes formas de dar una instrucción según los tres niveles de la programación textual (nivel robot, nivel objeto, nivel tarea), justificando:
- Una línea de código que especifica el ángulo exacto de cada articulación, la aceleración y la velocidad del movimiento.
- Una instrucción del tipo “tomar la pieza A y colocarla sobre la pieza B”, sin especificar trayectoria ni velocidad.
- Una única instrucción de alto nivel como “ensamblar la pieza”, donde el sistema decide por sí mismo qué movimientos, agarres y trayectorias usar.
-
Explique la diferencia entre
movejymovelen términos del espacio en el que se interpola la trayectoria (articular vs. cartesiano), y por quémovejpuede ser más veloz quemovelaunque no garantice una línea recta del efector final. -
Las buenas prácticas recomiendan explícitamente “verificar singularidades antes de ejecutar trayectorias lineales”, pero no mencionan ese riesgo para los movimientos articulares. Relacione esto con lo visto en la semana de control cinemático: ¿por qué
movelpuede encontrarse con una configuración singular durante su ejecución mientras quemovejno corre ese mismo riesgo, dado lo que cada uno debe resolver internamente para generar el movimiento?
Mostrar solución
-
Aunque la sintaxis de cada lenguaje es distinta, el movimiento de un robot solo puede interpolarse fundamentalmente de dos formas: en el espacio articular (cada articulación va de su ángulo inicial al final, sin garantizar una forma particular para el efector) o en el espacio cartesiano (se interpola directamente la posición y orientación del efector final, típicamente en línea recta). Esta distinción no depende del fabricante sino de la naturaleza matemática del problema de control cinemático: cualquier robot industrial, sin importar su lenguaje, necesita alguna de estas dos formas de generar trayectorias, por lo que todos terminan ofreciendo un comando para cada una, aunque le pongan nombres distintos (
MoveJ/PTP/J/movejyMoveL/LIN/L/movel). -
Clasificación de las tres instrucciones:
- Nivel robot: se especifica en detalle cada parámetro del movimiento (ángulos, velocidad, aceleración), tal como define la página: “cada movimiento a realizar por el robot debe especificarse detalladamente”.
- Nivel objeto: la instrucción depende del objeto a manipular (“tomar la pieza A y colocarla sobre la pieza B”) sin necesidad de detallar cómo moverse, lo cual “presenta mayor comodidad” que el nivel robot.
- Nivel tarea: la programación “se reduce a una única instrucción”, indicándole al robot qué debe hacer (“ensamblar la pieza”) en vez de cómo hacerlo, dejando el resto a cargo del propio sistema.
-
movejinterpola directamente en el espacio articular: cada articulación se mueve de su ángulo inicial a su ángulo final sin que el sistema deba resolver continuamente la cinemática inversa a lo largo del camino, lo que lo hace “el más rápido”.movel, en cambio, interpola en el espacio cartesiano (posición y orientación del TCP en línea recta), por lo que en cada instante debe convertirse la posición cartesiana intermedia a coordenadas articulares mediante cinemática inversa; ese cálculo adicional, y el hecho de que el camino articular resultante ya no es el más directo posible, hace quemovelno sea, en general, tan rápido comomovej, aunque sí garantice la forma exacta del camino del efector. -
Como se resolvió en la parte anterior,
movelnecesita resolver la cinemática inversa en cada punto intermedio de la línea recta cartesiana para saber a qué configuración articular corresponde. Si alguno de esos puntos intermedios corresponde a una configuración singular del robot, la jacobiana pierde rango y el cálculo de las velocidades articulares necesarias () deja de tener solución, por lo que el robot puede fallar o requerir velocidades articulares extremas al pasar por ese punto.movej, en cambio, nunca necesita invertir la jacobiana ni resolver cinemática inversa durante el movimiento: solo interpola directamente los ángulos articulares inicial y final, así que no puede “encontrarse” con una singularidad en el camino de la misma forma.
P3 — Programación off-line, RTDE y buenas prácticas
Sección titulada «P3 — Programación off-line, RTDE y buenas prácticas»- Explique dos ventajas concretas, mencionadas en las diapositivas, de simular una tarea con URSim, RoboDK o ROS/MoveIt antes de ejecutarla en el robot físico. Relacione una de ellas con lo aprendido en la semana de control cinemático.
- La interfaz RTDE permite controlar el robot desde Python leyendo continuamente la posición real del efector y de las articulaciones mientras se envían comandos de movimiento. ¿En qué se diferencia esto, conceptualmente, de ejecutar un programa URScript con una secuencia fija de
movej/movelde principio a fin? Piense en si el programa puede reaccionar a información que solo se conoce durante la ejecución (por ejemplo, la posición real medida por el robot o la señal de un sensor externo), y no solo antes de empezar. - Las buenas prácticas recomiendan usar blends (radios de suavizado) entre los puntos de una trayectoria de varios waypoints, en vez de detener por completo el robot en cada uno antes de continuar al siguiente. Relacione este concepto con lo visto la semana anterior sobre interpoladores: ¿qué problema de continuidad de velocidad evita el uso de un blend?
- Un estudiante prueba su primer programa nuevo directamente a la velocidad máxima del robot, sin haber definido una posición “home” segura. Identifique dos buenas prácticas que está incumpliendo y explique el riesgo concreto de cada una.
Mostrar solución
-
Dos ventajas mencionadas son que la simulación permite detectar colisiones y singularidades antes de ejecutar el programa en el robot real, y que permite optimizar los tiempos de ciclo sin interrumpir la producción real mientras se ajusta el programa. La detección de singularidades se relaciona directamente con la semana de control cinemático: al simular la trayectoria antes de ejecutarla, es posible revisar si en algún punto la jacobiana pierde rango (como se analizó para
movelen P2, punto 4) y corregir la trayectoria antes de arriesgar al robot físico. -
Un programa URScript de comandos fijos es esencialmente una secuencia preestablecida: se define de antemano y se ejecuta igual cada vez, sin importar lo que ocurra durante el movimiento. RTDE, en cambio, permite un lazo de control en el que el programa puede leer el estado real del robot mientras se mueve (su pose o sus ángulos articulares actuales) y decidir, en función de esa información, qué comando enviar a continuación. Esto permite reaccionar a condiciones que no se conocían al momento de escribir el programa (por ejemplo, ajustar la trayectoria si un sensor detecta que una pieza no está exactamente donde se esperaba), algo que una secuencia fija de
movej/movelno puede hacer por sí sola. -
Sin blend, el robot debe detenerse completamente (llegar a velocidad cero) en cada waypoint antes de iniciar el siguiente movimiento, lo cual corresponde a una trayectoria punto a punto sin continuidad de velocidad entre tramos. El blend suaviza esa transición, permitiendo que el efector no llegue a detenerse al pasar cerca de un waypoint intermedio, evitando así el mismo problema de discontinuidad de velocidad (y los tirones mecánicos asociados) que se discutió al comparar los interpoladores lineales y cúbicos la semana anterior.
-
Está incumpliendo al menos dos recomendaciones:
- No reducir la velocidad durante las pruebas (la práctica recomienda una velocidad reducida, del orden de ≤250 mm/s, mientras se valida un programa nuevo); el riesgo es que un error en la trayectoria (por ejemplo, una colisión o un límite articular mal calculado) ocurra a alta velocidad, causando daños mucho mayores al robot, al entorno o a las personas cercanas que si ocurriera a baja velocidad.
- No definir una posición “home” segura y libre de colisiones antes de empezar; el riesgo es que, ante cualquier error, detención de emergencia o reinicio del programa, el robot no tenga un punto de referencia conocido y seguro desde el cual reanudar o partir, aumentando la probabilidad de colisiones al moverse desde una configuración arbitraria.