Ambiente de trabajo Robot

From FreeCAD Documentation
Revision as of 18:22, 24 July 2014 by Renatorivo (talk | contribs) (Created page with "mueve el robot")

El entorno de simulación de robots es una herramienta para simular un Robot industrial de 6 ejes, como Kuka. Puedes hacer las siguientes tareas:

  • Configurar un entorno de simulación con un robot y piezas de trabajo
  • Crea y cubrir trayectorias
  • Descomponer características de una pieza de CAD en una trayectoria
  • Simular el movimiento y la accesibilidad del robot
  • Exportar la trayectoria a un archivo del programa del robot

Unos ejemplos que puedes encontrar aquí: Archivos de ejemplo o prueba el Tutorial de simulación de Robots.

Herramientas

Aquí están los principales comandos que puedes utilizar para crear la configuración de un robot.

Robots

Las herramientas para crear y manejar los robots de 6 ejes

Trayectorias

Herramientas para crear y manipular trayectorias. Existen dos tipos, las paramétricas y las no paramétricas.

no paramétricas

paramétrica

Archivos de guión

Esta sección se genera en: http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Robot/RobotExample.py?view=markup Puedes utilizar este archivo directamente si quieres.

Ejemplo de cómo utilizar la clase Robot6Axis básica que representa a un robot industrial de 6 ejes. El módulo de Robot es dependiente del de Piezas pero no de otros módulos. Trabaja principalmente con los tipos básicos de Ubicación, Vector y Matriz. Así que necesitamos sólo:

from Robot import *
from Part import *
from FreeCAD import *

Cosas básicas del robot

Crear el robot. Si no se especifica otra cinemática será la de un Puma 560

rob = Robot6Axis()
print rob

accediendo a los ejes y TCP. Los ejes van de 1 a 6 y están en grados decimales:

Start = rob.Tcp
print Start
print rob.Axis1

mueve el primer eje del robot:

rob.Axis1 = 5.0

the Tcp has changed (forward kinematic)

print rob.Tcp

mueve el robot de vuelta a la posición de inicio (cinemática inversa):

rob.Tcp = Start
print rob.Axis1

lo mismo con el eje 2:

rob.Axis2 = 5.0
print rob.Tcp
rob.Tcp = Start
print rob.Axis2

Puntos de paso:

w = Waypoint(Placement(),name="Pt",type="LIN")
print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool

Genera más. La trayectoria siempre encuentra automáticamente un nombre único para los puntos de paso

l = [w]
for i in range(5):
  l.append(Waypoint(Placement(Vector(0,0,i*100),Vector(1,0,0),0),"LIN","Pt"))

crea una trayectoria

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"))

mira una lista de todos los puntos de paso:

print t.Waypoints

del rob,Start,t,l,w

Trabajando con el documento

Trabajando con los objetos del documento del robot: Primero crea un robot en el documento activo

if(App.activeDocument() == None):App.newDocument()

App.activeDocument().addObject("Robot::RobotObject","Robot")

Define la representación visual y la definición cinemática (mira Robot de 6 ejes y Preparación VRML para la simulación del robot para más detalles al respecto)

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"

start positon of the Axis (only that which differ from 0)

App.activeDocument().Robot.Axis2 = -90
App.activeDocument().Robot.Axis3 = 90

Recupera la posición de TCP

pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp

mueve el robot

pos.move(App.Vector(-10,0,0))
FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos

create an empty Trajectory object in the active document

App.activeDocument().addObject("Robot::TrajectoryObject","Trajectory")

get the Trajectory

t = App.activeDocument().Trajectory.Trajectory

add the actual TCP position of the robot to the trajectory

StartTcp = App.activeDocument().Robot.Tcp
t.insertWaypoints(StartTcp)
App.activeDocument().Trajectory.Trajectory = t
print App.activeDocument().Trajectory.Trajectory

insert some more Waypoints and the start point at the end again:

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))

Tutorials

Arch Module
Macros