Robot Workbench/zh-cn: Difference between revisions

From FreeCAD Documentation
(Created page with "检索TCP位置")
No edit summary
 
(24 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">
==== 非参数性轨迹 ====
==== 非参数性轨迹 ====
* [[Image:Robot_CreateTrajectory.png|30px]] [[Robot_CreateTrajectory|创建轨迹]]: 在场景中插入一个新机器人
* [[Image:Robot_CreateTrajectory.png|30px]] [[Robot_CreateTrajectory|创建轨迹]]: 在场景中插入一个新机器人
Line 33: Line 66:
* [[Image:Robot_InsertWaypoint.png|30px]] [[Robot_InsertWaypoint|插入航向点]]: 从当前机器人位置向轨迹中插入一个航向点
* [[Image:Robot_InsertWaypoint.png|30px]] [[Robot_InsertWaypoint|插入航向点]]: 从当前机器人位置向轨迹中插入一个航向点
* [[Image:Robot_InsertWaypointPre.png|30px]] [[Robot_InsertWaypointPre|插入航向点]]: 从当前的鼠标位置向轨迹中插入一个航向点
* [[Image:Robot_InsertWaypointPre.png|30px]] [[Robot_InsertWaypointPre|插入航向点]]: 从当前的鼠标位置向轨迹中插入一个航向点
</div>


<div class="mw-translate-fuzzy">
==== 参数性轨迹 ====
==== 参数性轨迹 ====
* [[Image:Robot_Edge2Trac.png|30px]] [[Robot_Edge2Trac|由边创建轨迹]]: 插入一个新对象,该对象将边分解为轨迹
* [[Image:Robot_Edge2Trac.png|30px]] [[Robot_Edge2Trac|由边创建轨迹]]: 插入一个新对象,该对象将边分解为轨迹
* [[Image:Robot_TrajectoryDressUp.png|30px]] [[Robot_TrajectoryDressUp|修饰轨迹]]: 覆盖轨迹的一个或多个属性
* [[Image:Robot_TrajectoryDressUp.png|30px]] [[Robot_TrajectoryDressUp|修饰轨迹]]: 覆盖轨迹的一个或多个属性
* [[Image:Robot_TrajectoryCompound.png|30px]] [[Robot_TrajectoryCompound|轨迹复合]]: 由多个单轨迹创建一个复合轨迹
* [[Image:Robot_TrajectoryCompound.png|30px]] [[Robot_TrajectoryCompound|轨迹复合]]: 由多个单轨迹创建一个复合轨迹
</div>


<div class="mw-translate-fuzzy">
== 脚本编程 ==
== 脚本编程 ==
本节是由 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 产生出来的,你可以直接使用这个文件。
</div>


See the [[Robot_API_example|Robot API example]] for a description of the functions used to model the robot displacements.
示例如何使用基本机器人中 Robot6Axis 的来模拟工业六轴机器人。机器人模块依赖于零件模块而不是其他模块。它的工作原理主要是基本类型的布局,矢量和矩阵。因此我们只需要:
{{Code|code=
from Robot import *
from Part import *
from FreeCAD import *
}}
=== 基本机器人事项 ===
创建机器人。如果你不想指定另一个的话,那么默认使用的是 Puma 560 机器人。
{{Code|code=
rob = Robot6Axis()
print rob
}}
访问轴和 Tcp。轴的次序在 1-6 之间
{{Code|code=
Start = rob.Tcp
print Start
print rob.Axis1
}}
移动机器人的第一个轴:
{{Code|code=
rob.Axis1 = 5.0
}}
Tcp发生了变化(前进运动)
{{Code|code=
print rob.Tcp
}}
移动机器人返回初始位置(后退运动)
{{Code|code=
rob.Tcp = Start
print rob.Axis1
}}
和轴 2 相同:
{{Code|code=
rob.Axis2 = 5.0
print rob.Tcp
rob.Tcp = Start
print rob.Axis2
}}
航点:
{{Code|code=
w = Waypoint(Placement(),name="Pt",type="LIN")
print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool
}}
生成更多。 轨迹总是自动找到一个独特的航点名称
{{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"))
}}
创建一个轨迹
{{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"))
}}
查看航点清单:
{{Code|code=
print t.Waypoints
del rob,Start,t,l,w
}}
=== 文档处理 ===


处理机器人文档对象:
首先在激活的文档中创建一个机器人
{{Code|code=
if(App.activeDocument() == None):App.newDocument()
App.activeDocument().addObject("Robot::RobotObject","Robot")
}}
定义的可视化表示和运动的定义(见 [[Robot_6-Axis/cn|Robot 6-Axis]] 和 [[VRML Preparation for Robot Simulation]] 有关细节)
{{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"
}}
启动轴的位置(这只是和从 0 不同)
{{Code|code=
App.activeDocument().Robot.Axis2 = -90
App.activeDocument().Robot.Axis3 = 90
}}
检索TCP位置
{{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 194: 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