Robot Workbench/ja: Difference between revisions

From FreeCAD Documentation
(Created page with "==== 非パラメトリック ==== * 30px 軌道を作成: シーンに新しいロボットを挿入しま...")
(Updating to match new version of source page)
(20 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<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">
ロボットワークベンチは[http://kuka.com/ Kuka]のような産業用[[6-Axis Robot/jp|6軸ロボット]]のシミュレートのためのツールです。
ロボットワークベンチは[http://kuka.com/ Kuka]のような産業用[[6-Axis Robot/jp|6軸ロボット]]のシミュレートのためのツールです。
以下の作業を行うことができます:
以下の作業を行うことができます:
Line 9: 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/ サンプルファイル] または [[Robot tutorial/jp|ロボットのチュートリアル]]
[http://www.freecad-project.de/svn/ExampleData/Examples/RobotSimulation/ サンプルファイル] または [[Robot tutorial/jp|ロボットのチュートリアル]]
</div>

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


== ツール ==
== ツール ==
Line 20: Line 49:
6軸ロボットを作成、管理するためのツール
6軸ロボットを作成、管理するためのツール


<div class="mw-translate-fuzzy">
* [[Image:Robot_CreateRobot.png|30px]] [[Robot_CreateRobot/jp|ロボットを作成]]: シーンに新しいロボットを挿入します
* [[Image:Robot_CreateRobot.png|30px]] [[Robot_CreateRobot/jp|ロボットを作成]]: シーンに新しいロボットを挿入します
* [[Image:Robot_Simulate.png|30px]] [[Robot_Simulate/jp|軌道をシミュレート]]: シミュレーションダイアログを開き、シミュレートを行います
* [[Image:Robot_Simulate.png|30px]] [[Robot_Simulate/jp|軌道をシミュレート]]: シミュレーションダイアログを開き、シミュレートを行います
Line 25: Line 55:
* [[Image:Robot_SetHomePos.png|30px]] [[Robot_SetHomePos/jp|定位置を設定]]: ロボットの定位置を設定します
* [[Image:Robot_SetHomePos.png|30px]] [[Robot_SetHomePos/jp|定位置を設定]]: ロボットの定位置を設定します
* [[Image:Robot_RestoreHomePos.png|30px]] [[Robot_RestoreHomePos/jp|定位置に戻す]]: ロボットを定位置に動かします
* [[Image:Robot_RestoreHomePos.png|30px]] [[Robot_RestoreHomePos/jp|定位置に戻す]]: ロボットを定位置に動かします
</div>


=== 軌道 ===
=== 軌道 ===
軌道を作成し、操作するためのツールです。パラメトリックなものと非パラメトリックなものの二種類があります。
軌道を作成し、操作するためのツールです。パラメトリックなものと非パラメトリックなものの二種類があります。


<div class="mw-translate-fuzzy">
==== 非パラメトリック ====
==== 非パラメトリック ====
* [[Image:Robot_CreateTrajectory.png|30px]] [[Robot_CreateTrajectory/jp|軌道を作成]]: シーンに新しいロボットを挿入します
* [[Image:Robot_CreateTrajectory.png|30px]] [[Robot_CreateTrajectory/jp|軌道を作成]]: シーンに新しいロボットを挿入します
Line 35: Line 67:
* [[Image:Robot_InsertWaypoint.png|30px]] [[Robot_InsertWaypoint/jp|通過点を挿入]]: 現在のロボット位置から軌道に通過点を挿入します
* [[Image:Robot_InsertWaypoint.png|30px]] [[Robot_InsertWaypoint/jp|通過点を挿入]]: 現在のロボット位置から軌道に通過点を挿入します
* [[Image:Robot_InsertWaypointPre.png|30px]] [[Robot_InsertWaypointPre/jp|通過点を挿入]]: 現在のマウス位置から軌道に通過点を挿入します
* [[Image:Robot_InsertWaypointPre.png|30px]] [[Robot_InsertWaypointPre/jp|通過点を挿入]]: 現在のマウス位置から軌道に通過点を挿入します
</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/jp|エッジから軌道を作成]]: エッジを軌道に分解した新しいオブジェクトを挿入します
* [[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/jp|軌道をドレスアップ]]: 軌道の一つ以上のプロパティを上書きします
* [[Image:Robot_TrajectoryCompound.png|30px]] [[Robot_TrajectoryCompound|Trajectory compound]]: Create a compound out of some single trajectories
* [[Image:Robot_TrajectoryCompound.png|30px]] [[Robot_TrajectoryCompound/jp|軌道を合成]]: 複数の単一軌道を合成したものを作成します
</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
You can use this file directly if you want.


このセクションは以下のスクリプトから生成されています: http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Robot/RobotExample.py?view=markup
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.
</div>
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 ===


See the [[Robot API example|Robot API example]] for a description of the functions used to model the robot displacements.
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 ==
* [[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のロボットシミュレーション準備]]




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


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

Revision as of 18:20, 9 August 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

ロボットワークベンチはKukaのような産業用6軸ロボットのシミュレートのためのツールです。 以下の作業を行うことができます:

  • ロボット、加工物とシミュレーション環境のセットアップ
  • 軌道の作成と書き込み
  • 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.

以下で例を見ることができます: サンプルファイル または ロボットのチュートリアル

ツール

ロボット設定を作成するのに使う主要なコマンドです。

ロボット

6軸ロボットを作成、管理するためのツール

軌道

軌道を作成し、操作するためのツールです。パラメトリックなものと非パラメトリックなものの二種類があります。

非パラメトリック

パラメトリック

スクリプト処理

このセクションは以下のスクリプトから生成されています: http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Robot/RobotExample.py?view=markup 必要であればこのファイルを直接使用することもできます。

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

チュートリアル


FEM Module
Standard Menu

Template:Docnav/jp