Programación de robots industriales KUKA en Grasshopper mediante los plugins KukaPRC y Robots: toolpaths, fabricación digital y generación de código KRL. Use when "KukaPRC", "Robots plugin", "robot KUKA", "fabricación digital", "toolpath robot", "KRL", "Grasshopper robot", "robot Grasshopper", "fabricación robótica", "KUKA Grasshopper", "programar KUKA", "robot ABB", "robot UR Grasshopper".
Rick usa este skill para asistir con programación de robots industriales desde Grasshopper usando KukaPRC y el plugin Robots: generación de toolpaths, simulación y exportación a KRL/URScript.
| Plugin | Robots soportados | Output | Fuente |
|---|---|---|---|
| KukaPRC | KUKA | KRL (.src) | Food4Rhino |
| Robots | KUKA, ABB, UR, Fanuc, Staubli | KRL, RAPID, URScript | GitHub (github.com/visose/Robots) |
| HAL | Multi-marca | Múltiples | Food4Rhino (comercial) |
| Categoría | Componentes clave |
|---|
| Robot | KUKA Robot (definición del robot) |
| Toolpath | Target, Joint Target, Speed, Zone |
| Tool | PRC Tool, Change Tool |
| Utilities | Safe Plane, Reduce Toolpath, Tangential Offset |
| I/O | Digital Output, Wait For Digital Input |
| Export | SRC Export (genera código KRL) |
[Curva o superficie] → [Dividir/puntos] → [Target] → [Tool] → [Speed/Zone] → [Robot] → [SRC Export]
KUKA Robot// Estructura de un Target en KukaPRC:
Target:
- Plane: plano de orientación del TCP (Point3d + Normal)
- Speed: velocidad (mm/s) via componente Speed
- Zone: precisión de aproximación (mm) via componente Zone
- Tool: herramienta activa
- External axes (si aplica)
Tipos de target:
| Parámetro | Descripción | Valores típicos |
|---|---|---|
| Speed | Velocidad TCP (mm/s) o porcentaje | 10–2000 mm/s |
| Zone | Radio de aproximación | Z0 (exacto), Z1, Z5, Z10, CONT |
| Motion type | LIN (lineal) o PTP (joint-to-joint) | LIN para trayectorias, PTP para reposición |
// Workflow GH (pseudocódigo de nodos):
1. Surface (Srf) → Divide Surface (U=20, V=1) → Points
2. Points → Sort Points (por X o según dirección de trabajo)
3. Sort Points → Evaluate Surface → Normals
4. Normals + Points → Construct Plane (PlaneNormal)
5. Planes → KukaPRC Target (Speed=200, Zone=Z1)
6. Targets (lista) → KukaPRC Toolpath
7. Toolpath → KukaPRC Robot (con herramienta y base)
8. Robot → SRC Export → archivo .src (KRL)
El componente SRC Export genera:
program.src — programa principalprogram.dat — archivo de datos (tools, speeds)Subir a KUKA KR C4 via WorkVisual, USB o red.
El plugin Robots (github.com/visose/Robots) soporta KUKA, ABB, UR, Fanuc y más.
Rhino PackageManager → buscar "Robots" → Instalar
| Concepto | Descripción |
|---|---|
| Robot System | Define robot + tool + base |
| Target | Posición + orientación + velocidad + zona |
| Motion | JointMotion (PTP) o CartesianMotion (LIN/CIRC) |
| Program | Secuencia de targets → simula y exporta |
| Tool | TCP con frame, peso, centro de masa |
# En Python Node de GH con Robots plugin
import Robots
# Definir herramienta por TCP
tcp_plane = x # Input: Plane del TCP
tool_weight = 2.5 # kg
mesh = y # Input: Mesh de la herramienta (visualización)
tool = Robots.Tool("Extrusora", tcp_plane, tool_weight, mesh=mesh)
a = tool
import Robots
from Robots import Target, JointMotion, CartesianMotion, Speed, Zone, Frame
# Speed y Zone
spd = Speed(translation=200, rotation=1.0) # mm/s, rad/s
zn = Zone(0.5) # radio en mm
# Target cartesiano
target = Target(
plane=planes[i], # Rhino.Geometry.Plane
speed=spd,
zone=zn,
motion=CartesianMotion(),
tool=tool,
frame=Frame.Default
)
targets.append(target)
# Crear programa
robot = robot_system # Input: RobotSystem de GH
program = Robots.Program("Fabricacion", robot, [targets])
# Verificar errores
errors = program.Errors
warnings = program.Warnings
# Simular (obtener posición en tiempo t)
position, _ = program.Animate(t=0.5, calculateMeshes=True)
# Exportar código
code = program.Code # Lista de strings por archivo
a = program
b = errors
c = code
Curva de extrusión → Dividir cada Xmm → Planos perpendiculares a tangente
→ Agregar offset Z por capa → Target list → Toolpath con speed baja
Superficie → Generar iso-curvas de mecanizado → Puntos equidistantes
→ Normales de superficie → Planos TCP (Normal = eje herramienta)
→ Ajustar orientación herramienta → Target list
Mandrel (geometría) → Geodésicas o curvas personalizadas
→ Puntos sobre curvas → Planos tangentes
→ Calcular tensión de fibra → Targets
&ACCESS RVO
&REL 1
&PARAM EDITMASK = *
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
DEF program()
; Inicialización
BAS(#INITMOV,0)
; Movimiento PTP a posición home
PTP HOME Vel=100% DEFAULT
; Movimiento lineal (LIN)
LIN {X 500.00, Y 0.00, Z 300.00, A 0.00, B -90.00, C 0.00} Vel=200mm/s CPDAT1 Tool[1] Base[0]
; Digital output
$OUT[1] = TRUE
WAIT SEC 0.5
; Retorno a home
PTP HOME Vel=100% DEFAULT
END
| Singularidad | Causa | Solución |
|---|---|---|
| Wrist singularity | Eje 4 y 6 alineados | Usar Joint Target en zona conflictiva |
| Shoulder singularity | Robot estirado | Reposicionar base o cambiar configuración |
| Elbow singularity | Brazo completamente extendido | Acortar alcance |
Safe Plane (KukaPRC) para definir planes de aproximación seguros antes de cada target.Robots.Tool con TCP plane + peso.program.Code de Robots plugin.program.Duration en Robots plugin.