Robot Workbench/ro: Difference between revisions
No edit summary |
No edit summary |
||
Line 164: | Line 164: | ||
}} |
}} |
||
introduceți mai multe puncte de traseu și punctul de pornire la sfârșitul din nou: |
|||
insert some more Waypoints and the start point at the end again: |
|||
{{Code|code= |
{{Code|code= |
||
for i in range(7): |
for i in range(7): |
Revision as of 05:42, 9 August 2018
Atelierul robotică este o unealtă pentru a simula un robot industrial cu 6 axe de libertate Robot 6-Axis, cum ar fi de ex. Kuka. Puteți efectua următoarele activități:
- configurați un mediu de simulare cu un robot și piese de lucru
- creați și urmați traiectoriile
- descompune caracteristicile unei piese CAD într-o traiectorie
- Simulați mișcarea și accesibilitatea robotului
- exportați traiectoria într-un fișier de program de robot
Puteți găsi un exemplu aici: Example files sau încercați Robot tutorial.
Scule și Instrumente
Aici sunt comenzile principale pe care le puteți utiliza pentru a seta un robot.
Roboți
Instrumentele pentru crearea și gestionarea roboților cu 6 axe
- Create a robot: Introduceți un nou robot în scenă
- Simulate a trajectory: Deschide dialogul de simulare și vă permite să simulați
- Export a trajectory: Exportați un fișier conținând programul robotului
- Set home positon: Stabiliți poziția 0 a robotului
- Restore home positon: Mutați robotul în poziția zero
Traiectorii
Instrumente pentru crearea și manipularea traiectoriilor. Există două tipuri, cele parametrice și cele neparametrice.
traiectoriile non parametrice
- Creați o traiectorie: Introduceți o traiectorie goală în scenă
- Stabiliți orientarea implicită: Definiți orientarea implicită a punctelor de trecere
- /Definiți parametrul implicit al vitezei: Stabiliți valorile implicite pentru crearea punctelor de trecere
- Inserați un punct de trecere: Inserați un punct de trecere de la poziția curentă a robotului într-o traiectorie
- Inserați un punct de trecre: Inserați un punct de trecere de la poziția curentă a mouse-ului într-o traiectorie
traiectorii parametrice
- Creați o traiectorie dincolo de margini: Inserați un nou obiect care descompune marginile într-o traiectorie
- Traiectorie suplimetnră(Dress-up): Lets you override una sau mai multe proprietăți ale traiectoriei
- Traiectorie compusă: Creați o traiectorie complexă de la o singură traiectorie
Scripting
Această secțiune este generată prin: https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py Puteți folosi acest fișier direct dacă doriți.
Exemplu de utilizare a clasei de roboți de bază Robot6Axis care reprezintă un robot industrial cu 6 axe. Modulul Robot depinde de Atelierul Piese, dar nu și de alte module. Funcționează mai ales cu tipurile de bază Plasament, Vector și Matrix. Deci avem nevoie numai:
from Robot import *
from Part import *
from FreeCAD import *
Chestii de bază în robotică
creați robotul. Dacă nu specificați altă cinematică, acesta devine un Puma 560
rob = Robot6Axis()
print rob
accesând axa și Tcp. Axele merg de la 1-6 și sunt în grad:
Start = rob.Tcp
print Start
print rob.Axis1
mișcați prima axă a robotului:
rob.Axis1 = 5.0
TCP sa schimbat (urmariți cinematica mecanismului)
print rob.Tcp
mișcați robotul înapoi în poziția inițială (kinematic invers):
rob.Tcp = Start
print rob.Axis1
la fel cu axa 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
generați mai mult. Traiectoria întotdeauna găsește automat un nume unic pentru punctele de trecere
l = [w]
for i in range(5):
l.append(Waypoint(Placement(Vector(0,0,i*100),Vector(1,0,0),0),"LIN","Pt"))
creați o traiectorie
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"))
uite o listă a tuturor punctelor de trecere:
print t.Waypoints
del rob,Start,t,l,w
Lucrul cu obiectele documentului
Pentru a lucra cu obiectele documentului robot: creați mai întâi un robot în documentul activ
if(App.activeDocument() == None):App.newDocument()
App.activeDocument().addObject("Robot::RobotObject","Robot")
Definiți reprezentarea vizuală și definiția cinematică (see Robot 6-Axis 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"
poziția inițială a Axei (numai dacă diferă de 0)
App.activeDocument().Robot.Axis2 = -90
App.activeDocument().Robot.Axis3 = 90
extrageți poziția Tcp
pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp
motați robotul
pos.move(App.Vector(-10,0,0))
FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos
creați o traiectorie vidă în documentul activ
App.activeDocument().addObject("Robot::TrajectoryObject","Trajectory")
obțineți Traiectoria
t = App.activeDocument().Trajectory.Trajectory
adăugați poziția TCP reală a robotului în traiectorie
StartTcp = App.activeDocument().Robot.Tcp
t.insertWaypoints(StartTcp)
App.activeDocument().Trajectory.Trajectory = t
print App.activeDocument().Trajectory.Trajectory
introduceți mai multe puncte de traseu și punctul de pornire la sfârșitul din nou:
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))
Tutoriale