Robot Workbench: Difference between revisions

From FreeCAD Documentation
No edit summary
Line 16: Line 16:
== Scripting ==
== Scripting ==


Example how to use the basic robot class Robot6Axis which represent a 6-Axis
Example hwo to use the basic robot class Robot6Axis which represent a 6-Axis
industrial robot. The Robot Module is not depended on Part or an other Module.
industrial robot. The Robot Module is not dependend on Part or an other Module.
It works only with the basic types Placement, Vector and Matrix. So we need
It works only with the basic types Placement, Vector and Matrix. So we need
only:
only:
import FreeCAD, Robot
from Robot import *
from FreeCAD import *
create the robot. If you not specify a other kinematic it becomes a Puma 560
create the robot. If you not specify a other kinematic it becomes a Puma 560
rob = Robot.Robot6Axis()
rob = Robot6Axis()
print rob
print rob
Line 47: Line 48:
Waypoints:
Waypoints:
w = Robot.Waypoint()
w = Waypoint(Placement(),name="Pt",type="LIN")
print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool
generate more
l = [w]
for i in range(5):
l.append(Waypoint(Placement(Vector(0,0,i*100),0,Vector(1,0,0)),"LIN","Pt"))
create a trajectory
t = Trajectory(l)
print t
del rob,Start
del rob,Start

Revision as of 17:09, 2 October 2009

The robot workbench is tool to simulate industrial grade 6-Axis robots, like e.g. Kuka. Following features are planed and partial already implemented:

  • Visual representation of 6-Axis Robot (done)
  • Forward and inverse kinematic calculation of arbitrary robots (done)
  • RobotLib, dynamic readably robot types (work in progress)
  • Trajectory simulation (work in progress)
    • collision simulation
    • detection of configuration changes and singularities
    • time estimation
    • used volume (planed)
  • Post processor for Kuka robots (work in progress)
  • Process and work cell control (planed)
  • Movie making out of simulation (planed)

Scripting

Example hwo to use the basic robot class Robot6Axis which represent a 6-Axis industrial robot. The Robot Module is not dependend on Part or an other Module. It works only with the basic types Placement, Vector and Matrix. So we need only:

from Robot import *
from FreeCAD import *

create the robot. If you not specify a other kinematic it becomes a Puma 560

rob = Robot6Axis()
print rob

accessing the axis and the Tcp. Axis go from 1-6 and are in degrees:

Start = rob.Tcp
print Start
print rob.Axis1

move the first Axis of the robot:

rob.Axis1 = 5.0

the Tcp has changed (forward kinematic)

print rob.Tcp

move the robot back to start position (reverse kinematic):

rob.Tcp = Start
print rob.Axis1

the same with axis 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

generate more

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

create a trajectory

t = Trajectory(l)
print t


del rob,Start

Working with the robot document objects: first creat a robot in the active document

App.activeDocument().addObject("Robot::RobotObject","Robot")
App.activeDocument().Robot.RobotVrmlFile = App.getResourceDir()+"Mod/Robot/Lib/Kuka/kr500_1.wrl"
App.activeDocument().Robot.Axis2 = -90
App.activeDocument().Robot.Axis3 = 90

retrive the Tcp position

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

move the robot

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