Robot Workbench: Difference between revisions

From FreeCAD Documentation
No edit summary
 
(96 intermediate revisions by 20 users not shown)
Line 1: Line 1:
<languages/>
The robot workbench is tool to simulate industrial grade 6-Axis robots, like e.g. [http://kuka.com/ Kuka]. Following features are planed and partial already implemented:
<translate>
* 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)


<!--T:40-->
[[Image:KukaKR16FreeCAD.jpg]]
{{Docnav
|[[Reverse_Engineering_Workbench|Reverse Engineering Workbench]]
|[[Sketcher_Workbench|Sketcher Workbench]]
|IconL=Workbench_Reverse_Engineering.svg
|IconR=Workbench_Sketcher.svg
}}


<!--T:42-->
== Scripting ==
{{VeryImportantMessage|The Robot Workbench is unmaintained. If you have experience with the topic and are interested in maintaining it, please state your intention in the developer's section of the [https://forum.freecadweb.org/index.php FreeCAD forum].


<!--T:47-->
Example hwo to use the basic robot class Robot6Axis which represent a 6-Axis
The reason this workbench is still in the master source code is because this workbench is programmed in C++. If this workbench could be programmed in Python, then it could be made an [[external_workbenches|external workbench]] and it could be moved to a separate repository.
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:
== Introduction == <!--T:37-->
from Robot import *

from FreeCAD import *
</translate>
[[Image:Workbench_Robot.svg|thumb|128px|<translate><!--T:46--> Robot workbench icon</translate>]]
create the robot. If you not specify a other kinematic it becomes a Puma 560
<translate>
rob = Robot6Axis()

print rob
<!--T:2-->
The [[Image:Workbench_Robot.svg|24px]] [[Robot_Workbench|Robot Workbench]] is a tool to simulate a standard [[Robot_6-Axis|6-axis industrial robot]], like [http://kuka.com/ Kuka].
accessing the axis and the Tcp. Axis go from 1-6 and are in degrees:

Start = rob.Tcp
<!--T:38-->
print Start
You can do the following tasks:
print rob.Axis1
* Set up a simulation environment with a robot and work pieces.
* Create and fill up movement trajectories.
move the first Axis of the robot:
* Decompose features of a CAD part to a trajectory.
rob.Axis1 = 5.0
* Simulate the robot movement and reaching distance.
the Tcp has changed (forward kinematic)
* Export the trajectory to a robot program file.
print rob.Tcp

<!--T:3-->
move the robot back to start position (reverse kinematic):
To get started try the [[Robot_tutorial|Robot tutorial]], and see the programming interface in the [https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py RobotExample.py] example file.
rob.Tcp = Start

print rob.Axis1
</translate>
{{TOCright}}
the same with axis 2:
[[Image:Robot_Workbench_example.jpg|500px]]
rob.Axis2 = 5.0
<translate>
print rob.Tcp

rob.Tcp = Start
== Tools == <!--T:4-->
print rob.Axis2
Here the principal commands you can use to create a robot set-up.

Waypoints:
=== Robots === <!--T:5-->
w = Waypoint(Placement(),name="Pt",type="LIN")
The tools to create and manage the 6-Axis robots
print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool

<!--T:6-->
generate more
* [[Image:Robot_CreateRobot.svg|30px]] [[Robot_CreateRobot|Create a robot]]: Insert a new robot into the scene
l = [w]
* [[Image:Robot_Simulate.svg|30px]] [[Robot_Simulate|Simulate a trajectory]]: Opens the simulation dialog and lets you simulate
for i in range(5):
* [[Image:Robot_Export.svg|30px]] [[Robot_Export|Export a trajectory]]: Export a robot program file
l.append(Waypoint(Placement(Vector(0,0,i*100),0,Vector(1,0,0)),"LIN","Pt"))
* [[Image:Robot_SetHomePos.svg|30px]] [[Robot_SetHomePos|Set home position]]: Set the home position of a robot
* [[Image:Robot_RestoreHomePos.svg|30px]] [[Robot_RestoreHomePos|Restore home position]]: move the robot to its home position
create a trajectory

t = Trajectory(l)
=== Trajectories === <!--T:7-->
print t
Tools to create and manipulate trajectories. There are two kinds, the parametric and non parametric ones.

==== Non parametric trajectories ==== <!--T:8-->
del rob,Start
* [[Image:Robot_CreateTrajectory.svg|30px]] [[Robot_CreateTrajectory|Create a trajectory]]: Inserts a new empty trajectory-object into the scene
* [[Image:Robot_SetDefaultOrientation.svg|30px]] [[Robot_SetDefaultOrientation|Set the default orientation]]: Set the orientation way-points gets created by default
Working with the robot document objects:
* [[Image:Robot_SetDefaultValues.svg|30px]] [[Robot_SetDefaultValues|Set the default speed parameter]]: Set the default values for way-point creation
first creat a robot in the active document
* [[Image:Robot_InsertWaypoint.svg|30px]] [[Robot_InsertWaypoint|Insert a waypoint]]: Insert a way-point from the current robot position into a trajectory
App.activeDocument().addObject("Robot::RobotObject","Robot")
* [[Image:Robot_InsertWaypointPre.svg|30px]] [[Robot_InsertWaypointPre|Insert a waypoint preselected]]: Insert a way-point from the current mouse position into a trajectory
App.activeDocument().Robot.RobotVrmlFile = App.getResourceDir()+"Mod/Robot/Lib/Kuka/kr500_1.wrl"

App.activeDocument().Robot.Axis2 = -90
==== Parametric trajectories ==== <!--T:9-->
App.activeDocument().Robot.Axis3 = 90
* [[Image:Robot_Edge2Trac.svg|30px]] [[Robot_Edge2Trac|Create a trajectory out of edges]]: Insert a new object which decompose edges to a trajectory
* [[Image:Robot_TrajectoryDressUp.svg|30px]] [[Robot_TrajectoryDressUp|Dress-up a trajectory]]: Lets you override one or more properties of a trajectory
retrive the Tcp position
* [[Image:Robot_TrajectoryCompound.svg|30px]] [[Robot_TrajectoryCompound|Trajectory compound]]: Create a compound out of some single trajectories
pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp

move the robot
== Scripting == <!--T:10-->
pos.move(App.Vector(-10,0,0))

FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos
<!--T:39-->
See the [[Robot_API_example|Robot API example]] for a description of the functions used to model the robot displacements.

== Tutorials == <!--T:34-->
* [[Robot 6-Axis|Robot 6-Axis]]
* [[VRML Preparation for Robot Simulation|VRML Preparation for Robot Simulation]]


<!--T:35-->
{{Docnav
|[[Reverse_Engineering_Workbench|Reverse Engineering Workbench]]
|[[Sketcher_Workbench|Sketcher Workbench]]
|IconL=Workbench_Reverse_Engineering.svg
|IconR=Workbench_Sketcher.svg
}}

</translate>
{{Robot Tools navi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}
[[Category:Workbenches{{#translation:}}]]

Latest revision as of 20:49, 3 December 2020

The Robot Workbench is unmaintained. If you have experience with the topic and are interested in maintaining it, please state your intention in the developer's section of the FreeCAD forum.

The reason this workbench is still in the master source code is because this workbench is programmed in C++. If this workbench could be programmed in Python, then it could be made an external workbench and it could be moved to a separate repository.

Introduction

Robot workbench icon

The Robot Workbench is a tool to simulate a standard 6-axis industrial robot, like Kuka.

You can do the following tasks:

  • Set up a simulation environment with a robot and work pieces.
  • Create and fill up movement trajectories.
  • Decompose features of a CAD part to a trajectory.
  • Simulate the robot movement and reaching distance.
  • Export the trajectory to a robot program file.

To get started try the Robot tutorial, and see the programming interface in the RobotExample.py example file.

Tools

Here the principal commands you can use to create a robot set-up.

Robots

The tools to create and manage the 6-Axis robots

Trajectories

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

Non parametric trajectories

Parametric trajectories

Scripting

See the Robot API example for a description of the functions used to model the robot displacements.

Tutorials