Robot Workbench/zh-cn: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
Line 1: Line 1:
<languages/>
<languages/>
[[Image:KukaKR16FreeCAD.jpg|right|400px]]
[[Image:Workbench_Robot.svg|64px]]


== Introduction ==

<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 9: Line 12:
* 模拟机器人的运动及其可达性
* 模拟机器人的运动及其可达性
* 将轨迹导出为机器人程序文件
* 将轨迹导出为机器人程序文件
</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|600px]]


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


<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 24: Line 41:
* [[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 34: Line 53:
* [[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]] 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
}}
移动机器人
{{Code|code=
pos.move(App.Vector(-10,0,0))
FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos
}}
在激活的文档中创建一个空轨迹对象
{{Code|code=
App.activeDocument().addObject("Robot::TrajectoryObject","Trajectory")
}}
得到轨迹
{{Code|code=
t = App.activeDocument().Trajectory.Trajectory
}}
添加机器人的实际TCP位置轨迹
{{Code|code=
StartTcp = App.activeDocument().Robot.Tcp
t.insertWaypoints(StartTcp)
App.activeDocument().Trajectory.Trajectory = t
print App.activeDocument().Trajectory.Trajectory
}}
插入更多的航点并再次将起始点插入到最后:
{{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
}}

=== 模拟 ===
To be done.....

=== 导出轨迹 ===

轨迹由 Python 导出。 意思是为每个控制柜类型有一个后处理器 Python 模块。 下面详细描述了 Kuka 后处理器
{{Code|code=
from KukaExporter import ExportCompactSub

ExportCompactSub(App.activeDocument().Robot,App.activeDocument().Trajectory,'D:/Temp/TestOut.src')
}}
以及它是怎么做的:
{{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]]
* [[VRML Preparation for Robot Simulation|VRML Preparation for Robot Simulation]]
* [[VRML Preparation for Robot Simulation|VRML Preparation for Robot Simulation]]


<div class="mw-translate-fuzzy">

{{docnav|FEM Module|Standard Menu}}
{{docnav|FEM Module|Standard Menu}}
</div>

[[Category:User Documentation/zh-cn|分类:用户文档]]

Revision as of 21:13, 15 January 2019

Introduction

机器人工作台是一个用于模仿工业 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 Module
Standard Menu