Robot Workbench/fr



L'atelier de simulation de robot permet de simuler les robots à 6 axes industriels, comme par exemple Kuka. Vous pouvez accomplir les tâches suivantes :
 * mettre en place un environnement de simulation avec un robot et des pièces de travail
 * créer et remplir des trajectoires
 * décomposer les fonctions d'une pièce CAO en une trajectoire
 * simuler le mouvement et l'accessibilité d'un robot
 * exporter la trajectoire vers un fichier programme de robot

Vous pouvez trouver des exemples ici : fichiers d'exemple ou essayez le tutoriel Robot.

Outils
Voici les principales commandes dont vous pouvez vous servir pour créer une configuration de robot.

Robots
Les outils pour créer et gérer les robots à 6 axes


 * [[Image:Robot_CreateRobot.png|30px]] Créer un robot: Insère un nouveau robot dans la scène
 * [[Image:Robot_Simulate.png|30px]] Simuler une trajectoire: Ouvre le dialogue de simulation afin de régler une simulation
 * [[Image:Robot_Export.png|30px]] Exporter une trajectoire: Exporte la trajectoire dans un fichier programme robot
 * [[Image:Robot_SetHomePos.png|30px]] Définir la positon de départ: Définit la position de départ d'un robot
 * [[Image:Robot_RestoreHomePos.png|30px]] Restaurer la positon de départ: Retourne le robot à sa positon de départ

Trajectories
Tools to creat and manipulate trajectories. There are two kinds, the parametric and non parametric ones.

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