Robot Workbench/ja



ロボットワークベンチはKukaのような産業用6軸ロボットのシミュレートのためのツールです. 以下の作業を行うことができます：
 * ロボット、加工物とシミュレーション環境のセットアップ
 * 軌道の作成と書き込み
 * CAD部品形状を軌道に分解
 * ロボットの動作と到達可能範囲のシミュレート
 * ロボットプログラムファイルへの軌道のエクスポート

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

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

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


 * [[Image:Robot_CreateRobot.png|30px]] ロボットを作成: シーンに新しいロボットを挿入します
 * [[Image:Robot_Simulate.png|30px]] 軌道をシミュレート: シミュレーションダイアログを開き、シミュレートを行います
 * [[Image:Robot_Export.png|30px]] 軌道をエクスポート: ロボットプログラムファイルをエクスポートします
 * [[Image:Robot_SetHomePos.png|30px]] 定位置を設定: ロボットの定位置を設定します
 * [[Image:Robot_RestoreHomePos.png|30px]] 定位置に戻す: ロボットを定位置に動かします

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

非パラメトリック

 * [[Image:Robot_CreateTrajectory.png|30px]] 軌道を作成: シーンに新しいロボットを挿入します
 * [[Image:Robot_SetDefaultOrientation.png|30px]] デフォルトの方向を設定: デフォルトで作成される方位通過点を設定します
 * [[Image:Robot_SetDefaultValues.png|30px]] デフォルトの速度パラメーターを設定: 通過点作成時に使用されるデフォルト値を設定します
 * [[Image:Robot_InsertWaypoint.png|30px]] 通過点を挿入: 現在のロボット位置から軌道に通過点を挿入します
 * [[Image:Robot_InsertWaypointPre.png|30px]] 通過点を挿入: 現在のマウス位置から軌道に通過点を挿入します

パラメトリック

 * [[Image:Robot_Edge2Trac.png|30px]] エッジから軌道を作成: エッジを軌道に分解した新しいオブジェクトを挿入します
 * [[Image:Robot_TrajectoryDressUp.png|30px]] 軌道をドレスアップ: 軌道の一つ以上のプロパティを上書きします
 * [[Image:Robot_TrajectoryCompound.png|30px]] 軌道を合成: 複数の単一軌道を合成したものを作成します

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

6軸産業用ロボットを表す基本ロボットクラスRobot6Axisの使用例です. ロボットモジュールはパートモジュールにのみ依存します. その動作にはほとんどの場合は基本的な型であるPlacement、Vector、Matrixで事足ります. 従って必要なのは以下のモジュールだけです： from Robot import * from Part import * from FreeCAD import *

基本的なロボット処理
ロボットを作成. 異なるキネマティックを指定しない限りはPuma560になります. rob = Robot6Axis print rob

軸とTCPにアクセスします. 軸は1から6まであり、単位は度（°）です. Start = rob.Tcp print Start print rob.Axis1

move the first axis of the robot:

the Tcp has changed (forward kinematic)

move the robot back to start position (reverse kinematic):

the same with axis 2:

Waypoints:

generate more. The trajectory always finds automatically a unique name for the waypoints

create a trajectory

see a list of all waypoints:

ドキュメントを使った処理
ロボットドキュメントオブジェクトを使った処理 まずアクティブなドキュメントにロボットを作成します if(App.activeDocument == None):App.newDocument

App.activeDocument.addObject("Robot::RobotObject","Robot") 視覚的な表示と運動の記述を定義します（詳細については六軸ロボットとロボットシミュレーション用のVRMLの準備を見てください） 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からの移動量） App.activeDocument.Robot.Axis2 = -90 App.activeDocument.Robot.Axis3 = 90

TCP位置を取得 pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp ロボットを動かします pos.move(App.Vector(-10,0,0)) FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos

アクティブなドキュメントに空の軌道オブジェクトを作成 App.activeDocument.addObject("Robot::TrajectoryObject","Trajectory") 軌道を取得 t = App.activeDocument.Trajectory.Trajectory 軌道にロボットの実際のTCP位置を追加 StartTcp = App.activeDocument.Robot.Tcp t.insertWaypoints(StartTcp) App.activeDocument.Trajectory.Trajectory = t print App.activeDocument.Trajectory.Trajectory

さらにいくつかの通過点と開始点、終了点を挿入 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

シミュレーション
作っておきます..... ;-)

軌道のエクスポート
Pythonを使って軌道をエクスポートすることができます. つまり全ての制御キャビネット型にポストプロセッサー用のPythonモジュールがあるということです. 以下はKukaポストプロセッサーの書き方の詳細です. from KukaExporter import ExportCompactSub ExportCompactSub(App.activeDocument.Robot,App.activeDocument.Trajectory,'D:/Temp/TestOut.src')

こちらはどのように処理を行うかについてです. 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))

Define the visual representation and the kinematic definition (see Robot 6-Axis and VRML Preparation for Robot Simulation for details about that)

start positon of the Axis (only that which differ from 0)

retrieve the Tcp position

move the robot

create an empty Trajectory object in the active document

get the Trajectory

add the actual TCP position of the robot to the trajectory

insert some more Waypoints and the start point at the end again:

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

and that's kind of how it's done:

チュートリアル

 * Robot 6-Axis
 * VRMLのロボットシミュレーション準備