ELAI S.r.l.

Cajas distintas en un palé: ¿podrá el robot seguir el ritmo?

Un cálculo reproducible muestra cómo mezcla, agarres y cambios afectan a la capacidad: el equilibrio económico no basta para elegir robot.

Cajas distintas en un palé: ¿podrá el robot seguir el ritmo?

Cajas distintas, una promesa que comprobar

Un responsable de producción necesita enviar cajas distintas en un mismo palé. Un vídeo muestra un robot muy rápido, pero la pregunta útil es otra: ¿terminará nuestro trabajo dentro del turno, contando agarres, esperas y cambios? Este artículo enseña a comprobar esa promesa antes de comparar presupuestos. Obtendremos un umbral comprensible: cuánto puede durar un ciclo medio sin incumplir la producción necesaria.

Usamos una fábrica totalmente imaginaria, tres tipos de caja y cálculos ejecutados con Python. No hemos probado robots, pinzas ni sistemas de visión. Tiempos, disponibilidad y costes son supuestos didácticos, no mediciones ni precios. Un proyecto puede parecer económico y perder capacidad con solo un segundo más por ciclo. Es una consecuencia del modelo declarado, no un rendimiento industrial observado.

Qué debe representar un ciclo

Paletizar es disponer bultos sobre una plataforma para moverlos. La pinza sujeta el bulto; la receta define una configuración de trabajo. Para comparar propuestas fijamos el mismo límite: el ciclo comienza cuando la máquina está lista para recoger y termina cuando vuelve a estar lista para el siguiente bulto. Comparar solo el viaje de ida con un ciclo completo favorece artificialmente la primera propuesta.

Nuestro ciclo incluye agarre, traslado, depósito y retorno. Las esperas recurrentes deben incluirse aquí o descontarse del tiempo disponible, nunca en ambos. Los cambios de formato se contabilizan aparte. No diseñamos trayectorias: construimos un presupuesto de tiempo que podrá alimentarse con mediciones reales. La coherencia no convierte un supuesto incorrecto en realista; revela qué supuesto hay que medir.

Antes de contar segundos hay una condición lógica: cada caja prevista debe poder manipularse con la configuración propuesta. Masa, dimensiones, superficie y posición afectan al agarre. La sección Maximum Payload de Universal Robots consultada distingue masa de herramienta y pieza, centro de gravedad e inercia: los kilogramos no describen por sí solos la aplicación. No trasladamos sus límites a un robot imaginario.

Por qué la media debe seguir a las cajas

Supongamos que de cada diez cajas cinco son A, tres B y dos C. Los ciclos completos supuestos duran 6, 10 y 14 segundos. La media aritmética de los tres números es 10 segundos, pero responde a otro pedido: cantidades iguales de cada tipo. Para el nuestro sumamos el tiempo de las diez cajas: 30 más 30 más 28, igual a 88 segundos. Dividir entre diez da 8,8 segundos por caja.

La fórmula responde exactamente a cuánto tarda una caja media de este pedido. pᵢ es la fracción de cajas del tipo i, sin unidad, y tᵢ su tiempo completo en segundos por caja. Las fracciones deben sumar uno. No son probabilidades estimadas experimentalmente: aquí el autor fija la composición para hacer verificable el cálculo.

t_mean = sum_i(p_i * t_i) = 0.5*6 + 0.3*10 + 0.2*14 = 8.8 s/box

Cada tiempo pesa según cuántas veces se necesita. Para 2400 cajas, la mezcla exacta es 1200 A, 720 B y 480 C: requiere 21120 segundos. El orden no afecta al cálculo solo porque suponemos tiempos independientes de la secuencia. Si pasar de A a C exige cambiar herramienta o receta, ese coste de transición debe entrar en el modelo: la media no basta.

Ocho horas de turno no son ocho horas productivas

Fijamos H en 28800 segundos, ocho horas. Suponemos que a=0,85 está disponible antes de los cambios de formato y restamos aparte S=1200 segundos por dichos cambios. El tiempo productivo T es 23280 segundos, seis horas y veintiocho minutos. El 85% no se ha observado: debe sustituirse por datos de planta. Definirlo antes de los cambios evita descontar dos veces la misma parada.

