1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

Attention: this wiki is deactivated

The new wiki is up and running at http://www.freecadweb.org/wiki

Important: Do not edit this wiki anymore, it will be deleted soon. If you have edit rights here, please read this article to know how to regain your edit rights on the new wiki.

Robot Workbench/se

From free-cad

Jump to: navigation, search

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

Contents

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/

Verktyg

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/se 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))
Available translations of this page:
Personal tools