お問い合わせ

お問い合わせ

カタログダウンロード

カタログ
ダウンロード

戻る
  • 外部カメラ
  • 記事

Smart Vision Moduleを使用したプログラミング

このコースでは、スマートビジョンモジュール (SVM) を使用したプログラミングの例を紹介します。
 

1. はじめに

Doosanロボットでは、物体の位置を映像情報を通じて測定、ロボットの作業指令と連動できる2DビジョンシステムであるSVM (Smart Vision Module) を提供しています。作業対象物体に対して定義されたロボット作業座標を、基準画像と測定画像間のビジョン測定座標変位情報を用いてロボット作業座標を算出します。

2. SVM命令 (DRL)を学ぶ

タスクプログラミング環境 (Task Builder, Task Writer) で以下の命令を使用してビジョンシステムの種類を設定し、通信を接続、タスクをロード、測定された座標値を利用してオフセットされたロボット作業座標を算出することができます。詳しくはプログラミングマニュアルを参照ください。

  • svm_connect (ip=”192.168.137.5”, port=20): SVMの通信を接続します。(デフォルト値)
  • svm_set_job (job_id): 入力されたidに該当するビジョン作業をSVMにロードします。ジョブを追加すると、idは1000から始まり1000単位に増加します。
  • svm_get_robot_pose (job_id): ビジョン作業に設定されたロボットの姿勢情報(ジョイント座標系)を呼び出します。姿勢情報は、ビジョンタスクを実行するためのビジョン測定位置として使用されます。戻り値は成功したときのロボットのジョイント座標情報です。
  • svm_get_vision_info (job_id): 入力されたビジョン作業に該当する測定命令を遂行します。Workcell Managerを通じてビジョン作業の測定命令の詳細情報を前もって入力しなければなりません。
  • svm_get_variable (tool_id, var_type): 物体検出/測定に成功した場合(戻り値 ‘1’)、検出/測定データを呼び出します。読み込むデータのツールidとデータタイプを入力します。 tool_idはjob_id番号から1ずつ増加します。戻り値は Position tool:POSX_TYPEの場合は物体の位置。Presence tool:INSP_TYPEの場合は有無検査の結果です。
  • svm_get_offset_pos (posx_robot_init, job_id, tool_id): ユーザーが入力したロボット作業座標情報に、ビジョン測定結果を反映したロボット作業座標情報を呼び出します。戻り値は、ビジョン測定結果を反映したロボット作業座標情報である「posx」です。
  • svm_set_init_pos_data (Id_list, Pos_list): ビジョンガイダンス作業を行う対象物の初期id_listとposx_list情報を入力します。
  • svm_get_offset_pos (posx_robot_init, job_id, tool_id) 設定を先に行う必要があります。

以下は、SVM命令の統合例です。詳しくはプログラミングマニュアルを参照ください。

例)
svm_connect(ip=”192.168.137.5”, port=20)#SVMに接続します。
vision_test=1000#ビジョンジョブIDを設定します。
svm_set_job(vision_test)#ジョブをロードします。
shoot_pos=svm_get_robot_pose(vision_test)#目標タスクのビジョン測定位置に移動します。
movej(shoot_pos,v=200,a=100)
count=svm_get_vision_info(vision_test)#カウントで検出されたオブジェクトの数を返します。
tp_popup("{0}".format(count))#結果を確認します。
pos_result=svm_get_variable(vision_test,POSX_TYPE)#測定された位置を pos_result として返します。
tp_popup("{0}".format(pos_result))#結果を確認します。

3. プログラミング例

Task BuilderとTask Writerを使用してビジョン命令を追加し、把持/設置するだけでなく、積み上げ (Stacking) など様々な作業を行うことができます。プログラミングの前に、SVMが事前にキャリブレーションされている必要があります。

3.1 Task Builderによるプログラミング

エンドエフェクタメニューで使用したいグリッパーを設定します。

Visionコマンドを追加し、PickコマンドをVisionコマンドサブに属するようにタスクリストを作成します。 (Vision とVision Endの間にPickを追加します。)Pickのプロパティで必要な条件を設定します。

ビジョン作業(変数)を選択します。(事前にWorkcell Managerで作成したビジョン作業を選択できます。)詳しくは「How to Smart Vision Moduleの接続と基本設定」もしくはリファレンスマニュアルをご参照ください。

「ビジョン測定位置に移動」を有効にして、移動ボタンを押し、ロボットを測定位置に移動させます。

※「ビジョン測定位置に移動」を使用するには、ワークセルマネージャでキャリブレーションが必要です。キャリブレーションを行わないと、目的の位置に移動できません。

青丸のボタンを押し、その後黄丸のボタンを押すとWorkcell Managerで登録したビジョン作業に基づき、オブジェクトを検出します。

3.2 Task Writerによるプログラミング

Visionコマンドをクリックし、プロパティでビジョン作業を選択し、ビジョン測定位置に移動をアクティブにした後、移動を押してビジョン測定位置に移動します。

オブジェクトを画面の中央に配置し、青丸ボタンを押したあと、黄丸ボタンを押します。測定結果は変数形式で保存されます。

リスタートの回数を入力します。 0~3の間で入力可能で、測定失敗時1秒後に入力した回数だけ再測定します。最終失敗時に、対処方法としてスキップとストップを選択できます。

タスクリストで、VisionとEnd Visionの間にMove Lを追加します。タスク座標系を使用するすべてのモーションが利用可能であり、ビジョン作業失敗時にはこのMove Lは実行されません。ビジョン検出成功時、移動する位置をポーズ保存ボタンを使って保存します。

ビジョン測定位置に移動を有効にして変数を選択します。ビジョン作業(変数)を選択します。(事前にWorkcell Managerで作成したビジョン作業を選択できます。)詳しくはHow toのSmart Vision Moduleの接続と基本設定」もしくはリファレンスマニュアルをご参照ください。

「ビジョン測定位置に移動」を有効にして、移動ボタンを押し、ロボットを測定位置に移動させます。無効にすると、通常のMove Lと同じ動作をしますのでご注意ください。

4. まとめ

このコースでは、Doosanロボットが提供するSVMを使用したプログラミング方法について学びました。ビジョン命令 (DRL) を使用したり、Task Bulider、Task Writerを使用して、把持/設置などの作業を簡単にプログラムできます。より詳細な使用方法は、 リファレンスマニュアル/プログラミングマニュアル を参照してください。

5. 参考資料

※本資料に掲載されている全ての内容および全てのデザインは、Doosan Roboticsが著作権および知的財産権を有しています。従って、これらをDoosan Roboticsの書面による許可なく使用、複製、または配布することを禁じます。なお、Doosan Roboticsの特許権等を不正に使用、改変した場合、その責任はすべてお客様にあることをご了承ください。

page top