Robot Workbench/zh-cn: Difference between revisions
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
[[Image: |
[[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.