Robot Workbench/zh-cn: Difference between revisions

From FreeCAD Documentation
(Created page with "=== 轨迹 === 创建和操作轨迹的工具。分为两种:参数性的和非参数性的。")
No edit summary
 
(43 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
[[Image:KukaKR16FreeCAD.jpg|right|400px]]


{{Docnav
|[[Reverse_Engineering_Workbench|Reverse Engineering Workbench]]
|[[Sketcher_Workbench|Sketcher Workbench]]
|IconL=Workbench_Reverse_Engineering.svg
|IconR=Workbench_Sketcher.svg
}}

{{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].

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.
}}

== Introduction ==

[[Image:Workbench_Robot.svg|thumb|128px|Robot workbench icon]]

<div class="mw-translate-fuzzy">
机器人工作台是一个用于模仿工业 [[Robot_6-Axis/cn|Robot 6-Axis]] 的工具,就像 [http://kuka.com/ Kuka]。
机器人工作台是一个用于模仿工业 [[Robot_6-Axis/cn|Robot 6-Axis]] 的工具,就像 [http://kuka.com/ Kuka]。
用它可以完成以下任务:
用它可以完成以下任务:
Line 8: Line 25:
* 模拟机器人的运动及其可达性
* 模拟机器人的运动及其可达性
* 将轨迹导出为机器人程序文件
* 将轨迹导出为机器人程序文件
</div>


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.

<div class="mw-translate-fuzzy">
你可以从这儿找到例子:
你可以从这儿找到例子:
[http://www.freecad-project.de/svn/ExampleData/Examples/RobotSimulation/ Example files] 或者去参考 [[Robot tutorial]].
[http://www.freecad-project.de/svn/ExampleData/Examples/RobotSimulation/ Example files] 或者去参考 [[Robot tutorial]].
</div>

{{TOCright}}
[[Image:Robot_Workbench_example.jpg|500px]]


== 工具 ==
== 工具 ==
Line 18: Line 48:
创建和管理六轴机器人的工具
创建和管理六轴机器人的工具


<div class="mw-translate-fuzzy">
* [[Image:Robot_CreateRobot.png|30px]] [[Robot_CreateRobot|创建机器人]]: 在场景中插入一个新机器人
* [[Image:Robot_CreateRobot.png|30px]] [[Robot_CreateRobot|创建机器人]]: 在场景中插入一个新机器人
* [[Image:Robot_Simulate.png|30px]] [[Robot_Simulate|模拟轨迹]]: 打开模拟对话框并进行轨迹模拟
* [[Image:Robot_Simulate.png|30px]] [[Robot_Simulate|模拟轨迹]]: 打开模拟对话框并进行轨迹模拟
Line 23: Line 54:
* [[Image:Robot_SetHomePos.png|30px]] [[Robot_SetHomePos|设置起始位置]]: 设置机器人的起始位置
* [[Image:Robot_SetHomePos.png|30px]] [[Robot_SetHomePos|设置起始位置]]: 设置机器人的起始位置
* [[Image:Robot_RestoreHomePos.png|30px]] [[Robot_RestoreHomePos|还原初始位置]]: 将机器人移动到起始位置
* [[Image:Robot_RestoreHomePos.png|30px]] [[Robot_RestoreHomePos|还原初始位置]]: 将机器人移动到起始位置
</div>


=== 轨迹 ===
=== 轨迹 ===
创建和操作轨迹的工具。分为两种:参数性的和非参数性的。
创建和操作轨迹的工具。分为两种:参数性的和非参数性的。


<div class="mw-translate-fuzzy">
==== non parametric trajectories ====
==== 非参数性轨迹 ====
* [[Image:Robot_CreateTrajectory.png|30px]] [[Robot_CreateTrajectory|Create a trajectory]]: Inserts a new empty trajectory-object into the scene
* [[Image:Robot_CreateTrajectory.png|30px]] [[Robot_CreateTrajectory|创建轨迹]]: 在场景中插入一个新机器人
* [[Image:Robot_SetDefaultOrientation.png|30px]] [[Robot_SetDefaultOrientation|Set the default orientation]]: Set the orientation way-points gets created by default
* [[Image:Robot_SetDefaultOrientation.png|30px]] [[Robot_SetDefaultOrientation|设置默认方位]]: 设置默认的方位航向点
* [[Image:Robot_SetDefaultValues.png|30px]] [[Robot_SetDefaultValues|Set the default speed parameter]]: Set the default values for way-point creation
* [[Image:Robot_SetDefaultValues.png|30px]] [[Robot_SetDefaultValues|设置速度参数默认值]]: 设置默认的航向点创建
* [[Image:Robot_InsertWaypoint.png|30px]] [[Robot_InsertWaypoint|Insert a waypoint]]: Insert a way-point from the current robot position into a trajectory
* [[Image:Robot_InsertWaypoint.png|30px]] [[Robot_InsertWaypoint|插入航向点]]: 从当前机器人位置向轨迹中插入一个航向点
* [[Image:Robot_InsertWaypointPre.png|30px]] [[Robot_InsertWaypointPre|Insert a waypoint]]: Insert a way-point from the current mouse position into a trajectory
* [[Image:Robot_InsertWaypointPre.png|30px]] [[Robot_InsertWaypointPre|插入航向点]]: 从当前的鼠标位置向轨迹中插入一个航向点
</div>


<div class="mw-translate-fuzzy">
==== parametric trajectories ====
==== 参数性轨迹 ====
* [[Image:Robot_Edge2Trac.png|30px]] [[Robot_Edge2Trac|Create a trajectory out of edges]]: Insert a new object which decompose edges to a trajectory
* [[Image:Robot_Edge2Trac.png|30px]] [[Robot_Edge2Trac|由边创建轨迹]]: 插入一个新对象,该对象将边分解为轨迹
* [[Image:Robot_TrajectoryDressUp.png|30px]] [[Robot_TrajectoryDressUp|Dress-up a trajectory]]: Lets you override one or more properties of a trajectory
* [[Image:Robot_TrajectoryDressUp.png|30px]] [[Robot_TrajectoryDressUp|修饰轨迹]]: 覆盖轨迹的一个或多个属性
* [[Image:Robot_TrajectoryCompound.png|30px]] [[Robot_TrajectoryCompound|Trajectory compound]]: Create a compound out of some single trajectories
* [[Image:Robot_TrajectoryCompound.png|30px]] [[Robot_TrajectoryCompound|轨迹复合]]: 由多个单轨迹创建一个复合轨迹
</div>


<div class="mw-translate-fuzzy">
== Scripting ==
== 脚本编程 ==
This section is generated out of: https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py
本节是由 https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py 产生出来的,你可以直接使用这个文件。
You can use this file directly if you want.
</div>


See the [[Robot_API_example|Robot API example]] for a description of the functions used to model the robot displacements.
Example how to use the basic robot class Robot6Axis which represents a 6-axis
industrial robot. The Robot module is dependent on Part but not on other modules.
It works mostly with the basic types Placement, Vector and Matrix. So we need
only:
{{Code|code=
from Robot import *
from Part import *
from FreeCAD import *
}}
=== Basic robot stuff ===
create the robot. If you do not specify another kinematic it becomes a Puma 560
{{Code|code=
rob = Robot6Axis()
print rob
}}
accessing the axis and the Tcp. Axes go from 1-6 and are in degree:
{{Code|code=
Start = rob.Tcp
print Start
print rob.Axis1
}}
move the first axis of the robot:
{{Code|code=
rob.Axis1 = 5.0
}}
the Tcp has changed (forward kinematic)
{{Code|code=
print rob.Tcp
}}
move the robot back to start position (reverse kinematic):
{{Code|code=
rob.Tcp = Start
print rob.Axis1
}}
the same with axis 2:
{{Code|code=
rob.Axis2 = 5.0
print rob.Tcp
rob.Tcp = Start
print rob.Axis2
}}
Waypoints:
{{Code|code=
w = Waypoint(Placement(),name="Pt",type="LIN")
print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool
}}
generate more. The trajectory always finds automatically a unique name for the waypoints
{{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"))
}}
create a trajectory
{{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"))
}}
see a list of all waypoints:
{{Code|code=
print t.Waypoints
del rob,Start,t,l,w
}}
=== Working with the document objects ===


Working with the robot document objects:
first create a robot in the active document
{{Code|code=
if(App.activeDocument() == None):App.newDocument()
App.activeDocument().addObject("Robot::RobotObject","Robot")
}}
Define the visual representation and the kinematic definition (see [[Robot_6-Axis|Robot 6-Axis]] and [[VRML Preparation for Robot Simulation|VRML Preparation for Robot Simulation]] for details about that)
{{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"
}}
start positon of the Axis (only that which differ from 0)
{{Code|code=
App.activeDocument().Robot.Axis2 = -90
App.activeDocument().Robot.Axis3 = 90
}}
retrieve the Tcp position
{{Code|code=
pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp
}}
move the robot
{{Code|code=
pos.move(App.Vector(-10,0,0))
FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos
}}
create an empty Trajectory object in the active document
{{Code|code=
App.activeDocument().addObject("Robot::TrajectoryObject","Trajectory")
}}
get the Trajectory
{{Code|code=
t = App.activeDocument().Trajectory.Trajectory
}}
add the actual TCP position of the robot to the trajectory
{{Code|code=
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:
{{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
}}

=== 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
{{Code|code=
from KukaExporter import ExportCompactSub

ExportCompactSub(App.activeDocument().Robot,App.activeDocument().Trajectory,'D:/Temp/TestOut.src')
}}
and that's kind of how it's done:
{{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|Robot 6-Axis]]
* [[Robot 6-Axis|Robot 6-Axis]]
Line 198: Line 87:




<div class="mw-translate-fuzzy">
{{docnav|FEM Module|Standard Menu}}
{{docnav|FEM_Workbench|Standard Menu}}
</div>


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

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

<languages/>

Latest revision as of 20:43, 22 August 2021

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

机器人工作台是一个用于模仿工业 Robot 6-Axis 的工具,就像 Kuka。 用它可以完成以下任务:

  • 用机器人和工件设立一个模拟环境
  • 创建和填补轨迹
  • 将一个 CAD 零件的特征分解为轨迹
  • 模拟机器人的运动及其可达性
  • 将轨迹导出为机器人程序文件

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.

你可以从这儿找到例子: Example files 或者去参考 Robot tutorial.

工具

这里提供了设置机器人的主要命令。

机器人

创建和管理六轴机器人的工具

轨迹

创建和操作轨迹的工具。分为两种:参数性的和非参数性的。

非参数性轨迹

参数性轨迹

脚本编程

本节是由 https://github.com/FreeCAD/FreeCAD_sf_master/blob/master/src/Mod/Robot/RobotExample.py 产生出来的,你可以直接使用这个文件。

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

Tutorials


FEM_Workbench
Standard Menu