Robot Workbench/es



El entorno de simulación de robots es una herramienta para simular un Robot industrial de 6 ejes, como Kuka. Puedes hacer las siguientes tareas:
 * Configurar un entorno de simulación con un robot y piezas de trabajo
 * Crea y cubrir trayectorias
 * Descomponer características de una pieza de CAD en una trayectoria
 * Simular el movimiento y la accesibilidad del robot
 * Exportar la trayectoria a un archivo del programa del robot

Unos ejemplos que puedes encontrar aquí: Archivos de ejemplo o prueba el Tutorial de simulación de Robots.

Herramientas
Aquí están los principales comandos que puedes utilizar para crear la configuración de un robot.

Robots
Las herramientas para crear y manejar los robots de 6 ejes


 * [[Image:Robot_CreateRobot.png|30px]] Crea un robot: Inserta un nuevo robot en la escena
 * [[Image:Robot_Simulate.png|30px]] Simula una trayectoria: Abre el letrero de diálogo de simulación y te permite simular
 * [[Image:Robot_Export.png|30px]] Exportar una trayectoria: Exporta un archivo al programa del robot
 * [[Image:Robot_SetHomePos.png|30px]] Establece la posición de inicio: Establece la posición de inicio para un robot
 * [[Image:Robot_RestoreHomePos.png|30px]] Restablece la posición de inicio: Mueve el robot a su posición de inicio

Trayectorias
Herramientas para crear y manipular trayectorias. Existen dos tipos, las paramétricas y las no paramétricas.

no paramétricas

 * [[Image:Robot_CreateTrajectory.png|30px]] Crea una trayectoria: Inserta un nuevo robot en la escena
 * [[Image:Robot_SetDefaultOrientation.png|30px]] Establece la orientación por defecto: Establece la orientación en los puntos de paso creados por defecto
 * [[Image:Robot_SetDefaultValues.png|30px]] Establece los parámetros de velocidad por defecto: Establece los valores por defecto para la creación de los puntos de paso
 * [[Image:Robot_InsertWaypoint.png|30px]] Inserta un punto de paso: Inserta un punto de paso desde la posición actual del robot en una trayectoria
 * [[Image:Robot_InsertWaypointPre.png|30px]] Inserta un punto de paso: Inserta un punto de paso desde las posición actual del ratón en una trayectoria

paramétrica

 * [[Image:Robot_Edge2Trac.png|30px]] Crea una trayectoria de aristas: Inserta un nuevo objeto que descompone las aristas de una trayectoria
 * [[Image:Robot_TrajectoryDressUp.png|30px]] Disfrazar una trayectoria: Permite sobrescribir una o más propiedades de una trayectoria
 * [[Image:Robot_TrajectoryCompound.png|30px]] Trayectoria compuesta: create a compound out of some single trajectories

Archivos de guión
Esta sección se genera en: http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Robot/RobotExample.py?view=markup Puedes utilizar este archivo directamente si quieres.

Ejemplo de cómo utilizar la clase Robot6Axis básica que representa a un robot industrial de 6 ejes. El módulo de Robot es dependiente del de Piezas pero no de otros módulos. Trabaja principalmente con los tipos básicos de Ubicación, Vector y Matriz. Así que necesitamos sólo: from Robot import * from Part import * from FreeCAD import *

Cosas básicas del robot
Crear el robot. Si no se especifica otra cinemática será la de un Puma 560 rob = Robot6Axis print rob accediendo a los ejes y TCP. Los ejes van de 1 a 6 y están en grados decimales: Start = rob.Tcp print Start print rob.Axis1 mueve el primer eje del robot: rob.Axis1 = 5.0 the Tcp has changed (forward kinematic) print rob.Tcp mueve el robot de vuelta a la posición de inicio (cinemática inversa): rob.Tcp = Start print rob.Axis1 lo mismo con el eje 2: rob.Axis2 = 5.0 print rob.Tcp rob.Tcp = Start print rob.Axis2 Puntos de paso: w = Waypoint(Placement,name="Pt",type="LIN") print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool Genera más. La trayectoria siempre encuentra automáticamente un nombre único para los puntos de paso l = [w] for i in range(5): l.append(Waypoint(Placement(Vector(0,0,i*100),Vector(1,0,0),0),"LIN","Pt")) crea una trayectoria t = Trajectory(l) print t for i in range(7): t.insertWaypoints(Waypoint(Placement(Vector(0,0,i*100+500),Vector(1,0,0),0),"LIN","Pt")) mira una lista de todos los puntos de paso: print t.Waypoints del rob,Start,t,l,w

Trabajando con el documento
Trabajando con los objetos del documento del robot: Primero crea un robot en el documento activo if(App.activeDocument == None):App.newDocument App.activeDocument.addObject("Robot::RobotObject","Robot") Define la representación visual y la definición cinemática (mira Robot de 6 ejes y Preparación VRML para la simulación del robot para más detalles al respecto) App.activeDocument.Robot.RobotVrmlFile = App.getResourceDir+"Mod/Robot/Lib/Kuka/kr500_1.wrl" App.activeDocument.Robot.RobotKinematicFile = App.getResourceDir+"Mod/Robot/Lib/Kuka/kr500_1.csv" start positon of the Axis (only that which differ from 0) App.activeDocument.Robot.Axis2 = -90 App.activeDocument.Robot.Axis3 = 90 Recupera la posición de TCP pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp mueve el robot pos.move(App.Vector(-10,0,0)) FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos crea una objeto de trayectoria vacía en el documento activo App.activeDocument.addObject("Robot::TrajectoryObject","Trajectory") Obtiene la trayectoria t = App.activeDocument.Trajectory.Trajectory añade la posición TCP real del robot a la trayectoria StartTcp = App.activeDocument.Robot.Tcp t.insertWaypoints(StartTcp) App.activeDocument.Trajectory.Trajectory = t print App.activeDocument.Trajectory.Trajectory inserta algunos puntos de paso y los puntos de inicio y final de nuevo: for i in range(7): t.insertWaypoints(Waypoint(Placement(Vector(0,1000,i*100+500),Vector(1,0,0),i),"LIN","Pt")) t.insertWaypoints(StartTcp) # end point of the trajectory App.activeDocument.Trajectory.Trajectory = t print App.activeDocument.Trajectory.Trajectory

Simulación
Pendiente.....

Exportación de la trayectoria
La trayectoria se exporta en Python. Eso significa que para cada tipo de armario de control existe un módulo de Python de post-procesado. Aquí está en detalle el post-processor Kuka descrito from KukaExporter import ExportCompactSub ExportCompactSub(App.activeDocument.Robot,App.activeDocument.Trajectory,'D:/Temp/TestOut.src') y esos es cómo se crea: for w in App.activeDocument.Trajectory.Trajectory.Waypoints: (A,B,C) = (w.Pos.Rotation.toEuler) print ("LIN {X %.3f,Y %.3f,Z %.3f,A %.3f,B %.3f,C %.3f} ; %s"%(w.Pos.Base.x,w.Pos.Base.y,w.Pos.Base.z,A,B,C,w.Name))

Tutorials

 * 6-Axis_Robot
 * VRML Preparation for Robot Simulation