<< 前へ        次へ >>

ID : 2836

TrackPrepareData

機能

ビジョンセンサが検出した複数のワークデータのうち、トラッキングバッファに既に存在するデータを削除し、下流側のデータから順に並べ直したデータセットを返します。
これは、TrackSetVisionでトラッキングバッファにセットする前に、重複データ削除と並び替えを行う関数で、戻り値が、そのままTrackSetVisionの引数になります。

このコマンドはVer.2.1.*から有効です。

構文

TrackPrepareData (コンベア番号, ワーク検出数, センサ検出座標 [, ユーザデータ [, 属性データ] ])

指定項目

コンベア番号

使用するコンベア番号(1~16)を整数型データで指定します。

ワーク検出数

TrackSetVisionのワーク検出数にセットする値と同じです。1度の実行でトラッキングバッファに保存するワークの個数を、整数型データで指定します。
負の値を設定すると、I/Oからのトリガ入力が不要な内部トリガモードになります。
トラッキングバッファのデータと重複するデータが見つかった場合は、戻り値では、その数を減算(負数の場合は加算)します。

内容
正の値 ビジョンセンサが検出したワーク数を正の値で設定します。
ビジョンセンサからのI/O入力を受けて、コンベアのエンコーダ値が事前に保存されている必要があります。
0 エラー
負の値 内部トリガを基に設定したいワーク数を負の値で設定します。
ビジョンセンサからのI/O入力は不要で、このコマンド実行時のコンベアのエンコーダ値が保存されます。

 

センサ検出座標

TrackSetVisionのセンサ検出座標にセットする値と同じです。ワーク検出数分のビジョンセンサ検出座標を指定します。指定の仕方は以下の3通りです。
トラッキングバッファのデータと重複するデータが見つかった場合は、戻り値では、その座標は削除されます。また、複数のデータの場合は、戻り値では、下流側から並べ直した順になります。

データ型 内容
ベクトル型 ワーク検出数が1個の場合に指定可能です。
バリアント(Variant)型の1次配列 ワーク検出数が1個以上の場合に指定可能です。
配列の各要素は、ベクトル型で設定します。
ベクトル型の1次配列 ワーク検出数が1個以上の場合に指定可能です。
配列の各要素は、ベクトル型で設定します。

 

ユーザデータ

TrackSetVisionのユーザデータにセットする値と同じです。指定の仕方は「TrackSetVison」を参照してください。
省略可能です。省略した場合は"-1"になります。負の値を入れると、省略と同じ扱いになります。
戻り値では、データの並び替えに合わせた値になります。

属性データ

TrackSetVisionの属性データにセットする値と同じです。指定の仕方は「TrackSetVison」を参照してください。
省略可能です。省略した場合は"-1"になります。
戻り値では、データの並び替えに合わせた値になります。

戻り値

項目 内容
ワーク検出数 TrackSetVisionのワーク検出数にセットする値。重複するデータの数を減算してあります。
センサ検出座標 TrackSetVisionのセンサ検出座標にセットする値。重複するデータは削除し、下流側から並べ直した順にセットしています。
ユーザデータ TrackSetVisionのユーザデータにセットする値。データの並び替えに合わせた値がセットされています。
属性データ TrackSetVisionの属性データにセットする値。データの並び替えに合わせた値がセットされています。

指定項目にあわせて、ワーク検出数、センサ検出座標、ユーザデータ、属性データをバリアント(Variant)型で返します。

指定項目 戻り値
ワーク検出数 センサ検出座標 ユーザデータ 属性データ
コンベア番号ワーク検出数センサ検出座標 -1 -1
コンベア番号ワーク検出数センサ検出座標ユーザデータ -1
コンベア番号ワーク検出数センサ検出座標ユーザデータ属性データ

指定したセンサ検出座標が、トラッキングバッファに1個も保存できない場合は「データ数」の値が"0"で、センサ検出座標、ユーザデータ、属性データが"VT_EMPTY"になるバリアント(Variant)型データを返します。

解説

ビジョンセンサが検出した複数のワークデータのうち、トラッキングバッファに既に存在するデータを削除し、下流側のデータから順に並べ直したデータセットを返します。
これは、TrackSetVisionでトラッキングバッファにセットする前に、重複データ削除と並び替えを行う関数で、戻り値が、そのままTrackSetVisionの引数になります。

注意事項

コンベアおよび円形トラッキング専用のコマンドです。

用例

ビジョンセンサが、画像座標"x=100[pixel]", y=10[pixel]"、向き"θ=30[deg]"のワーク1を検出

Dim visPos1 As Variant
visPos1 = Array(100, 10, 30)

ビジョンセンサが、画像座標"x=100[pixel]", y=200[pixel]"、向き"θ=0[deg]"のワーク2を検出

Dim visPos2 As Variant
visPos2 = Array(100, 200, 0)

ビジョンセンサが、画像座標"x=10[pixel]", y=200[pixel]"、向き"θ=45[deg]"のワーク3を検出

Dim visPos3 As Variant
visPos3 = Array(10, 200, 45)

ビジョンセンサで検出した3つのワークでトラッキングバッファの重複チェック

Dim visPreparePos As Variant
visPreparePos = TrackPrepareData (1,3, Array(visPos1, visPos2, visPos3), Array(1, 2, 3), Array(1, 1, 1))

重複していないワークをトラッキングバッファにユーザデータと属性を指定して保存

TrackSetVision 1, visPreparePos (0), visPreparePos (1), visPreparePos (2), visPreparePos (3)

事例

2台のロボットで交互にトラッキングするために、トラッキングバッファに保存するデータのユーザデータを1と2の交互に保存する方法

' センサ検出座標の取得
Dim visPos1 As Variant
visPos1 = Array(100, 10, 30)
Dim visPos2 As Variant
visPos2 = Array(100, 200, 0)
Dim visPos3 As Variant
visPos3 = Array(10, 200, 45)

' トラッキングバッファに重複データがないセンサ検出座標を取得
Dim visPreparePos As Variant
visPreparePos = TrackPrepareData (1,3, Array(visPos1, visPos2, visPos3))

' トラッキングバッファに重複データがないデータ数にあわせてユーザデータを作成
' ユーザが処理を行なう関数をCreateUserDataとして別途定義する
Dim vntUserData As Variant
vntUserData = CreateUserData(visPreparePos (0))

' トラッキングバッファにデータを保存
TrackSetVision 1, visPreparePos (0), visPreparePos (1), vntUserData

' [ユーザ記述]
' ユーザデータを設定する処理
' [out] vntUserData : ユーザデータ
Function CreateUserData( ByVal workNum As Integer ) As Variant

        ' --------ビジョンセンサで検出したワークのユーザデータを設定--------

        CreateUserData= CreateArray(workNum, VT_I4)

End Function

ID : 2836

<< 前へ        次へ >>