Robot Workbench/it: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
(45 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
[[Image:KukaKR16FreeCAD.jpg|right|400px]]

{{Docnav/it
|[[Reverse Engineering Workbench/it|Ambiente Reverse Engineering]]
|[[Sketcher Workbench/it|Ambiente Sketcher]]
|IconL=Workbench_Reverse_Engineering.svg
|IconR=Workbench_Sketcher.svg
}}

{{VeryImportantMessage|L'ambiente Robot non è mantenuto. Se avete esperienza con l'argomento e se siete interessati a mantenerlo, vi preghiamo di dichiarare la vostra intenzione nella sezione degli sviluppatori del [https://forum.freecadweb.org/index.php forum di FreeCAD].

Il motivo per cui questo ambiente è ancora nel codice sorgente principale è perché esso è programmato in C++. Se fosse programmato in Python, allora potrebbe essere creato un [[external_workbenches/it|ambiente esterno]] e potrebbe essere spostato in un repository separato.
}}

==Introduzione==

[[Image:Workbench_Robot.svg|thumb|128px|L'icona dell'ambiente Robot]]

L'ambiente [[Image:Workbench_Robot.svg|24px]] Robot è uno strumento per simulare un [[Robot_6-Axis/it|Robot a 6 assi]] di tipo industriale, come per esempio i robot [http://kuka.com/ Kuka].


Il modulo robot è uno strumento per simulare un [[Robot_6-Axis/it|Robot a 6 assi]] di tipo industriale, come per esempio i robot [http://kuka.com/ Kuka].
È possibile eseguire le seguenti operazioni:
È possibile eseguire le seguenti operazioni:
* Impostare un ambiente di simulazione con un robot e dei pezzi in lavorazione
* Impostare un ambiente di simulazione con un robot e dei pezzi in lavorazione
Line 9: Line 26:
* Esportare la traiettoria in un file di programma robot
* Esportare la traiettoria in un file di programma robot


Per iniziare, provare il [[Robot tutorial/it|tutorial Robot]] e consultare l'interfaccia di programmazione nel file di esempio [https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py RobotExample.py].
Alcuni esempi sono disponibili in

[https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py Example files] oppure nel [[Robot tutorial/it|tutorial Robot]].
{{TOCright}}
[[Image:Robot_Workbench_example.jpg|500px]]


== Strumenti ==
== Strumenti ==
Line 20: Line 39:
Gli strumenti per creare e gestire i robot a 6 assi
Gli strumenti per creare e gestire i robot a 6 assi


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


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


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

* [[Image:Robot_CreateTrajectory.png|30px]] [[Robot_CreateTrajectory|Create a trajectory]]: Inserts a new empty trajectory-object into the scene
==== Traiettorie non parametriche ====
* [[Image:Robot_SetDefaultOrientation.png|30px]] [[Robot_SetDefaultOrientation|Set the default orientation]]: Set the orientation way-points gets created by default
* [[Image:Robot_CreateTrajectory.svg|30px]] [[Robot_CreateTrajectory/it|Crea una traiettoria]]: inserisce un nuovo oggetto traiettoria vuoto nella scena.
* [[Image:Robot_SetDefaultValues.png|30px]] [[Robot_SetDefaultValues|Set the default speed parameter]]: Set the default values for way-point creation
* [[Image:Robot_SetDefaultOrientation.svg|30px]] [[Robot_SetDefaultOrientation/it|Imposta l'orientamento predefinito]]: imposta il modo in cui vengono creati i punti di orientamento di default.
* [[Image:Robot_InsertWaypoint.png|30px]] [[Robot_InsertWaypoint|Insert a waypoint]]: Insert a way-point from the current robot position into a trajectory
* [[Image:Robot_SetDefaultValues.svg|30px]] [[Robot_SetDefaultValues/it|Imposta i valori di velocità predefiniti]]: imposta i valori predefiniti per la velocità.
* [[Image:Robot_InsertWaypointPre.png|30px]] [[Robot_InsertWaypointPre|Insert a waypoint]]: Insert a way-point from the current mouse position into a trajectory
* [[Image:Robot_InsertWaypoint.svg|30px]] [[Robot_InsertWaypoint/it|Inserisci un punto nella traiettoria]]: inserisce il punto della posizione corrente del robot in una traiettoria.
* [[Image:Robot_InsertWaypointPre.svg|30px]] [[Robot_InsertWaypointPre/it|Inserisci un punto preselezionato nella traiettoria]]: inserisce il punto della posizione corrente del mouse in una traiettoria.


==== Traiettorie parametriche ====
==== Traiettorie parametriche ====


* [[Image:Robot_Edge2Trac.png|30px]] [[Robot_Edge2Trac/it|Crea una traiettoria dagli spigoli]]: Genera un percorso da un insieme di spigoli
* [[Image:Robot_Edge2Trac.svg|30px]] [[Robot_Edge2Trac/it|Crea una traiettoria da un bordo]]: genera un percorso da un insieme di spigoli.
* [[Image:Robot_TrajectoryDressUp.png|30px]] [[Robot_TrajectoryDressUp/it|Vesti una traiettoria]]: Permette di modificare una o più proprietà di un percorso
* [[Image:Robot_TrajectoryDressUp.svg|30px]] [[Robot_TrajectoryDressUp/it|Vesti una traiettoria]]: permette di modificare una o più proprietà di un percorso.
* [[Image:Robot_TrajectoryCompound.png|30px]] [[Robot_TrajectoryCompound/it|Raggruppa le traiettorie]]: Raggruppa alcune traiettorie in un unico percorso
* [[Image:Robot_TrajectoryCompound.svg|30px]] [[Robot_TrajectoryCompound/it|Raggruppa le traiettorie]]: raggruppa alcune traiettorie in un unico percorso.


== Script ==
== Script ==


Vedere l'esempio [[Robot API example/it|Esempio di API Robot]] per una descrizione delle funzioni utilizzate per modellare gli spostamenti del robot.
Questa sezione è ricavata da: https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py
Volendo, è possibile utilizzare la fonte originale.


Esempio di come utilizzare la classe di robot di base Robot6Axis che rappresenta un robot industriale a 6-assi. Il modulo Robot dipende solo dal modulo Parte e non da altri moduli di FreeCAD.
Funziona soprattutto con basi di dati di tipo Placement, Vector e Matrix. Quindi serve solo:
{{Code|code=
from Robot import *
from Part import *
from FreeCAD import *
}}
=== Elementi base di Robot ===

Creare il robot. Se non viene specificata una cinematica diversa, viene utilizzato un robot 560 Puma
{{Code|code=
rob = Robot6Axis()
print rob
}}
accedere all'asse e al TCP (Punto centro di lavorazione). Gli assi vanno da 1 a 6 e sono in grado di:
{{Code|code=
Start = rob.Tcp
print Start
print rob.Axis1
}}
spostare il primo asse del robot:
{{Code|code=
rob.Axis1 = 5.0
}}
il Tcp è cambiato (cinematica in avanzamento)
{{Code|code=
print rob.Tcp
}}
muovere il robot nella posizione di partenza (cinematica in ritorno):
{{Code|code=
rob.Tcp = Start
print rob.Axis1
}}
stessa cosa per l'asse 2:
{{Code|code=
rob.Axis2 = 5.0
print rob.Tcp
rob.Tcp = Start
print rob.Axis2
}}
Punti del percorso:
{{Code|code=
w = Waypoint(Placement(),name="Pt",type="LIN")
print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool
}}
generarne altri. La traiettoria trova sempre automaticamente un nome univoco per i punti del percorso
{{Code|code=
l = [w]
for i in range(5):
l.append(Waypoint(Placement(Vector(0,0,i*100),Vector(1,0,0),0),"LIN","Pt"))
}}
creare un percorso
{{Code|code=
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"))
}}
visualizzare un elenco di tutti i punti del percorso:
{{Code|code=
print t.Waypoints
del rob,Start,t,l,w
}}
=== Lavorare con gli oggetti del documento ===

Lavorare con oggetti documento del robot:
innanzitutto creare un robot nel documento attivo
{{Code|code=
if(App.activeDocument() == None):App.newDocument()
App.activeDocument().addObject("Robot::RobotObject","Robot")
}}
Definire la rappresentazione visiva e definire la cinematica, per dettagli su questo aspetto vedere [[Robot_6-Axis/it|Robot a 6 assi]] e [[VRML Preparation for Robot Simulation/it|Preparazione del file VRML per la simulazione del robot]]
{{Code|code=
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"
}}
posizione iniziale dell'asse (solo quelli che differiscono da 0)
{{Code|code=
App.activeDocument().Robot.Axis2 = -90
App.activeDocument().Robot.Axis3 = 90
}}
richiamare la posizione Tcp
{{Code|code=
pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp
}}
muovere il robot
{{Code|code=
pos.move(App.Vector(-10,0,0))
FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos
}}
creare un oggetto Traiettoria vuota nel documento attivo
{{Code|code=
App.activeDocument().addObject("Robot::TrajectoryObject","Trajectory")
}}
ottenere la traiettoria
{{Code|code=
t = App.activeDocument().Trajectory.Trajectory
}}
aggiungere la posizione TCP attuale del robot alla traiettoria
{{Code|code=
StartTcp = App.activeDocument().Robot.Tcp
t.insertWaypoints(StartTcp)
App.activeDocument().Trajectory.Trajectory = t
print App.activeDocument().Trajectory.Trajectory
}}
inserire altri punti del percorso e, alla fine, nuovamente il punto iniziale:
{{Code|code=
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
}}

=== Simulazione ===
Da fare.....
=== Esportare la traiettoria ===

La traiettoria viene esportata da Python. Ciò significa che per ogni sezione di controllo c'è un modulo post-processore Python.

Quì è descritto in dettaglio il post-processore Kuka
{{Code|code=
from KukaExporter import ExportCompactSub

ExportCompactSub(App.activeDocument().Robot,App.activeDocument().Trajectory,'D:/Temp/TestOut.src')
}}
e questo è il modo in cui si esegue:
{{Code|code=
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 ==
== Tutorials ==
* [[Robot_6-Axis/it|6-Axis_Robot]]
* [[Robot_6-Axis/it|6-Axis_Robot]]
Line 203: Line 71:




{{Docnav/it
{{Docnav/it|[[Draft Module/it|Ambiente Draft - Disegno 2D]]|[[Arch Module/it|Ambiente Architettura]]}}
|[[Reverse Engineering Workbench/it|Ambiente Reverse Engineering]]
|[[Sketcher Workbench/it|Ambiente Sketcher]]
|IconL=Workbench_Reverse_Engineering.svg
|IconR=Workbench_Sketcher.svg
}}


{{Robot Tools navi{{#translation:}}}}
[[Category:User Documentation/it]]
{{Userdocnavi{{#translation:}}}}

[[Category:Workbenches{{#translation:}}]]

<languages/>

Revision as of 19:58, 10 August 2020

L'ambiente Robot non è mantenuto. Se avete esperienza con l'argomento e se siete interessati a mantenerlo, vi preghiamo di dichiarare la vostra intenzione nella sezione degli sviluppatori del forum di FreeCAD.

Il motivo per cui questo ambiente è ancora nel codice sorgente principale è perché esso è programmato in C++. Se fosse programmato in Python, allora potrebbe essere creato un ambiente esterno e potrebbe essere spostato in un repository separato.

Introduzione

L'icona dell'ambiente Robot

L'ambiente Robot è uno strumento per simulare un Robot a 6 assi 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

Per iniziare, provare il tutorial Robot e consultare l'interfaccia di programmazione nel file di esempio RobotExample.py.

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

Traiettorie

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

Traiettorie non parametriche

Traiettorie parametriche

Script

Vedere l'esempio Esempio di API Robot per una descrizione delle funzioni utilizzate per modellare gli spostamenti del robot.

Tutorials