T = H*a - S = 28800*0.85 - 1200 = 23280 s Q_continuous = T / t_mean = 23280 / 8.8 = 2645.45 boxes

Dividir tiempo disponible entre tiempo medio da una capacidad continua equivalente de unas 2645,45 cajas. No se envían fracciones de caja: no es un recuento simulado de ciclos terminados. El entero depende de la secuencia final y de las restricciones del palé. Para comprobar 2400 cajas no hace falta redondear: comparamos sus 21120 segundos con los 23280 disponibles, dejando 2160 segundos de margen en el modelo.

Es un balance necesario, no suficiente. Si todas las cajas llegan en los últimos veinte minutos, la misma cantidad diaria no puede procesarse igual. Puede haber capacidad total y aun así perder una ventana de envío. Suponemos suministro regular y ausencia de plazos intermedios. Un pedido real requiere horas de llegada y límites de entrega: una simulación temporal o un plan verificado, no otro redondeo.

El segundo que cambia la decisión

Supongamos ahora que confirmar el agarre y liberar requiere un segundo adicional por caja, aparte de lo ya incluido. No afirmamos que ocurra en una pinza concreta. Es un análisis de sensibilidad: cambiamos un supuesto y mantenemos los demás para ver la fragilidad de la conclusión. El ciclo medio sube de 8,8 a 9,8 segundos y el trabajo a 23520 segundos: faltan 240 para terminar dentro del turno.

En lugar de discutir si un segundo parece mucho o poco, derivamos el umbral desde la demanda. N es el número requerido de cajas, 2400. Si N por el ciclo medio no debe superar T, dividir entre N positivo da el ciclo máximo compatible: 9,7 segundos por caja. El ciclo inicial solo tiene 0,9 segundos de margen. Esa cifra debe discutirse con el proveedor, junto con las condiciones en que debería cumplirse.

N*t_mean <= T t_max = T/N = 23280/2400 = 9.7 s/box margin_per_box = 9.7 - 8.8 = 0.9 s/box
Segundos extra/cicloCiclo medio (s)Capacidad continua (cajas)Compatible (1/0)
08.82645.451
19.82375.510
210.82155.560
Cálculo didáctico: capacidad continua equivalente según segundos añadidos a cada ciclo; línea en 2400 cajas necesarias por turno. Sin mediciones de hardware.
Cálculo didáctico: capacidad continua equivalente según segundos añadidos a cada ciclo; línea en 2400 cajas necesarias por turno. Sin mediciones de hardware.

En la figura la demanda permanece en 2400 cajas; las barras muestran capacidades continuas equivalentes, no observaciones de una máquina. La primera supera la línea y las otras dos no. Lo decisivo es comparar con la demanda, no la altura vistosa de una barra. En la tabla, 1 significa compatible solo con el balance de tiempo y 0 incompatible. Ninguno certifica manipulación física ni seguridad.

La media cambia cuando cambia el pedido

La mezcla 50/30/20 pertenece al trabajo, no al robot. Si todas las cajas fueran C, el ciclo supuesto sería 14 segundos y la capacidad continua bajaría a unas 1662,86 cajas con el mismo tiempo productivo. No hace falta inventar una avería: basta otro pedido. Probar solo el formato fácil no valida una promesa sobre cajas mixtas. Importa cubrir las combinaciones necesarias.

Un modelo más completo suma los ciclos de cada caja y las transiciones entre tipos consecutivos. Si el cambio depende de la dirección, A→B y B→A son distintos. Agrupar formatos puede reducir cambios, pero incumplir el orden de envío o el diseño del palé. Se convierte en planificación con restricciones. No hemos resuelto esa planificación ni atribuimos al programa un optimizador inexistente.

Cuando las cuentas dicen sí y el turno dice no

Solo después de la capacidad introducimos una comparación económica didáctica. Suponemos F=4500 euros mensuales fijos para la solución robotizada, v=0,03 euros variables por caja y m=0,18 euros de coste manual evitable por caja. Todo es inventado; F no es el precio de un brazo y m no equivale automáticamente a salarios ahorrados. El límite debe incluir lo que realmente cambia entre alternativas comparables.

