Robot Workbench/sv

Robot arbetsbänken är ett verktyg för simulering av 6-axliga industrirobotar, som t.ex. Kuka.

Allmänt bruk


Denna arbetsbänk är ett pågående arbete för att implementera ett off-line programmeringsverktyg för 6-Axis Robot industrirobotar i FreeCAD.

Du kan hitta ett exempel här:

http://www.freecad-project.de/svn/ExampleData/Examples/RobotSimulation/

Skript
Detta avsnitt är genererat från: http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Robot/RobotExample.py?view=markup Du kan använda den filen direkt, om du vill.

Exempel på hur man använder klassen Robot6Axis, vilken representerar en 6-axlig industrirobot. Robot modulen beror på Delmodulen, men inte på andra modulen. Den arbetar mest med enkla typer som Placering, Vektor och Matris. Så vi behöver bara: from Robot import * from Part import * from FreeCAD import *

Grundläggande robotsaker
Skapa roboten. Om du inte specificerar någon annan kinematik så blir det en Puma 560 rob = Robot6Axis print rob komma åt axlarna och tcp (verktygets centrumpunkt). Axlarna är 1-6 och värdena uttrycks i grader: Start = rob.Tcp print Start print rob.Axis1 flytta robotens första axel: rob.Axis1 = 5.0 Tcp har ändrats (framåtgående kinematik) print rob.Tcp flytta tillbaka roboten till startpositionen (bakåtgående kinematik): rob.Tcp = Start print rob.Axis1 samma med axel 2: rob.Axis2 = 5.0 print rob.Tcp rob.Tcp = Start print rob.Axis2 Banpunkter: w = Waypoint(Placement,name="Pt",type="LIN") print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool generera mer. Banan hittar alltid automatiskt på ett unikt namn för banpunkterna l = [w] for i in range(5): l.append(Waypoint(Placement(Vector(0,0,i*100),Vector(1,0,0),0),"LIN","Pt")) Skapa en bana 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")) se en lista på alla banpunkter: print t.Waypoints del rob,Start,t,l,w

arbeta med dokumentet
Arbeta med robotdokument objekten: skapa först en robot i det aktiva dokumentet if(App.activeDocument == None):App.newDocument App.activeDocument.addObject("Robot::RobotObject","Robot") Definiera den visuella representationen och den kinematiska definitionen (se 6-Axis Robot/sv för detaljer om det) 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" Axelns startpositon (endast om det skiljer sig från 0) App.activeDocument.Robot.Axis2 = -90 App.activeDocument.Robot.Axis3 = 90 hämta Tcp positionen pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp flytta roboten pos.move(App.Vector(-10,0,0)) FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos skapa ett tomt banobjekt i det aktiva dokumentet App.activeDocument.addObject("Robot::TrajectoryObject","Trajectory") hämta banan t = App.activeDocument.Trajectory.Trajectory lägg till robotens aktuella TCP position till banan StartTcp = App.activeDocument.Robot.Tcp t.insertWaypoints(StartTcp) App.activeDocument.Trajectory.Trajectory = t print App.activeDocument.Trajectory.Trajectory sätt in några fler banpunkter och startpunkten i slutet igen: 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
ska göras..... ;-)

Exportera banan
Banan exporteras av Python. Det innebär att för varje robotkontroll typ så finns det en post-processor Python modul. Här är Kuka post-processorn beskriven i detalj from KukaExporter import ExportCompactSub ExportCompactSub(App.activeDocument.Robot,App.activeDocument.Trajectory,'D:/Temp/TestOut.src') och det är ungefär så här det görs: 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))