Robot Workbench/it



Il modulo robot è uno strumento per simulare un Robot a 6 assi (6-Axis Robot) di tipo industriale, come per esempio i robot Kuka. È possibile eseguire le seguenti operazioni:
 * Impostare un ambiente di simulazione con un robot e dei pezzi in lavorazione
 * Creare e compilare traiettorie
 * Scomporre le componenti di una Parte CAD in una traiettoria
 * Simulare il movimento del robot e il raggio d'azione
 * Esportare la traiettoria in un file di programma robot

Alcuni esempi sono disponibili in Example files oppure nel tutorial Robot.

Strumenti
Ecco i principali comandi utilizzabili per creare il set-up di un robot.

Robot
Gli strumenti per creare e gestire i robot a 6 assi


 * [[Image:Robot_CreateRobot.png|30px]] Inserisci un robot: Inserisce un nuovo robot nella scena
 * [[Image:Robot_Simulate.png|30px]] Simula una traiettoria: Apre la finestra di simulazione e permette di simulare un percorso
 * [[Image:Robot_Export.png|30px]] Esporta una traiettoria: Esporta un file di programmazione robotica
 * [[Image:Robot_SetHomePos.png|30px]] Imposta la posizione iniziale: Imposta la posizione iniziale di un robot
 * [[Image:Robot_RestoreHomePos.png|30px]] Ripristina la posizione iniziale: Sposta il robot nella posizione di partenza

Traiettorie
Strumenti per creare e modificare i percorsi. Ci sono due tipi di strumenti, quelli parametrici e quelli non parametrici.

non parametric

 * [[Image:Robot_CreateTrajectory.png|30px]] Create a trajectory: Insert a new robot into the scene
 * [[Image:Robot_SetDefaultOrientation.png|30px]] Set the default orientation: Set the orientation way-points gets created by default
 * [[Image:Robot_SetDefaultValues.png|30px]] Set the default speed parameter: set the defaults for way-point creation
 * [[Image:Robot_InsertWaypoint.png|30px]] Insert a waypoint: Insert a way-point from the current robot position into a trajectory
 * [[Image:Robot_InsertWaypointPre.png|30px]] Insert a waypoint: Insert a way-point from the current mouse position into a trajectory

parametric

 * [[Image:Robot_Edge2Trac.png|30px]] Create a trajectory out of edges: Insert a new object which decompose edges to a trajectory
 * [[Image:Robot_TrajectoryDressUp.png|30px]] Dress-up a trajectory: Let you override one or more properties of a trajectory
 * [[Image:Robot_TrajectoryCompound.png|30px]] Trajectory compound: create a compound out of some single trajectories

Scripting
This section is generated out of: http://sourceforge.net/p/free-cad/code/ci/master/tree/src/Mod/Robot/RobotExample.py You can use this file directly if you want.

Example how to use the basic robot class Robot6Axis which represents a 6-axis industrial robot. The Robot module is dependent on Part but not on other modules. It works mostly with the basic types Placement, Vector and Matrix. So we need only: from Robot import * from Part import * from FreeCAD import *

Basic robot stuff
create the robot. If you do not specify another kinematic it becomes a Puma 560 rob = Robot6Axis print rob accessing the axis and the Tcp. Axes go from 1-6 and are in degree: Start = rob.Tcp print Start print rob.Axis1 move the first axis of the robot: rob.Axis1 = 5.0 the Tcp has changed (forward kinematic) print rob.Tcp move the robot back to start position (reverse kinematic): rob.Tcp = Start print rob.Axis1 the same with axis 2: rob.Axis2 = 5.0 print rob.Tcp rob.Tcp = Start print rob.Axis2 Waypoints: w = Waypoint(Placement,name="Pt",type="LIN") print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool generate more. The trajectory always finds automatically a unique name for the waypoints l = [w] for i in range(5): l.append(Waypoint(Placement(Vector(0,0,i*100),Vector(1,0,0),0),"LIN","Pt")) create a trajectory 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")) see a list of all waypoints: print t.Waypoints del rob,Start,t,l,w

working with the document
Working with the robot document objects: first create a robot in the active document if(App.activeDocument == None):App.newDocument App.activeDocument.addObject("Robot::RobotObject","Robot") Define the visual representation and the kinematic definition (see 6-Axis Robot and VRML Preparation for Robot Simulation for details about that) 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 retrieve the Tcp position pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp move the robot pos.move(App.Vector(-10,0,0)) FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos create an empty Trajectory object in the active document App.activeDocument.addObject("Robot::TrajectoryObject","Trajectory") get the Trajectory t = App.activeDocument.Trajectory.Trajectory add the actual TCP position of the robot to the trajectory StartTcp = App.activeDocument.Robot.Tcp t.insertWaypoints(StartTcp) App.activeDocument.Trajectory.Trajectory = t print App.activeDocument.Trajectory.Trajectory insert some more Waypoints and the start point at the end again: 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

Simulation
To be done..... ;-)

Exporting the trajectory
The trajectory is exported by Python. That means for every control cabinet type there is a post-processor Python module. Here is in detail the Kuka post-processor described from KukaExporter import ExportCompactSub ExportCompactSub(App.activeDocument.Robot,App.activeDocument.Trajectory,'D:/Temp/TestOut.src') and that's kind of how it's done: 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