
概要 📖 – レーザースキャナーによる Blob トラッキング
Leuze ROD4 CHOPは、Leuze ROD4 レーザースキャナーから座標データを受信し、Raw Data または Blob Tracking として出力する CHOPです。ネットワーク経由でスキャナーと接続し、検出した点群を最大 N 個の Blob として ID 付きで追跡します。
主な用途 🎯
- Leuze ROD4 レーザースキャナーからの座標データ取得
- Raw Data モードでの 529 サンプル X/Y 座標ストリーム取得
- Blob Tracking モードでの複数物体のリアルタイム追跡
- インスタレーションでの来場者位置検出
- 境界ボックスや距離による検出領域の制限
データフロー 🔄
入力: ROD4 スキャナー(ネットワーク経由)
↓
プロトコル選択(Binary / ASCII-Remote)
↓
Raw Data / Blob Tracking 解析
↓
Area of Interest によるフィルタ
↓
出力: 座標チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
ROD4 Page 📡
接続パラメータ 🔌
Active .active ✅
– オンにすると CHOP がスキャナーから情報を受信
– オフではネットワーク接続が切断され、更新は行われません
Network Address .netaddress 🌐
– ROD4 スキャナーの IP アドレス
– スキャナー側の設定値と一致させる必要があります
Network Port .port 🔢
– スキャナーのネットワークポート
– デバイス側で開いているポート番号を指定
ROD4 Protocol .rod4porotocol 🎛️
使用するプロトコルを選択。RODplussoft 設定ユーティリティでデバイスに設定したプロトコルと一致させる必要があります
| 項目 | 内部名 | 説明 |
|---|---|---|
| Binary ROD4 compatible | .binary |
バイナリ ROD4 互換プロトコル |
| ROD4plus ASCII-Remote | .ascii |
ROD4plus ASCII リモートプロトコル |
※ 注意: 間違ったプロトコルを選択しても何らかのデータを受信する場合がありますが、データはランダムで不正なものになります。
Input Coordinate .inputcoordinate 📐
ROD4plus ASCII-Remote プロトコル使用時に有効。Polar または Cartesian の入力座標系を指定。RODplussoft でデバイスに設定した座標系と一致させる必要があります
| 項目 | 内部名 | 説明 |
|---|---|---|
| Polar | .polar |
極座標系(角度と距離) |
| Cartesian | .cartesian |
直交座標系(X と Y) |
Output Mode .outputmode 📊
出力チャンネルを Raw Data モードまたは Blob Tracking モードのいずれかに切り替え。下記の Blob 関連パラメータは Blob Tracking モード時のみ有効
| 項目 | 内部名 | 説明 |
|---|---|---|
| Raw Data | .rawdata |
529 サンプル長の CHOP として、スキャナーで測定された全ポイントの X/Y 位置(メートル単位)を出力 |
| Blob Tracking | .blobtracking |
Raw Data を解析し、近接する点を Blob として束ね、ユニーク ID を付与 |
Blob Tracking パラメータ 🎯
Max Blobs .maxblobs 🔢
– 追跡可能な Blob の最大数
– 上限を超えると追加の Blob は無視されます
Max Point Distance in Blob .maxpointdistance 📏
– スキャナーで測定された 2 点間がこの距離以下なら同一 Blob とみなす(メートル単位)
– 値を大きくすると点群がまとまりやすく、小さくすると Blob が分離しやすくなります
Max Blob Movement .maxblobmovement 🔄
– 連続フレーム間で同じ Blob とみなされる最大移動距離(メートル単位)
– 高速移動する物体を追跡する場合は値を大きく設定
Area of Interest .areaofinterest 🗺️
Blob を追跡する領域を制限するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
制限なし。スキャン範囲全体で Blob を追跡 |
| Distance Based | .distancebased |
スキャナーから指定距離以内でのみ Blob を追跡 |
| Bounding Box | .boundingbox |
指定した境界ボックス内でのみ Blob を追跡 |
領域制限パラメータ 📦
Max Distance .maxdistance 📏
– Area of Interest が Distance Based のときの最大追跡距離
– この距離より遠い Blob は追跡対象外
Lower Left Corner .lowerleft 📍
– Area of Interest が Bounding Box のときの境界ボックス左下隅
– X / Y 座標で指定
Upper Right Corner .upperright 📍
– Area of Interest が Bounding Box のときの境界ボックス右上隅
– X / Y 座標で指定
Allow Movement Outside Area .allowmovementoutside ↔️
– オン: Area of Interest 内で検出された Blob が領域外へ移動しても追跡を継続
– オフ: 領域外へ出た時点で追跡停止
Bounding Box Mask TOP .boundingboxmask 🎭
– Area of Interest が Bounding Box のときに使用するマスク TOP
– 非ゼロ値のピクセルが領域内、(0,0,0) のピクセルが領域外として扱われます
– TOP の解像度・アスペクトに関係なく境界ボックスにストレッチされます
Rotate Incoming Coordinates .rotate 🔃
– 受信した座標を z 軸(垂直軸)周りに回転
– tx / ty の値が回転して扱われます
Common Page 🔧
Time Slice .timeslice ⏱️
Time Slice モードの強制設定:
- オン: チャンネルを「タイムスライス」モードに強制
- タイムスライス: 前回のクックフレームから現在のクックフレームまでの時間
Scope .scope 🎯
影響を受けるチャンネルの絞り込み:
- Scope 文字列: 影響を受けるチャンネルを指定する文字列
- パターンマッチング:
*や[1-10]等のパターンが使用可能
Sample Rate Match .srselect ⚡
複数の入力 CHOP のサンプルレートが異なる場合の処理方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Resample At First Input’s Rate | .first |
最初の入力のレートで他をリサンプル |
| Resample At Maximum Rate | .max |
最高サンプルレートでリサンプル |
| Resample At Minimum Rate | .min |
最低サンプルレートでリサンプル |
| Error If Rates Differ | .err |
レート不一致でエラー |
Export Method .exportmethod 📤
CHOP チャンネルをパラメータに接続する方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| DAT Table by Index | .datindex |
DAT テーブルのインデックスでチャンネルとパラメータを対応付け |
| DAT Table by Name | .datname |
DAT テーブルの行名でチャンネルとパラメータを対応付け |
| Channel Name is Path:Parameter | .autoname |
チャンネル名を `path:parameter` 形式で記述し直接対応付け |
Export Root .autoexportroot 🌳
Channel Name is Path:Parameter モード時のパス基点:
- Export Root パス:
autonameモードでチャンネル名のパス部分を相対化する基点 OP のパス
Export Table .exporttable 📋
DAT Table エクスポート方式での参照 DAT:
- Export Table DAT:
datindex/datnameモード時に参照する DAT のパス
Rename from .commonrenamefrom 🔤
リネーム対象チャンネルのパターン:
- Rename from パターン: リネーム対象とするチャンネル名のパターンマッチング文字列
Rename to .commonrenameto 🔁
リネーム後の置換パターン:
- Rename to パターン: Rename from にマッチしたチャンネルの新しい名前パターン (デフォルトはリネームなし)
実践アイデア 💡
Example 1: インスタレーションでの来場者位置検出 🚶
Leuze ROD4 CHOP (Blob Tracking) → Select CHOP (tx/ty) → Geometry COMP
- Leuze ROD4 CHOP の Active をオンに、Network Address にスキャナーの IP を設定
- Output Mode を「Blob Tracking」、Max Blobs を想定来場者数に合わせて設定
- Area of Interest を「Bounding Box」にして展示エリアの座標を Lower Left / Upper Right で指定
- 出力された tx / ty チャンネルを Geometry COMP の位置にマッピング
Example 2: Raw Data モードでの点群可視化 📊
Leuze ROD4 CHOP (Raw Data) → CHOP to SOP → Render TOP
- Output Mode を「Raw Data」に切り替えて 529 サンプルの X/Y 座標を取得
- CHOP to SOP で点群ジオメトリに変換
- Render TOP で点群をリアルタイム可視化
- スキャナーが測定する全範囲のポイントクラウドを観察可能
Example 3: 距離制限による近距離 Blob のみ追跡 🎯
Leuze ROD4 CHOP (Distance Based) → Logic CHOP → Trigger CHOP
- Area of Interest を「Distance Based」に設定
- Max Distance に 3.0(メートル)を設定して近距離のみ検出
- Logic CHOP で Blob の存在を判定
- Trigger CHOP で接近イベントとして発火
関連オペレータ 🔗
類似機能OP 🔍
- Kinect CHOP — Kinect センサーから骨格・位置データを取得
- RealSense CHOP — Intel RealSense デバイスから深度・トラッキング情報を取得
組み合わせ推奨OP 🔄
- Filter CHOP — Blob 座標のジッタを時間方向にスムージング
- Math CHOP — 座標の正規化・スケーリング・座標系変換
- Logic CHOP — Blob の存在判定・領域進入判定
- Trigger CHOP — Blob 検出イベントから ADSR エンベロープを起動
- Select CHOP — 特定 Blob の tx / ty チャンネルのみ抽出
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Leuze ROD4 CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間(ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: スキャナーから何もデータが受信できない
✅ Solution:
- Active がオンになっているか確認
- Network Address / Network Port がスキャナー側の設定と一致しているか確認
- ROD4 Protocol が RODplussoft で設定したプロトコルと一致しているか確認
❌ Problem: データは受信するが値がランダム・不正
✅ Solution:
- ROD4 Protocol の選択ミスの可能性が高い、Binary / ASCII-Remote を切り替えて確認
- ASCII-Remote 使用時は Input Coordinate(Polar / Cartesian)もスキャナー設定と一致させる
- RODplussoft 設定ユーティリティでデバイス側の現在のプロトコル・座標系を再確認
❌ Problem: Blob が頻繁に分裂・統合する
✅ Solution:
- Max Point Distance in Blob を大きくして点群がまとまりやすくする
- Max Blob Movement を大きくして高速移動でも同一 Blob として追跡
- 後段の Filter CHOP で座標のジッタをスムージング
❌ Problem: パフォーマンスが重い
✅ Solution:
- Bounding Box Mask TOP が毎フレーム cook している場合は Lock 等で固定
- Max Blobs を実際に必要な数まで下げる
- Area of Interest で検出領域を絞り込み、不要範囲を除外
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