La fórmula pregunta a qué volumen mensual coinciden ambas cuentas con estos costes. Para n cajas, el coste robotizado es F+vn y el manual mn. Al igualarlos y despejar n obtenemos F/(m−v), siempre que m sea mayor que v. Aquí el equilibrio es 30000 cajas al mes. Si m no superara v y F fuera positivo, aumentar volumen no recuperaría el coste fijo en este modelo. La condición matemática evita una falsa promesa de escala.

C_robot(n) = F + v*n ; C_manual(n) = m*n n_break_even = F/(m-v) = 4500/(0.18-0.03) = 30000 boxes/month n_month = 2400*22 = 52800 boxes/month C_robot(52800) = 6084 EUR/month ; C_manual(52800) = 9504 EUR/month

Con veintidós turnos idénticos supuestos, la demanda es 52800 cajas y los costes 6084 frente a 9504 euros mensuales. La diferencia aritmética de 3420 euros no es un ahorro demostrado. Con el segundo adicional, la demanda sigue por encima del equilibrio, pero cada turno carece de capacidad. Aplicar igualmente ese coste unitario a todas las cajas compra una capacidad que el modelo no ofrece. Haría falta reorganizar, añadir tiempo o cambiar el diseño y recalcular costes.

Un presupuesto real debe separar compra y financiación, integración, herramientas, mantenimiento, energía, soporte y trabajo restante. No se suma la compra completa a su amortización del mismo periodo. El personal puede reasignarse: cambia el valor del trabajo, no necesariamente el desembolso. No tenemos datos para cuantificarlo. Los daños o rehacer un palé consumen tiempo y dinero; excluirlos de ambas columnas declara un límite, no demuestra que sean despreciables.

Comparar alternativas que resuelvan el mismo problema

Una alternativa sin IA puede presentar las cajas en posiciones fijas, identificarlas mediante códigos y usar recetas deterministas. Otra puede mejorar el embalaje o la distribución del puesto manual. La visión con IA es una hipótesis interesante si queda variabilidad que esas soluciones no gestionan adecuadamente; debe evaluarse por el resultado final, no solo por reconocer imágenes. El balance no demuestra que la IA sea necesaria: fija cuánto tiempo puede consumir cualquier solución.

Un robot mayor tampoco es una respuesta automática. Otra herramienta cambia espacios y tiempos; otro diseño puede acortar un traslado y complicar la alimentación. La guía Robotiq consultada incluye el espacio de apertura de las mordazas y los tiempos reales de agarre y liberación en la evaluación del ciclo. No adoptamos sus ajustes como instrucciones universales: la comparación debe referirse a la configuración ofrecida y a la verificación del integrador.

Qué debe establecer una prueba real

Para pasar del cálculo a la decisión proponemos, sin haberlo ejecutado, registrar tipo de caja, inicio y fin, posición en el palé, resultado y motivo de intervención. Separar paradas, cambios y esperas con definiciones sin solapamientos. Recoger un pedido representativo completo, incluidas condiciones desfavorables acordadas. Medir solo diez ciclos exitosos y descartar el resto no permite estimar el trabajo necesario.

La media sirve para la carga total; los ciclos largos y el orden de los eventos, para los plazos. Informar de ambos revela si hay poco margen o dependencia de una distribución favorable. No generamos intervalos de confianza porque no hay muestras aleatorias medidas. Varios turnos reales exigirían analizar variación de mezcla y dependencia entre eventos. Inventar un intervalo estadístico sobre cifras elegidas por el autor añadiría precisión aparente, no evidencia.

Respuesta final y código reproducible

Para el pedido imaginario la respuesta es precisa y limitada: el balance admite 2400 cajas solo si el ciclo medio no supera 9,7 segundos en las condiciones fijadas. El supuesto de 8,8 pasa; el de 9,8 falla aunque el equilibrio económico parezca favorable. Permite pedir una verificación concreta antes de invertir, no aprobar una instalación. Agarre, estabilidad del palé, dinámica, colisiones, protecciones y conformidad quedan fuera y requieren verificaciones propias.

