Leuze ROD4 CHOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Leuze ROD4 CHOP のレーザースキャナー連携機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – レーザースキャナーによる 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 によるフィルタ

出力: 座標チャンネル

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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 リモートプロトコル

※ 注意: 間違ったプロトコルを選択しても何らかのデータを受信する場合がありますが、データはランダムで不正なものになります。

引用元: 公式 docs

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
  1. Leuze ROD4 CHOP の Active をオンに、Network Address にスキャナーの IP を設定
  2. Output Mode を「Blob Tracking」、Max Blobs を想定来場者数に合わせて設定
  3. Area of Interest を「Bounding Box」にして展示エリアの座標を Lower Left / Upper Right で指定
  4. 出力された tx / ty チャンネルを Geometry COMP の位置にマッピング

Example 2: Raw Data モードでの点群可視化 📊

Leuze ROD4 CHOP (Raw Data) → CHOP to SOP → Render TOP
  1. Output Mode を「Raw Data」に切り替えて 529 サンプルの X/Y 座標を取得
  2. CHOP to SOP で点群ジオメトリに変換
  3. Render TOP で点群をリアルタイム可視化
  4. スキャナーが測定する全範囲のポイントクラウドを観察可能

Example 3: 距離制限による近距離 Blob のみ追跡 🎯

Leuze ROD4 CHOP (Distance Based) → Logic CHOP → Trigger CHOP
  1. Area of Interest を「Distance Based」に設定
  2. Max Distance に 3.0(メートル)を設定して近距離のみ検出
  3. Logic CHOP で Blob の存在を判定
  4. 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、無効時は0
  • export_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 で検出領域を絞り込み、不要範囲を除外

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました