コンテンツにスキップ
これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.6.x を参照.

Silencer

焦点を高速に動かしたり, AM 変調をかけたりすると, 振動子に与える位相・強度データが時間的に急峻に変化し, 可聴音ノイズとなって現れる.

AUTD3には Silencer 機能があり, 位相・強度データの変化を線形補間することでこのノイズを抑制する.

Silencerの設定は SetSilencer で行う.

詳細は鈴木らの論文1を参照されたい. 概要は以下の通りである.

  • 振幅変調された超音波は可聴音を生じる.
  • 超音波振動子を駆動する際, 位相変化が振幅変動を引き起こす.
    • したがって可聴音の騒音が生じる.
  • 位相変化を線形に補間し段階的に変化させることで, 振幅変動を抑えられる.
    • したがって騒音を低減できる.
  • 補間を細かくするほど, 騒音を小さくできる.

Silencer は位相 の変化を線形補間し, 段階的にすることで静音化する. これは位相の時系列データを移動平均フィルタに通すのにほぼ等しいが, 位相データが周期的であることを考慮する点で異なる.

超音波の周期を とする. 即ち , に対応する. 現在の位相 と目標値 に対し, Silencer は以下のように を更新する.

ここで は 1 ステップあたりの更新量であり, 更新は超音波周期 (25 µs) ごとに行われる. 下図は で目標値が変化したときの位相変化である. を小さくするほど変化はなだらかになり, 騒音は強く抑制される.

目標までの距離が を超える場合は, 逆回りのほうが近いためそちらへ補間する. 例えば から へ変化する場合, より のほうが近い.

この実装の都合上, 移動平均フィルタとは異なる挙動を示す場合がある. 元時系列への忠実度という観点では移動平均フィルタが正しいが, 位相変化量が を超える場合の扱いや の可変化 (フィルタ長の可変化) が煩雑なため, 現在の実装となっている.

振幅変動が騒音を引き起こすため, 強度パラメータ にも同等のフィルタをかけることで AM による騒音を抑制できる. 強度は位相と異なり周期的ではないので, 現在の と目標値 に対し以下のように更新する.

補間方式は 2 つのモードがある.

  • FixedCompletionTime: 位相 / 強度の変化が一定時間で完了するように, 完了時間を指定する.
    • 完了時間は超音波周期 (25 µs) の整数倍である必要がある.
  • FixedUpdateRate: 上述の を直接指定し, 全振動子で位相 / 強度の変化速度を一定にする.

デフォルトは FixedCompletionTime であり, 強度 0.25 ms, 位相 1 ms の完了時間に設定されている. Silencer の無効化は, 位相 / 強度変化が超音波周期 (25 µs) で完了することと等価である.

FixedCompletionTime モードの場合, 補間完了時間が, サンプリング周期より長くなると, 目標値に到達する前に次のデータが来てしまうため, 補間が完了しないまま次の目標値へ変化してしまう. そのため, これが起きないように, 補間完了時間がサンプリング周期より長い値を設定するとエラーとなる. このエラーの対処方については チュートリアル/静音化 を参照されたい.

  1. Suzuki, Shun, et al. “Reducing amplitude fluctuation by gradual phase shift in midair ultrasound haptics.” IEEE transactions on haptics 13.1 (2020): 87-93.