EL-AI considera la robótica una dirección por explorar: este artículo no documenta productos, pruebas ni instalaciones de la empresa. El código reproduce solo aritmética didáctica. Decimal conserva las entradas decimales; las aserciones comprueban media, tiempo útil, umbral y cambio de resultado. La complejidad es lineal en tipos para la media y en escenarios para la sensibilidad; no incluye búsqueda de trayectorias. Los resultados distinguen explícitamente supuestos y mediciones ausentes.

Universal Robots — Maximum Payload, SW10.8, full section; accessed 30 October 2026.

Robotiq — Using a Mechanical Gripper on the Robotiq Palletizing Workcell; sections 1–7, accessed 30 October 2026.

"""Invented workload arithmetic, not robot dynamics or hardware measurements."""
import json,sys
from decimal import Decimal as D
from pathlib import Path
# Each cycle includes assumed grip, travel, release and return, in seconds.
cycles={"A":D("6"),"B":D("10"),"C":D("14")}
weights={"A":D("0.5"),"B":D("0.3"),"C":D("0.2")}
assert sum(weights.values())==1
mean=sum(weights[k]*cycles[k] for k in cycles)
horizon=D("28800") # 8 hours
availability=D("0.85") # assumed fraction of planned time available for work
changeovers=D("1200") # excluded from available work time, once
productive=horizon*availability-changeovers
assert productive>0
capacity=productive/mean
required=D("2400")
max_cycle=productive/required
# Consequence of an extra second of grip/release on EVERY box.
sensitivity=[dict(extraSeconds=str(e),meanCycleSeconds=str(mean+e),capacityBoxes=str(productive/(mean+e)),meetsDailyDemand=productive/(mean+e)>=required) for e in [D(0),D(1),D(2)]]
assert mean==D("8.8") and productive==D("23280") and max_cycle==D("9.7")
assert sensitivity[0]['meetsDailyDemand'] and not sensitivity[1]['meetsDailyDemand']
# Monthly comparison on the SAME demand. Prices invented, not a vendor quote.
fixed=D("4500"); manual=D("0.18");variable=D("0.03")
threshold=fixed/(manual-variable)
monthlyDemand=required*D(22)
assert threshold==30000 and monthlyDemand==52800
assert required*mean==21120 and productive-required*mean==2160
assert required*(mean+1)-productive==240
assert (manual*monthlyDemand)-(fixed+variable*monthlyDemand)==3420
allC=productive/D('14')
result=dict(allCContinuousCapacity=str(allC),python=sys.version.split()[0],scope="Synthetic deterministic arithmetic only; no robot, gripper, simulation of trajectories, safety validation, human timing, measured uptime, vendor quote or measured saving",cycleSeconds={k:str(v) for k,v in cycles.items()},mix={k:str(v) for k,v in weights.items()},meanCycleSeconds=str(mean),shiftSeconds=str(horizon),availabilityAssumed=str(availability),changeoverSeconds=str(changeovers),productiveSeconds=str(productive),requiredDailyBoxes=str(required),maxMeanCycleSeconds=str(max_cycle),sensitivity=sensitivity,economics=dict(fixedEuroPerMonth=str(fixed),manualEuroPerBox=str(manual),robotVariableEuroPerBox=str(variable),continuousBreakEvenBoxesPerMonth=str(threshold),demandBoxesPerMonth=str(monthlyDemand),robotEuroPerMonth=str(fixed+variable*monthlyDemand),manualEuroPerMonth=str(manual*monthlyDemand),warning="Economic threshold is not sufficient: extra one-second cycle violates daily capacity. Manual unit cost must mean actually avoidable cost, not wage automatically saved. Static screening is separate and does not establish any feasible robot."))
Path(__file__).with_name("results.json").write_text(json.dumps(result,indent=2),encoding="utf8")
print(json.dumps(result))

Código, datos e instrucciones · JSON. Cálculos didácticos ejecutados con Python 3.14.0; figuras con Matplotlib 3.11.2. Análisis asistido por IA, sin afirmar revisión por pares ni humana. Portada original ImageGen ilustrativa: no documenta personas, sedes ni instalaciones de EL-AI. Fuentes consultadas el 30 de octubre de 2026.