画像検査用ノーコードツール MERLICと協働ロボットDobot CR3の連携をしてみましたので実装方法を紹介します。
今回はDobot Controllerに接続したPCにMERLICとDobotSCStudioをインストールし、本PCにて連携します。
MERLICとは
MERLICはMVTec社が開発した、画像検査ライブラリHALCONの基本機能を実装したノーコード画像処理ツールです。
プログラミングは一切不要、直感的な操作だけで画像処理システムを構築できます。
1.検査条件の設定と画面の作成 ーーMERLIC Creator
ヘルプから参照できるマニュアルやサンプルをもとに検査条件を設定します。今回はDobotとの連携に関係する部位のみ説明します。
ロボットコントローラー側から入力したいパラメータがあれば登録します。
入力変数の上にマウスを置き右クリックで表示されるウィンドウから[MVAppパラメータに追加…]を選択。
ロボットコントローラーに出力したい結果は、出力変数の上にマウスを置き右クリックで表示されるウィンドウから[MVApp結果…]を追加を選択。
上記を設定後レシピの保存をします。
2-1. レシピの設定 ーーMERLIC RTE Setup
MERLIC RTEを立ち上げ、レシピのタブを選択します。
[インポート]ボタンをクリックし、レシピを読み込みます。
レシピが1つの場合は下部にあるトグルスイッチをデフォルトにしてください。
2-2. プラグインの設定 ーーMERLIC RTE Setup
MERLIC RTEを立ち上げ、通信のタブを選択します。
[プラグインインスタンスの追加]をクリックし、表示されたリストから【action-sender】と【event-logger】を追加します。
【action-sender】と【event-logger】を[プラグインの起動]ボタンより起動します。
【action-sender】のポート名は変更する必要があれば変更してください。
(デフォルトは65432)
入力パラメータが必要な場合、検査結果出力が必要な場合はプラグイン用のソースコードを変更しビルドしなおす必要がありますので、下記リンク先を参考にしてください。
3. DobotSCStudioでのロボット動作プログラムの記述
DobotSCStudioを立ち上げ、Scriptを選択し動作プログラムを作成します。
MERLICへの指令については下記コードを参考にしてください。
クライアントとしてTCP接続設定を実施。
err, client = TCPCreate(false, "192.168.5.1", 65432)
クライアントとして接続を確立する。
err = TCPStart(server, 100)
コマンドを送信する(クライアント側)。
-- 画像検査を開始する
TCPWrite(client, {0x42,0x04,0x00,0x00,0x00,0x00})
サーバーとしてTCP接続設定を実施。
err, server = TCPCreate(true, "192.168.5.10", 50001)
サーバーとして接続を確立する。
err = TCPStart(server, 0)
データを受信する。
err, ref = TCPRead(socket_srv,0,"string")
以下に一連の流れを記述したサンプルコードを示します。
【注意】’23年5月時点TCPRead
が正しく機能せず、ref
に変数が与えられないため、検査結果についてはファイルのやりとりで行う必要があります。
-- Version: Lua 5.3.5
-- This thread is the main thread and can call any commands.
-- ロボット移動
-- MoveJ(P1)
-- Sleep(20)
local err = 1 -- TCP処理の成否判定
local client -- TCPクライアント側ソケット
local server -- TCPサーバー側ソケット
local recipe_id = 1 -- レシピID
local param = 0 -- 画像検査パラメータ
--クライアントとしてTCP接続設定
err, client = TCPCreate(false, "192.168.5.1", 65432)
if err== 1 then
print("Client setting err!")
end
--サーバーとしてTCP接続設定
err, server = TCPCreate(true, "192.168.5.10", 50001)
if err == 1 then
print("Server setting err!")
end
err = TCPStart(server, 0)
if err == 1 then
print ("Server connecting err!")
end
err = TCPStart(client, 0)
if err == 0 then
Sleep(50)
--レシピIDの設定
TCPWrite(client, {0x42,0x02,recipe_id,0x00,0x00,0x00})
--画像検査開始 注)今回はパラメータは byte型データとしている
TCPWrite(client, {0x42,0x04,param,0x00,0x00,0x00})
--画像検査結果の受信
err, ref = TCPRead(socket_srv,0,"string")
if err == 0 then
-- 検査結果の処理をここにかく
end
end
TCPDestroy(client)
TCPDestroy(socket_svr)
4. 画像検査時 ーー MERLIC RTE Setup
MERLIC RTE Setupをクリックしアプリケーションを立ち上げ、[画像ソース]タブを選択し、MERLIC RTEを起動する。
しばらくするとコマンドプロンプトと画像検査画面(Frontend)が立ち上がります。
コマンドプロンプトが立ち上がれば準備完了です。ロボット動作プログラムの起動で画像検査が行われます。