コンテンツにスキップ

SetSilencer

SetSilencer は, 位相・強度の急激な変化を線形補間し出力ノイズを抑える Silencer を設定するコマンド.

補間方式は, 補間完了時間を指定する FixedCompletionTime と, 1補間ステップあたりの更新量を指定する FixedUpdateRate の 2 つ.

SetSilencer::default();
SetSilencer::disable();
SetSilencer::new(FixedCompletionTime {
intensity,
phase,
strict_mode,
});
SetSilencer::new(FixedUpdateRate { intensity, phase });

SetSilencer::default()FixedCompletionTime のデフォルトを渡すのと等価. SetSilencer::disable()Silencer による補間を無効化する (25 μs で補間を完了するのと等価).

目標値へ到達するまでの完了時間を指定する. 各更新ステップは超音波周期 (25 µs) 単位であり, 指定時間がその整数倍でないとエラーになる.

フィールド デフォルト 説明
intensity Duration 250 µs 強度が目標へ到達するまでの完了時間
phase Duration 1000 µs 位相が目標へ到達するまでの完了時間
strict_mode bool true 完了時間が変調・STM のサンプリング周期に収まらない場合にエラーとするか

1 補間ステップあたり (25 μs毎) の更新量を固定する.

フィールド 説明
intensity NonZeroU16 強度の 1 ステップあたり更新量
phase NonZeroU16 位相の 1 ステップあたり更新量
use autd3_rs::commands::SetSilencer;
use autd3_rs::geometry::{Autd3, Geometry};
use autd3_rs::{Client, ClientConfig};
use autd3_rs_link_nop::Nop;
let geometry = Geometry::new(vec![Autd3::default()]);
let client = Client::open(&geometry, Nop, ClientConfig::default()).await?;
let mut builder = client.datagram_builder();
builder.push(SetSilencer::default());
let frames = builder.build()?;
for frame in &frames {
client.send_checked(frame).await?;
}
client.close().await?;