Cómo y Cuándo Utilizar Offs y RelTool para Optimizar la Cogida de Piezas

Cuando un técnico comienza a programar puntos de aproximación, retoma o salida creando trayectorias compuestas por robtarget independientes (por ejemplo, pAproximacion, pPick, pSalida), comete un error: si el proceso exige ajustar la posición física del punto de cogida (pPick), el programador se ve obligado a reenseñar manualmente cada uno de los puntos auxiliares.
El uso de las funciones integradas Offs (Offset) y RelTool (Relative Tool) resuelve este problema. Al parametrizar las aproximaciones y salidas respecto a un único punto de referencia, se garantiza que cualquier retoma o corrección sobre el pPick arrastre automáticamente toda la secuencia de movimientos, manteniendo intactas las trayectorias vectoriales de la pinza.
Sin embargo, aunque ambas funciones calculan y devuelven una estructura de datos robtarget desplazada en el espacio, su marco de referencia es muy distinto. Entender cuándo utilizar cada una es imprescindible para evitar colisiones dinámicas con los utillajes.
1. Función Offs: Desplazamiento Referenciado al Sistema de Objeto (WObj / Mundo)
La función Offs calcula un nuevo punto aplicando un vector de desplazamiento (X, Y, Z) expresado en los ejes del Work Object (wobjdata) activo o, en su defecto, del sistema Mundo (wobj0).
Características clave:
- Dependencia espacial: El desplazamiento es completamente independiente de la orientación de la pinza o muñeca del robot.
- Constancia vectorial: Si aplicas un desplazamiento positivo en el eje Z de
Offs, el TCP se moverá verticalmente hacia arriba respecto a la mesa o bancada, sin importar hacia dónde apunte la herramienta. - Caso de uso óptimo: Aproximaciones rectilíneas desde cotas superiores, desplazamientos en matrices planas, paletizado convencional y retiros en ejes absolutos de celda.
- Fragmento de código:
! Sintaxis general: Offs(Point, XOffset, YOffset, ZOffset)
! Retorna: robtarget
pAproximacion := Offs(pPick, 0, 0, 100);
2. Función RelTool: Desplazamiento Referenciado a la Herramienta (TCP)
La función RelTool añade una traslación (Dx, Dy, Dz) y opcionalmente una rotación (\Rx \Ry \Rz) expresadas estrictamente en el sistema de coordenadas de la herramienta activa (tooldata).
Características clave:
- Dependencia de la herramienta: Los ejes de movimiento están ligados solidariamente al Tool Center Point (TCP). Si la pinza gira o se orienta a 45º, el eje Z de
RelToolgirará exactamente esos mismos 45º en el espacio. - Flexibilidad de orientación: Permite aplicar giros o correcciones angulares directamente sobre los tres ejes de la pinza en una sola instrucción
(\Rx \Ry \Rz). - Caso de uso óptimo: Inserciones en ángulo, retiros tras la cogida siguiendo la línea del eje de la pinza (bin picking), enchufe de conectores y aproximaciones frontales donde el útil entra inclinado respecto a la pieza.
- Fragmento de código:
! Sintaxis general: RelTool(Point, Dx, Dy, Dz [\Rx] [\Ry] [\Rz])
! Retorna: robtarget
pSalida := RelTool(pPick, 0, 0, -150 \Rz:=0);
3. Comparativa Técnica y Referencias
Para visualizar rápidamente el comportamiento de ambas funciones antes de ejecutar la trayectoria en RobotStudio, analiza la siguiente tabla:
| Característica | Función Offs |
Función RelTool |
| Marco de Referencia | Work Object (wobjdata) o Mundo | Herramienta activa (tooldata / TCP) |
| Comportamiento tras Giro del TCP | Mantiene la dirección vectorial paralela al sistema WObj | Los ejes rotan conjuntamente con la muñeca del robot |
| Capacidad de Rotación | No permite modificar la orientación del robtarget | Permite giros vectoriales mediante los argumentos opcionales \Rx, \Ry, \Rz |
| Aplicación Recomendada | Bajadas verticales libres de obstáculo y movimientos en rejilla | Extracción limpia de piezas inclinadas o inserciones en eje pinza |
4. Caso Práctico RAPID: Ciclo Profesional de Bin Picking de Piñones
Imaginemos una estación de ensamblaje de automoción donde una pinza neumática debe tomar un piñón alojado en un bancal con un ángulo de entrada inclinado.
Queremos asegurar dos condicionantes cinemáticos:
- La aproximación debe realizarse respetando exactamente el ángulo del eje de la pinza, para evitar colisiones entre la pinza y la siguiente pieza (
RelToolreferenciado a la pinza). - La retirada tras cerrar la pinza debe ejecutarse subiendo de forma perfectamente vertical, es la única forma que existe de extraer la pieza se su soporte (
Offsreferenciado al WObj del bancal).
Fragmento de código:
- Declaración de sistemas de coordenadas y posiciones
MODULE OneDoor_BinPicking
! Declaraciones de sistemas de coordenada
PERS wobjdata wTable := [FALSE,TRUE,"",[[504,562,405],[0,0.707107,0.707107,0]],[[0,0,0],[1,0,0,0]]];
PERS tooldata tGripper := [TRUE,[[0,-46,148.5],[1,0,0,0]],[1,[0,0,100],[1,0,0,0],0,0,0]];
! Declaración de datos de posición de cogida
VAR robtarget pAproximacion := [[-362.0, 60.0,-300],[0.690345527,-0.153045919,0.153045919,-0.690345527],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR robtarget pPick := [[48.0, 60.0,-66.0],[0.690345547,-0.153045901,0.15304591,-0.690345513],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR robtarget pSalida := [[-362.0, 60.0,-300],[0.690345527,-0.153045919,0.153045919,-0.690345527],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
- Inicios de trayectoria y comprobaciones
PROC Main()
! Inicio desde posición de reposo/Home
MoveJ pHome, v1000, fine, tGripper;
! -------------------------------------------------------------
! 1. Verificación de pinza Abierta
! Accionamos la apertura en caso de que estuviese cerrada
! -------------------------------------------------------------
GRIPPER1 \Open;
! Esperamos al estado de pinza Abierta
WaitDI DI_Gripper1_Abierta,1;
! -------------------------------------------------------------
! 2. APROXIMACIÓN Al lugar de cogida de pieza
! El robot se posiciona en lugar seguro a la cogida
! -------------------------------------------------------------
MoveJ pAproximacion,v1000,fine,tGripper \WObj:=wTable;
! -------------------------------------------------------------
! 3. ESPERA AUTORIZACIÓN para entrar
! El robot se detiene hasta recibir autorización a coger pieza
! -------------------------------------------------------------
WaitDI DI_pPick_AutEntrar,1;
- Aproximación al punto de cogida mediante
RelTooly cierre de pinza

! -------------------------------------------------------------
! 4. APROXIMACIÓN Cogida en ángulo (Uso de RelTool)
! Descendemos a posición de -100mm antes de llegar a la piza ( tGripper )
! -------------------------------------------------------------
MoveL RelTool(pPick, 0, 0, -100), v1000, z50, tGripper \WObj:=wTable;
MoveL RelTool(pPick, 0, 0, -30), v100, z10, tGripper \WObj:=wTable;
! -------------------------------------------------------------
! 5. PUNTO EXACTO DE COGIDA
! Llegada al punto base guardado
! -------------------------------------------------------------
MoveL pPick, v30, fine, tGripper \WObj:=wTable;
WaitRob \InPos;
! Acción de agarre
GRIPPER1 \Close;
! Espera al estado de pinza Cerrada
WaitDI DI_Gripper1_Cerrada,1;
! Envío Fin de recoger Pieza
SetDO DO_pPick_FinCoger,1;
- Espera a tener autorización y retirada mediante
Offs

! -------------------------------------------------------------
! 6. ESPERA AUTORIZACIÓN para salir
! El robot se detiene hasta recibir autorización a salir con pieza
! -------------------------------------------------------------
WaitDI DI_pPick_AutSalir,1;
! -------------------------------------------------------------
! 7. RETIRADA con WorkObject (Vertical)
! Retrocedemos 150mm a lo largo del eje Z propio del Wobj.
! Esto garantiza la salida recta sin golpear el utillaje inclinado.
! -------------------------------------------------------------
MoveL Offs(pPick, 0, 0, -30), v50, z10, tGripper \WObj:=wTable;
MoveL Offs(pPick, 0, 0, -150), v100, z100, tGripper \WObj:=wTable;
! -------------------------------------------------------------
! 8. RETIRADA del lugar de cogida de pieza
! El robot se posiciona en lugar seguro a la retirada
! -------------------------------------------------------------
MoveJ pSalida,v1000,fine,tGripper \WObj:=wTable;
! Retorno a posición de reposo/Home
MoveJ pHome, v1000, fine, tGripper;
ENDPROC
ENDMODULE
Análisis del código
El programa está estructurado para que el ciclo de pick and place sea robusto, limpio y fácil de mantener en planta. Su lógica se divide en los siguientes puntos clave:
- Estructura de puntos mínimos: La rutina minimiza la dependencia de coordenadas fijas innecesarias. En lugar de enseñar múltiples puntos estáticos, el ciclo se apoya en una única referencia geométrica base (
pos_pPick) de la cual derivan los movimientos auxiliares. - Puntos de control clave:
- Aproximación (
Offs): Utiliza un offset vertical puro (0, 0, 100) respecto al WorkObject (wTable) para asegurar que el robot desciende desde el aire de forma vertical y limpia, evitando colisiones laterales con los pilares del utillaje. - Cogida (
pPick): Punto exacto y preciso donde la pinza cierra sobre la pieza. - Retirada (
RelTool): Utiliza un offset en el eje Z negativo de la propia pinza (0, 0, -150) para garantizar que el retroceso se ejecuta exactamente a lo largo del ángulo de entrada de la herramienta.
- Aproximación (
- Mantenimiento simplificado: Si por desgaste mecánico o reposicionamiento de la pieza en el bancal es necesario retocar el punto de cogida final (
pPick), toda la trayectoria de aproximación y salida se reajusta de forma automática. Aquí es donde radica la "magia" combinada deOffsyRelTool: evitas tener que reenseñar toda la secuencia punto por punto.
¿Dudas sobre la aplicación en tus celdas robotizadas?
El uso de Offs y RelTool marca la diferencia entre un código de robot rígido y una instalación industrial dinámica y fácil de mantener.
- ¿Utilizas RelTool con rotaciones complejas
(\Rx,\Ry,\Rz)en tus aplicaciones de aproximación y retirada? - ¿Has tenido alguna colisión por confundir las direcciones del sistema de coordenadas Wobj con el del TCP?
¡Te leemos en los comentarios!
👉 ¿Quieres dominar la programación en RAPID desde cero?
Accede ahora a nuestro Curso Gratuito de Programación RAPID para Robots ABB en OneDoor y aprende a estructurar trayectorias de alto nivel con ejemplos reales.
¡Suscríbete a nuestra newsletter en OneDoor! y visita nuestro blog para acceder a guías técnicas y micro-cursos gratuitos.