MERLICとDobotとの連携

画像検査用ノーコードツール MERLICと協働ロボットDobot CR3の連携をしてみましたので実装方法を紹介します。

今回はDobot Controllerに接続したPCにMERLICDobotSCStudioをインストールし、本PCにて連携します。

MERLICとは

MERLICはMVTec社が開発した、画像検査ライブラリHALCONの基本機能を実装したノーコード画像処理ツールです。
プログラミングは一切不要、直感的な操作だけで画像処理システムを構築できます。

MERLIC設定画像

MERLIC販売代理店 LINX様サイト


1.検査条件の設定と画面の作成 ーーMERLIC Creator

ヘルプから参照できるマニュアルやサンプルをもとに検査条件を設定します。今回はDobotとの連携に関係する部位のみ説明します。

ロボットコントローラー側から入力したいパラメータがあれば登録します。
入力変数の上にマウスを置き右クリックで表示されるウィンドウから[MVAppパラメータに追加…]を選択。

MERLIC設定画像

ロボットコントローラーに出力したい結果は、出力変数の上にマウスを置き右クリックで表示されるウィンドウから[MVApp結果…]を追加を選択。

上記を設定後レシピの保存をします。

MERLIC設定画像

2-1. レシピの設定 ーーMERLIC RTE Setup

MERLIC RTEを立ち上げ、レシピのタブを選択します。
[インポート]ボタンをクリックし、レシピを読み込みます。

レシピが1つの場合は下部にあるトグルスイッチをデフォルトにしてください。

MERLIC設定画像

2-2. プラグインの設定 ーーMERLIC RTE Setup

MERLIC RTEを立ち上げ、通信のタブを選択します。
[プラグインインスタンスの追加]をクリックし、表示されたリストから【action-sender】【event-logger】を追加します。

MERLIC設定画像

【action-sender】と【event-logger】を[プラグインの起動]ボタンより起動します。

【action-sender】のポート名は変更する必要があれば変更してください。
(デフォルトは65432)

MERLIC設定画像

入力パラメータが必要な場合、検査結果出力が必要な場合はプラグイン用のソースコードを変更しビルドしなおす必要がありますので、下記リンク先を参考にしてください。


3. DobotSCStudioでのロボット動作プログラムの記述

DobotSCStudioを立ち上げ、Scriptを選択し動作プログラムを作成します。

MERLICへの指令については下記コードを参考にしてください。

DobotSCStudio設定画像

クライアントとして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)が立ち上がります。

[通信]タブを選択し、MERLIC Communicatorを起動する。

コマンドプロンプトが立ち上がれば準備完了です。ロボット動作プログラムの起動で画像検査が行われます。