
概要 📖 – ライダー画像を取り込む
Ouster TOPは、Ouster OS シリーズライダーセンサから点群データを UDP で受信し、各ピクセルが 1 サンプルの 2D 画像として出力する TOPです。X / Y / Z 座標、Range、Reflectivity、Signal Photons、Near IR などのセンサ値を R / G / B / A 各チャンネルに自由に割り当て可能で、Azimuth Window によるROI 制限や PTP 1588 同期による複数センサ統合にも対応します。
主な用途 🎯
- Ouster OS シリーズライダーからの点群データのリアルタイム受信
- X / Y / Z 座標を RGBA チャンネルに割り当てた点群イメージの生成
- Range / Reflectivity / Signal Photons / Near IR の各種センサ値のテクスチャ化
- Azimuth Window による関心領域 (ROI) 限定と帯域削減
- PTP 1588 同期による複数センサのフレーム単位整合
- Phase Lock による回転位相同期 (マルチセンサ・特定角度同時計測)
データフロー 🔄
入力: Ouster ライダーセンサ (UDP 受信)
↓
デバイスアドレスとライダーポート / IMU ポートを設定
↓
Scan Mode で水平解像度と回転速度を決定
↓
R / G / B / A 各チャンネルに X / Y / Z / Range / Reflectivity 等を割り当て
↓
出力: 横解像度がポイント数、縦解像度がレーザ本数の 2D 点群イメージ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Connection Page 🔌
接続制御 🔄
Active .active ✅Active (接続有効化) — センサとの通信を ON にします。デバイス設定の変更後はこのトグルを OFF→ON することでセンサ側の設定が反映されます。
Re-Init .reinitialize 🔁Re-Init (再初期化) — センサを手動で再初期化します。ファームウェアエラー復旧やネットワーク切断後の再接続に使います。
ネットワーク設定 🌐
Ouster センサのアドレスと UDP ポートの指定
Device Address .deviceaddress 📡
– Device Address (デバイスアドレス) — Ouster センサの IP アドレスまたはホスト名
– センサ本体上面に印字された os-##### (例: os-991900123456) のシリアル番号からも指定可能
– ホスト名を使う場合は os-991900123456.local 形式で入力 (mDNS 解決が必要)
– IP アドレスは DHCP 割り当て後 ping -4 os-991900123456 で取得可能
Lidar Port .lidarport 🎯Lidar Port (ライダーポート) — 点群データを受信する UDP ポート番号 (デフォルト 7502)。同一マシンで複数センサを動かす場合は重複しない番号を指定します。
IMU Port .imuport 🧭IMU Port (IMU ポート) — センサ内蔵 IMU (慣性計測ユニット) のデータを受信する UDP ポート番号 (デフォルト 7503)。IMU データは Info CHOP 経由で取得できます。
Target Address .targetaddress 🎯Target Address (送信先アドレス) — センサがデータを送る宛先 IP。空欄なら現在マシンのアドレスが使われます。NIC が複数あるマシンや、別マシンへ転送したい場合に明示します。
Scan Mode .scanmode 🌀
Scan Mode (スキャンモード) — 水平解像度と毎秒回転数を設定。垂直解像度はハードウェア固定 (例: OS1-64 なら 64 行)
Scan Mode .scanmode
OS シリーズ機種ごとに対応モードが異なります (例: 512x10Hz / 1024x10Hz / 2048x10Hz / 1024x20Hz)。高解像度ほどデータ量とネットワーク帯域要求が増します。
Operating Mode .opmode ⚡
センサの動作モード
| 項目 | 内部名 | 説明 |
|---|---|---|
| Standby | .standby |
省電力モード (5W)。モーター停止・レーザ発射停止。アイドル時に使用 |
| Normal | .normal |
通常動作モード。スキャン継続 |
※ 注意: Standby から Normal への復帰時、ライダーモーターの起動安定化に数秒かかります。
Azimuth Window .azimuthwindow 🎚️
Azimuth Window (方位角ウィンドウ) — 関心領域 (ROI) をミリ度単位で指定。ウィンドウ外のデータは送信されないため帯域削減に有効
Azimuth Window .azimuthwindow
開始角と終了角をミリ度で指定 (0〜360000 mdeg)。最大ウィンドウサイズは Signal Multiplier 設定によって制限されます。
Signal Multiplier .signalmultiplier 📶
Signal Multiplier (信号倍率) — 信号強度の倍率設定。倍率を上げると最大方位角ウィンドウが狭くなる相反関係
Signal Multiplier .signalmultiplier
倍率が高いほど遠距離検出性能が向上しますが、ウィンドウサイズの上限が下がります (帯域・処理負荷とのトレードオフ)。
Data Format .dataformat 📦
ライダーデータのパケットフォーマット選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Legacy | .legacy |
旧世代パケットフォーマット (互換性維持用) |
| Single Return | .single |
1 サンプルあたり 1 リターンを送信 (標準) |
| Dual Return | .dual |
1 サンプルあたり 2 リターン送信 (雨・霧・透明物体の検出向上、帯域 2 倍) |
| Low Data Rate (Single Return) | .lowrate |
Single Return で帯域削減版 (帯域制限環境向け) |
Red .redchannel 🔴
Red (赤チャンネル) — 出力画像の R チャンネルに割り当てるセンサデータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| X | .x |
ライダー座標 X (横方向, メートル単位) |
| Y | .y |
ライダー座標 Y (奥行き方向) |
| Z | .z |
ライダー座標 Z (高さ方向) |
| Range | .range |
1st リターンのレンジ (センサからの距離, メートル) |
| Range 2 | .range2 |
2nd リターンのレンジ (Dual Return 時のみ有効) |
| Signal Photons | .signal |
1st リターンの信号光子数 (受光強度) |
| Signal Photons 2 | .signal2 |
2nd リターンの信号光子数 (Dual Return 時) |
| Reflectivity | .reflectivity |
1st リターンの反射率 (キャリブレーション済み) |
| Reflectivity 2 | .reflectivity2 |
2nd リターンの反射率 (Dual Return 時) |
| Near IR Photons | .nir |
近赤外背景光の光子数 (環境光の参考値) |
| Flags | .flags |
1st リターンの状態フラグ (ビット情報) |
| Flags 2 | .flags2 |
2nd リターンの状態フラグ |
| Constant 1 | .one |
定数 1 を出力 (チャンネルを使わないとき) |
| Constant 0 | .zero |
定数 0 を出力 |
Green .greenchannel 🟢
Green (緑チャンネル) — 出力画像の G チャンネルに割り当てるセンサデータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| X | .x |
ライダー座標 X (横方向, メートル単位) |
| Y | .y |
ライダー座標 Y (奥行き方向) |
| Z | .z |
ライダー座標 Z (高さ方向) |
| Range | .range |
1st リターンのレンジ (センサからの距離, メートル) |
| Range 2 | .range2 |
2nd リターンのレンジ (Dual Return 時のみ有効) |
| Signal Photons | .signal |
1st リターンの信号光子数 (受光強度) |
| Signal Photons 2 | .signal2 |
2nd リターンの信号光子数 (Dual Return 時) |
| Reflectivity | .reflectivity |
1st リターンの反射率 (キャリブレーション済み) |
| Reflectivity 2 | .reflectivity2 |
2nd リターンの反射率 (Dual Return 時) |
| Near IR Photons | .nir |
近赤外背景光の光子数 (環境光の参考値) |
| Flags | .flags |
1st リターンの状態フラグ (ビット情報) |
| Flags 2 | .flags2 |
2nd リターンの状態フラグ |
| Constant 1 | .one |
定数 1 を出力 (チャンネルを使わないとき) |
| Constant 0 | .zero |
定数 0 を出力 |
Blue .bluechannel 🔵
Blue (青チャンネル) — 出力画像の B チャンネルに割り当てるセンサデータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| X | .x |
ライダー座標 X (横方向, メートル単位) |
| Y | .y |
ライダー座標 Y (奥行き方向) |
| Z | .z |
ライダー座標 Z (高さ方向) |
| Range | .range |
1st リターンのレンジ (センサからの距離, メートル) |
| Range 2 | .range2 |
2nd リターンのレンジ (Dual Return 時のみ有効) |
| Signal Photons | .signal |
1st リターンの信号光子数 (受光強度) |
| Signal Photons 2 | .signal2 |
2nd リターンの信号光子数 (Dual Return 時) |
| Reflectivity | .reflectivity |
1st リターンの反射率 (キャリブレーション済み) |
| Reflectivity 2 | .reflectivity2 |
2nd リターンの反射率 (Dual Return 時) |
| Near IR Photons | .nir |
近赤外背景光の光子数 (環境光の参考値) |
| Flags | .flags |
1st リターンの状態フラグ (ビット情報) |
| Flags 2 | .flags2 |
2nd リターンの状態フラグ |
| Constant 1 | .one |
定数 1 を出力 (チャンネルを使わないとき) |
| Constant 0 | .zero |
定数 0 を出力 |
Alpha .alphachannel ⚪
Alpha (アルファチャンネル) — 出力画像の A チャンネルに割り当てるセンサデータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| X | .x |
ライダー座標 X (横方向, メートル単位) |
| Y | .y |
ライダー座標 Y (奥行き方向) |
| Z | .z |
ライダー座標 Z (高さ方向) |
| Range | .range |
1st リターンのレンジ (センサからの距離, メートル) |
| Range 2 | .range2 |
2nd リターンのレンジ (Dual Return 時のみ有効) |
| Signal Photons | .signal |
1st リターンの信号光子数 (受光強度) |
| Signal Photons 2 | .signal2 |
2nd リターンの信号光子数 (Dual Return 時) |
| Reflectivity | .reflectivity |
1st リターンの反射率 (キャリブレーション済み) |
| Reflectivity 2 | .reflectivity2 |
2nd リターンの反射率 (Dual Return 時) |
| Near IR Photons | .nir |
近赤外背景光の光子数 (環境光の参考値) |
| Flags | .flags |
1st リターンの状態フラグ (ビット情報) |
| Flags 2 | .flags2 |
2nd リターンの状態フラグ |
| Constant 1 | .one |
定数 1 を出力 (チャンネルを使わないとき) |
| Constant 0 | .zero |
定数 0 を出力 |
Timing Page ⏱️
Time Sync Mode .timemode 🕐
Time Sync Mode (タイムシンクモード) — タイムスタンプ生成方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Internal OSC | .internalosc |
センサ内蔵発振器で生成 (デフォルト, 単体運用向け) |
| PTP 1588 | .ptp1588 |
外部 PTP マスタに同期 (複数センサ同期・収録同期向け) |
※ 注意: PTP 1588 同期にはネットワーク機器側の PTP 対応が必要です (PTP 対応スイッチ等)。
Sync Pulse In Polarity .pulseinpolarity 📥
Sync Pulse In Polarity (同期パルス入力極性) — SYNC_PULSE_IN 信号の極性
| 項目 | 内部名 | 説明 |
|---|---|---|
| Active Low | .activelow |
Low (0V) でアクティブ |
| Active High | .activehigh |
High (3.3V/5V) でアクティブ |
Multipurpose IO Mode .iomode 🔀
Multipurpose IO Mode (多目的 IO モード) — SYNC_PULSE_OUT 信号の用途
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
未使用 (デフォルト) |
| Input NMEA | .inputnmea |
NMEA $GPRMC UART 入力を受け付ける (GPS 同期向け) |
| Output Internal OSC | .outputinternalosc |
内蔵発振器からパルス出力 |
| Output PTP 1588 | .outputptp1588 |
PTP 1588 同期信号からパルス出力 |
| Output Encoder Angle | .outputangle |
エンコーダ角度に基づくパルス出力 (特定角度トリガー) |
Sync Pulse Out Polarity .pulseoutpolarity 📤
Sync Pulse Out Polarity (同期パルス出力極性)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Active Low | .activelow |
Low でアクティブ |
| Active High | .activehigh |
High でアクティブ |
パルス出力パラメータ 📏
Output Internal OSC / Output PTP 1588 時のパルス波形設定
Sync Pulse Out Frequency .pulseoutfrequency 📈Sync Pulse Out Frequency (出力パルス周波数) — Hz 単位で指定 (0 より大きい値)。
Sync Pulse Out Angle .pulseoutangle 🎯Sync Pulse Out Angle (出力パルス角度) — Output Encoder Angle 時、パルス出力するエンコーダ角度 (0〜360 度未満)。
Sync Pulse Out Width .pulseoutwidth 📐Sync Pulse Out Width (出力パルス幅) — 出力パルスの幅をミリ秒で指定。
NMEA In Polarity .nmeainpolarity 📡
NMEA In Polarity (NMEA 入力極性) — NMEA UART 入力 $GPRMC メッセージの極性
| 項目 | 内部名 | 説明 |
|---|---|---|
| Active Low | .activelow |
Low でアクティブ |
| Active High | .activehigh |
High でアクティブ |
NMEA 制御 🛰️
NMEA GPS 同期の付加設定
NMEA Ignore Valid Char .nmeaignorevalidchar 🚦NMEA Ignore Valid Char (Valid キャラ無視) — オフなら有効キャラが立っていない $GPRMC メッセージを無視。オンなら有効キャラに関わらず時刻同期に使用します。
NMEA Leap Seconds .nmealeapseconds 🔢NMEA Leap Seconds (うるう秒) — UDP タイムスタンプから 1970-01-01 起点秒を計算する際に加算する整数うるう秒。Unix エポック時刻にしたい場合は 0 を指定します。
NMEA Baud Rate .nmeabaudrate ⚙️
NMEA Baud Rate (NMEA ボーレート) — 入力 NMEA UART のボーレート
| 項目 | 内部名 | 説明 |
|---|---|---|
| Baud 9600 | .baud9600 |
9600 bps (標準 GPS モジュール向け) |
| Baud 115200 | .baud115200 |
115200 bps (高速 GPS モジュール向け) |
Phase Lock 🔗
回転位相のロック制御
Phase Lock .phaselock 🔒Phase Lock (位相ロック) — 有効化すると入力パルスを基準にセンサの回転位相を同期します。複数センサで特定角度を同時に計測したいときに使用します。
Phase Lock Offset .phaselockoffset 🎯Phase Lock Offset (位相ロックオフセット) — 入力パルス時に同期する角度 (度単位)。複数センサで異なる角度に同期させたい場合に個別設定します。
Common Page 🔧
Output Resolution .outputresolution 🖼️
出力解像度の決定方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP の解像度をそのまま継承 |
| Eighth | .eighth |
入力解像度の 1/8 |
| Quarter | .quarter |
入力解像度の 1/4 |
| Half | .half |
入力解像度の 1/2 |
| 2X | .2x |
入力解像度の 2 倍 |
| 4X | .4x |
入力解像度の 4 倍 |
| 8X | .8x |
入力解像度の 8 倍 |
| Fit Resolution | .fit |
指定解像度に縦横比を保持して収める |
| Limit Resolution | .limit |
指定解像度を上限としてクランプ |
| Custom Resolution | .custom |
Resolution パラメータで任意指定 |
Resolution .resolution 📐
カスタム解像度の幅・高さ指定 (Output Resolution = Custom 等の時のみ有効):
- Resolution W: 出力幅 (ピクセル単位)。
Output ResolutionがCustom Resolution/Fit Resolution/Limit Resolutionの時に有効 - Resolution H: 出力高 (ピクセル単位)。同上
Resolution Menu .resmenu 📋
よく使う解像度プリセットのドロップダウン:
- Resolution Menu: NTSC / PAL / HDTV 720 / HDTV 1080 / 4K UHD 等のプリセットから選択すると
Resolution W/Resolution Hが自動セットされる
Use Global Res Multiplier .resmult 🔢
プロジェクト全体の解像度倍率の適用:
- Use Global Res Multiplier: Project Settings の Global Resolution Multiplier をこの TOP に適用するかどうか。プロトタイプを低解像度で動かしつつ最終出力で一括フル解像度化する運用に便利
Output Aspect .outputaspect 📏
出力アスペクト比の決定方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP のアスペクトを継承 (伝播事故の元、非推奨) |
| Resolution | .resolution |
解像度から自動導出 (推奨デフォルト) |
| Custom Aspect | .custom |
Aspect1 / Aspect2 で手動指定 |
Aspect .aspect 📐
カスタムアスペクト比の指定 (Output Aspect = Custom Aspect の時のみ有効):
- Aspect1: 横方向アスペクト値 (
Output Aspect= Custom Aspect の時のみ有効) - Aspect2: 縦方向アスペクト値 (同上)
Input Smoothness .inputfiltertype 🎚️
入力テクスチャのサンプリング方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Nearest Pixel | .nearest |
最近傍ピクセルサンプリング (ピクセルアート向け、ジャギーが残る) |
| Interpolate Pixels | .linear |
バイリニア補間 (滑らか、デフォルト) |
| Mipmap Pixels | .mipmap |
ミップマップ補間 (縮小時のモアレ抑制、わずかにコスト高) |
Fill Viewer .fillmode 🖥️
ビューア内でのテクスチャの収め方
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP の Fill Viewer 設定を継承 |
| Fill | .fill |
ビューアいっぱいに引き伸ばす (アスペクト無視) |
| Fit Horizontal | .width |
横幅に合わせて収める (上下に余白) |
| Fit Vertical | .height |
縦幅に合わせて収める (左右に余白) |
| Fit Best | .best |
アスペクト保持で内側に収まる最大サイズ |
| Fit Outside | .outside |
アスペクト保持で外側まで覆う最小サイズ (はみ出しあり) |
| Native Resolution | .nativeres |
テクスチャのネイティブ解像度のまま等倍表示 |
Viewer Smoothness .filtertype 🎛️
ビューア表示時のサンプリング方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Nearest Pixel | .nearest |
最近傍ピクセルサンプリング (ピクセル単位での確認向け) |
| Interpolate Pixels | .linear |
バイリニア補間 (滑らか、デフォルト) |
| Mipmap Pixels | .mipmap |
ミップマップ補間 (縮小ビュー時のモアレ抑制) |
Passes .npasses 🔁
オペレータの反復実行回数:
- Passes: TOP の処理を何パス繰り返すかの整数値。前回パスの結果が次回パスの入力になる。ブラー反復やフィードバック処理に利用
Channel Mask .chanmask 🎨
処理対象のチャンネルマスク (R/G/B/A 個別トグル):
- Channel Mask:
R/G/B/A各チャンネルのオン/オフトグル。オフのチャンネルは TOP の処理を受けず入力値がそのまま通過
Pixel Format .format 🎨
出力テクスチャのピクセルフォーマット (ビット深度・チャンネル構成)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP のフォーマットを継承 |
| 8-bit fixed (RGBA) | .rgba8fixed |
標準 8 ビット固定小数 RGBA (デフォルト、軽量) |
| sRGB 8-bit fixed (RGBA) | .srgba8fixed |
sRGB ガンマ補正済 8 ビット RGBA |
| 16-bit float (RGBA) | .rgba16float |
16 ビット浮動小数 RGBA (HDR・中間処理向け) |
| 32-bit float (RGBA) | .rgba32float |
32 ビット浮動小数 RGBA (最高精度、メモリ大) |
| 10-bit RGB with 2-bit Alpha | .rgb10a2fixed |
10-10-10-2 ビット固定小数 (バンディング抑制) |
| 16-bit fixed (RGBA) | .rgba16fixed |
16 ビット固定小数 RGBA |
| 11-bit float (RGB) | .rgb11float |
11-11-10 ビット浮動小数 RGB (アルファなし、HDR 軽量) |
| 16-bit float (RGB) | .rgb16float |
16 ビット浮動小数 RGB (アルファなし) |
| 32-bit float (RGB) | .rgb32float |
32 ビット浮動小数 RGB (アルファなし) |
| 8-bit fixed (Mono) | .mono8fixed |
8 ビット固定小数モノクロ |
| 16-bit fixed (Mono) | .mono16fixed |
16 ビット固定小数モノクロ |
| 16-bit float (Mono) | .mono16float |
16 ビット浮動小数モノクロ |
| 32-bit float (Mono) | .mono32float |
32 ビット浮動小数モノクロ |
| 8-bit fixed (RG) | .rg8fixed |
8 ビット固定小数 R+G 2 チャンネル |
| 16-bit fixed (RG) | .rg16fixed |
16 ビット固定小数 R+G |
| 16-bit float (RG) | .rg16float |
16 ビット浮動小数 R+G |
| 32-bit float (RG) | .rg32float |
32 ビット浮動小数 R+G |
| 8-bit fixed (A) | .a8fixed |
8 ビット固定小数アルファ単体 |
| 16-bit fixed (A) | .a16fixed |
16 ビット固定小数アルファ単体 |
| 16-bit float (A) | .a16float |
16 ビット浮動小数アルファ単体 |
| 32-bit float (A) | .a32float |
32 ビット浮動小数アルファ単体 |
| 8-bit fixed (Mono+Alpha) | .monoalpha8fixed |
8 ビット固定小数モノクロ+アルファ |
| 16-bit fixed (Mono+Alpha) | .monoalpha16fixed |
16 ビット固定小数モノクロ+アルファ |
| 16-bit float (Mono+Alpha) | .monoalpha16float |
16 ビット浮動小数モノクロ+アルファ |
| 32-bit float (Mono+Alpha) | .monoalpha32float |
32 ビット浮動小数モノクロ+アルファ |
実践アイデア 💡
Example 1: ライダー点群を取得 📡
Ouster TOP (Active=on) → Reorder TOP → TOP to CHOP
OS1-64 等の Ouster センサに接続し、X/Y/Z 座標をそれぞれ R/G/B チャンネルに割り当てて点群イメージを取得する最小構成のフロー。最初の接続確認とチャンネル割り当て検証に使う。
- Ouster TOP を作成し
Device Addressにセンサ IP (例:192.168.1.45) を入力 Lidar Port=7502/IMU Port=7503を確認 (デフォルト値)Scan Modeをセンサ対応モード (例:1024x10Hz) に設定Red=X,Green=Y,Blue=Zに割り当てActiveを ON にして接続開始 → ビューアで点群イメージを確認- TOP to CHOP で実数値を確認 (Pixel Format は
32-bit float (RGBA)推奨)
Example 2: 関心領域で帯域削減 🎚️
Ouster TOP (Azimuth Window 90000-270000 mdeg) → Analyze TOP (Count Pixels + Mask) → TOP to CHOP
舞台正面 180 度だけを計測したい場合、Azimuth Window で方位角を絞ることでネットワーク帯域と GPU 負荷を半減できる。さらに Analyze TOP で有効点数を集計しイベント判定に使う応用例。
- Ouster TOP の
Azimuth Window開始角に90000mdeg (90 度)、終了角に270000mdeg (270 度) を設定 Signal Multiplierを 1x のままにして最大ウィンドウサイズの制限内に収める- 出力 TOP を Analyze TOP に接続し
Operation=Count Pixels+Mask=Alphaで有効点数を集計 - TOP to CHOP で値を読み出し、閾値超えをトリガー化
Example 3: 複数センサを同期収録 🕐
Ouster TOP A + Ouster TOP B (Time Sync Mode=PTP 1588) → Composite TOP → Render TOP
複数の Ouster センサを設置して空間全体を計測する場合、PTP 1588 でタイムスタンプを揃えることでフレーム単位の整合性が取れる。Phase Lock を併用すれば回転位相も揃い、複数視点の点群を合成できる。
- ネットワークに PTP 対応スイッチを設置し、PTP マスタクロックを構成
- 各 Ouster TOP の
Time Sync ModeをPTP 1588に設定 Phase Lockを ON にしてPhase Lock Offsetでセンサごとに位相を割り当て (例: A=0 度, B=180 度)- 両 Ouster TOP の出力を Composite TOP で合成し、Render TOP で 3D 表示
- Info CHOP で各センサのタイムスタンプを取得して同期確認
関連オペレータ 🔗
類似機能OP 🔍
- Ouster Select TOP — 既存 Ouster TOP の出力から特定チャンネルやサブ画像を抽出する選択用 TOP
- Kinect TOP — Kinect v1/v2 のデプスマップを画像として取得 (距離計測センサの別系統)
- Kinect Azure TOP — Azure Kinect のデプス・カラー画像取得 (短距離 ToF センサ)
- RealSense TOP — Intel RealSense のデプスマップを取得 (近距離向けデプスセンサ)
- ZED TOP — Stereolabs ZED のステレオデプスを取得
組み合わせ推奨OP 🔄
- TOP to CHOP — 点群イメージを CHOP として読み出し制御信号化
- Info CHOP — Ouster TOP の IMU データ (加速度・ジャイロ) と接続状態をチャンネルで取得
- Point Transform TOP — 点群イメージを座標変換 (回転・並進・スケール) で空間位置調整
- Analyze TOP — 点群イメージの平均・最大・有効点数等の統計値を 1 ピクセルに集約
- GLSL TOP — シェーダで点群イメージを処理 (フィルタリング・クラスタリング・地面検出など)
- Render TOP — 点群を 3D シーンとしてレンダリング (Geometry COMP + Point Sprite MAT 等経由)
- Composite TOP — 複数 Ouster センサの出力を合成・並列配置
前処理・後処理TOP 🎯
Info情報 📊
Ouster TOP は Info CHOP による接続状態と IMU (慣性計測ユニット) データ取得に対応しています。標準 TOP メタチャンネル (resolution_w / resolution_h / num_components / gpu_mem_used) に加え、Ouster 固有の IMU 加速度・ジャイロ・タイムスタンプが取得できます。
TOP固有情報 🖼️
resx: TOP の出力解像度 X (ピクセル単位)resy: TOP の出力解像度 Y (ピクセル単位)aspectx: アスペクト比 Xaspecty: アスペクト比 Ydepth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
TOP 共通情報 🖼️
resolution_w: 出力テクスチャの幅 (Scan Mode に依存、例: 1024)resolution_h: 出力テクスチャの高さ (センサのレーザ本数、例: OS1-64 なら 64)num_components: チャンネル数 (R/G/B/A 構成で 4)gpu_mem_used: GPU メモリ使用量 (バイト単位)
Ouster IMU 情報 🧭
imu_accel_x / imu_accel_y / imu_accel_z: IMU 加速度センサ値 (m/s²)、3 軸imu_gyro_x / imu_gyro_y / imu_gyro_z: IMU ジャイロセンサ値 (rad/s)、3 軸imu_timestamp: IMU サンプルのタイムスタンプ (PTP / 内蔵発振器の基準)connected: センサ接続状態 (1=接続中, 0=未接続)
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Active を ON にしても画像が出ない / 接続できない
✅ Solution:
Device Addressの指定形式を確認 (IP アドレスかos-#####.localホスト名)Lidar Port(7502) とIMU Port(7503) が他プロセスに占有されていないか確認 (Ouster Studio 等)- 複数 NIC マシンでは
Target Addressを明示してセンサが送る先 IP を指定 - PC のファイアウォールで UDP 受信を許可 (Windows Defender で TouchDesigner.exe を許可)
❌ Problem: 出力画像が真っ黒で値が読めない
✅ Solution:
- Common Page の
Pixel Formatを32-bit float (RGBA)に上げる (8 bit では座標値・レンジ値の範囲を保持できない) Red/Green/Blue/AlphaがConstant 0になっていないか確認- TOP to CHOP で実数値を CHOP として確認 (ビューア表示は normalize されていない素の値)
❌ Problem: 複数センサのフレームが同期しない / タイムスタンプがずれる
✅ Solution:
Time Sync ModeをPTP 1588にして外部 PTP マスタに同期- ネットワーク経路に PTP 対応スイッチを配置 (非対応スイッチでは精度が低下)
Phase Lockを有効化しPhase Lock Offsetでセンサごとに異なる角度を割り当てて回転位相を分散- Info CHOP で
imu_timestampを比較し同期検証
❌ Problem: Azimuth Window を広げてもデータ量が変わらない / 制限がかかる
✅ Solution:
Signal Multiplierの値が高いほど最大ウィンドウサイズが狭くなる相反関係を確認- Signal Multiplier を下げる (例: 2x → 1x) ことで広い方位角範囲が使用可能に
- Ouster 公式ドキュメントの倍率別ウィンドウサイズ上限表で組み合わせ可否を確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — Category:TOPs
- TouchDesigner Wiki — Pixel Formats 解説
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

