Robot API example/fr: Difference between revisions
(Created page with "Exemple d'utilisation de la classe de robot de base Robot6Axis qui représente un robot industriel à 6 axes. Le module Robot dépend de Part mais pas d'autres modules. Il fon...") |
No edit summary |
||
(27 intermediate revisions by 3 users not shown) | |||
Line 14: | Line 14: | ||
}} |
}} |
||
=== |
=== Trucs de base robot === |
||
créer le robot. Si tu ne spécifies pas une autre cinématique, il devient un Puma 560 |
|||
{{Code|code= |
{{Code|code= |
||
rob = Robot6Axis() |
rob = Robot6Axis() |
||
Line 21: | Line 21: | ||
}} |
}} |
||
accéder à l'axe et au TCP. Les axes vont de 1 à 6 et sont en degrés : |
|||
accessing the axis and the Tcp. Axes go from 1-6 and are in degree: |
|||
{{Code|code= |
{{Code|code= |
||
Start = rob.Tcp |
Start = rob.Tcp |
||
Line 28: | Line 28: | ||
}} |
}} |
||
déplacer le premier axe du robot : |
|||
{{Code|code= |
{{Code|code= |
||
rob.Axis1 = 5.0 |
rob.Axis1 = 5.0 |
||
}} |
}} |
||
le TCP a changé (cinématique avant) |
|||
the Tcp has changed (forward kinematic) |
|||
{{Code|code= |
{{Code|code= |
||
print rob.Tcp |
print rob.Tcp |
||
}} |
}} |
||
déplacer le robot en position de départ (cinématique inverse) : |
|||
{{Code|code= |
{{Code|code= |
||
rob.Tcp = Start |
rob.Tcp = Start |
||
Line 44: | Line 44: | ||
}} |
}} |
||
de même pour l'axe 2 : |
|||
{{Code|code= |
{{Code|code= |
||
rob.Axis2 = 5.0 |
rob.Axis2 = 5.0 |
||
Line 52: | Line 52: | ||
}} |
}} |
||
Pointspassage : |
|||
Waypoints: |
|||
{{Code|code= |
{{Code|code= |
||
w = Waypoint(Placement(),name="Pt",type="LIN") |
w = Waypoint(Placement(),name="Pt",type="LIN") |
||
Line 58: | Line 58: | ||
}} |
}} |
||
générer plus. La trajectoire trouve toujours automatiquement un nom unique pour les pointspassage. |
|||
generate more. The trajectory always finds automatically a unique name for the waypoints |
|||
{{Code|code= |
{{Code|code= |
||
l = [w] |
l = [w] |
||
Line 65: | Line 65: | ||
}} |
}} |
||
créer une trajectoire |
|||
create a trajectory |
|||
{{Code|code= |
{{Code|code= |
||
t = Trajectory(l) |
t = Trajectory(l) |
||
Line 73: | Line 73: | ||
}} |
}} |
||
voir une liste de tous les pointspassage : |
|||
see a list of all waypoints: |
|||
{{Code|code= |
{{Code|code= |
||
print t.Waypoints |
print t.Waypoints |
||
Line 80: | Line 80: | ||
}} |
}} |
||
=== |
=== Travailler avec les objets du document === |
||
Travailler avec les objets document robot: |
|||
créer en premier un robot dans le document actif |
|||
{{Code|code= |
{{Code|code= |
||
if(App.activeDocument() == None):App.newDocument() |
if(App.activeDocument() == None):App.newDocument() |
||
Line 90: | Line 90: | ||
}} |
}} |
||
Définir la représentation visuelle et la définition cinématique (voir [[Robot_6-Axis/fr|Robot 6-Axes]] et [[VRML Preparation for Robot Simulation/fr|Préparation VRML pour la simulation de robot]] pour plus de détails à ce sujet) |
|||
{{Code|code= |
{{Code|code= |
||
App.activeDocument().Robot.RobotVrmlFile = App.getResourceDir()+"Mod/Robot/Lib/Kuka/kr500_1.wrl" |
App.activeDocument().Robot.RobotVrmlFile = App.getResourceDir()+"Mod/Robot/Lib/Kuka/kr500_1.wrl" |
||
Line 96: | Line 96: | ||
}} |
}} |
||
position de départ de l'axe (uniquement celle qui diffère de 0) |
|||
start positon of the Axis (only that which differ from 0) |
|||
{{Code|code= |
{{Code|code= |
||
App.activeDocument().Robot.Axis2 = -90 |
App.activeDocument().Robot.Axis2 = -90 |
||
Line 102: | Line 102: | ||
}} |
}} |
||
récupère la position TCP |
|||
{{Code|code= |
{{Code|code= |
||
pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp |
pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp |
||
}} |
}} |
||
déplacer le robot |
|||
{{Code|code= |
{{Code|code= |
||
pos.move(App.Vector(-10,0,0)) |
pos.move(App.Vector(-10,0,0)) |
||
Line 113: | Line 113: | ||
}} |
}} |
||
créer un objet Trajectoire vide dans le document actif |
|||
{{Code|code= |
{{Code|code= |
||
App.activeDocument().addObject("Robot::TrajectoryObject","Trajectory") |
App.activeDocument().addObject("Robot::TrajectoryObject","Trajectory") |
||
}} |
}} |
||
obtenir la trajectoire |
|||
get the Trajectory |
|||
{{Code|code= |
{{Code|code= |
||
t = App.activeDocument().Trajectory.Trajectory |
t = App.activeDocument().Trajectory.Trajectory |
||
}} |
}} |
||
ajouter la position TCP réelle du robot à la trajectoire |
|||
{{Code|code= |
{{Code|code= |
||
StartTcp = App.activeDocument().Robot.Tcp |
StartTcp = App.activeDocument().Robot.Tcp |
||
Line 131: | Line 131: | ||
}} |
}} |
||
insérer d'autres pointspassage et remettre le point de départ à la fin : |
|||
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): |
||
Line 142: | Line 142: | ||
=== Simulation === |
=== Simulation === |
||
A faire..... |
|||
=== |
=== Exportation de la trajectoire === |
||
La trajectoire est exportée par Python. Cela veut dire que pour chaque type d'armoire de commande, il existe un post-processeur module Python. Voici en détail la description du post-processeur de Kuka |
|||
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 |
|||
{{Code|code= |
{{Code|code= |
||
from KukaExporter import ExportCompactSub |
from KukaExporter import ExportCompactSub |
||
Line 153: | Line 152: | ||
}} |
}} |
||
et c'est ainsi que ça se fait : |
|||
and that's kind of how it's done: |
|||
{{Code|code= |
{{Code|code= |
||
for w in App.activeDocument().Trajectory.Trajectory.Waypoints: |
for w in App.activeDocument().Trajectory.Trajectory.Waypoints: |
||
Line 161: | Line 160: | ||
}} |
}} |
||
{{Robot Tools navi}} |
{{Robot Tools navi{{#translation:}}}} |
||
{{Userdocnavi}} |
{{Userdocnavi{{#translation:}}}} |
||
[[Category: |
[[Category:API{{#translation:}}]] |
Latest revision as of 08:23, 26 March 2022
Introduction
Cet exemple est basé sur l'exemple RobotExample.py.
Tu peux utiliser ce fichier directement si tu veux.
Exemple d'utilisation de la classe de robot de base Robot6Axis qui représente un robot industriel à 6 axes. Le module Robot dépend de Part mais pas d'autres modules. Il fonctionne principalement avec les types de base Placement, Vecteur et Matrice. Nous n'avons donc besoin que de :
from Robot import *
from Part import *
from FreeCAD import *
Trucs de base robot
créer le robot. Si tu ne spécifies pas une autre cinématique, il devient un Puma 560
rob = Robot6Axis()
print rob
accéder à l'axe et au TCP. Les axes vont de 1 à 6 et sont en degrés :
Start = rob.Tcp
print Start
print rob.Axis1
déplacer le premier axe du robot :
rob.Axis1 = 5.0
le TCP a changé (cinématique avant)
print rob.Tcp
déplacer le robot en position de départ (cinématique inverse) :
rob.Tcp = Start
print rob.Axis1
de même pour l'axe 2 :
rob.Axis2 = 5.0
print rob.Tcp
rob.Tcp = Start
print rob.Axis2
Pointspassage :
w = Waypoint(Placement(),name="Pt",type="LIN")
print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool
générer plus. La trajectoire trouve toujours automatiquement un nom unique pour les pointspassage.
l = [w]
for i in range(5):
l.append(Waypoint(Placement(Vector(0,0,i*100),Vector(1,0,0),0),"LIN","Pt"))
créer une trajectoire
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"))
voir une liste de tous les pointspassage :
print t.Waypoints
del rob,Start,t,l,w
Travailler avec les objets du document
Travailler avec les objets document robot: créer en premier un robot dans le document actif
if(App.activeDocument() == None):App.newDocument()
App.activeDocument().addObject("Robot::RobotObject","Robot")
Définir la représentation visuelle et la définition cinématique (voir Robot 6-Axes et Préparation VRML pour la simulation de robot pour plus de détails à ce sujet)
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"
position de départ de l'axe (uniquement celle qui diffère de 0)
App.activeDocument().Robot.Axis2 = -90
App.activeDocument().Robot.Axis3 = 90
récupère la position TCP
pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp
déplacer le robot
pos.move(App.Vector(-10,0,0))
FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos
créer un objet Trajectoire vide dans le document actif
App.activeDocument().addObject("Robot::TrajectoryObject","Trajectory")
obtenir la trajectoire
t = App.activeDocument().Trajectory.Trajectory
ajouter la position TCP réelle du robot à la trajectoire
StartTcp = App.activeDocument().Robot.Tcp
t.insertWaypoints(StartTcp)
App.activeDocument().Trajectory.Trajectory = t
print App.activeDocument().Trajectory.Trajectory
insérer d'autres pointspassage et remettre le point de départ à la fin :
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
A faire.....
Exportation de la trajectoire
La trajectoire est exportée par Python. Cela veut dire que pour chaque type d'armoire de commande, il existe un post-processeur module Python. Voici en détail la description du post-processeur de Kuka
from KukaExporter import ExportCompactSub
ExportCompactSub(App.activeDocument().Robot,App.activeDocument().Trajectory,'D:/Temp/TestOut.src')
et c'est ainsi que ça se fait :
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))
- Robots : Créer un robot, Simuler une trajectoire, Exporter une trajectoire, Définir la positon de départ, Restaurer la positon de départ
- Trajectoires non paramétriques : Créer une trajectoire, Définir l'orientation par défaut, Définir les paramètres de vitesse par défaut, Insérer dans la trajectoire, Insérer dans la trajectoire (souris)
- Trajectoires paramétriques : Générer une trajectoire à partir d'un ensemble d'arêtes, Habiller une trajectoire, Grouper et connecter des trajectoires
- Démarrer avec FreeCAD
- Installation : Téléchargements, Windows, Linux, Mac, Logiciels supplémentaires, Docker, AppImage, Ubuntu Snap
- Bases : À propos de FreeCAD, Interface, Navigation par la souris, Méthodes de sélection, Objet name, Préférences, Ateliers, Structure du document, Propriétés, Contribuer à FreeCAD, Faire un don
- Aide : Tutoriels, Tutoriels vidéo
- Ateliers : Std Base, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test