SetSilencer
SetSilencer は, 位相・強度の急激な変化を線形補間し出力ノイズを抑える Silencer を設定するコマンド.
補間方式は, 補間完了時間を指定する FixedCompletionTime と, 1補間ステップあたりの更新量を指定する FixedUpdateRate の 2 つ.
SetSilencer::default();
SetSilencer::disable();
SetSilencer::new(FixedCompletionTime { intensity, phase, strict_mode,});
SetSilencer::new(FixedUpdateRate { intensity, phase });SetSilencer()
SetSilencer.disable()
SetSilencer( FixedCompletionTime( intensity, phase, strict_mode, ))
SetSilencer(FixedUpdateRate(intensity, phase))new SetSilencer();
SetSilencer.Disable();
new SetSilencer(new FixedCompletionTime{ Intensity = intensity, Phase = phase, StrictMode = strictMode,});
new SetSilencer(new FixedUpdateRate(intensityRate, phaseRate));SetSilencer::default() は FixedCompletionTime のデフォルトを渡すのと等価.
SetSilencer::disable() は Silencer による補間を無効化する (25 μs で補間を完了するのと等価).
FixedCompletionTime
Section titled “FixedCompletionTime”目標値へ到達するまでの完了時間を指定する. 各更新ステップは超音波周期 (25 µs) 単位であり, 指定時間がその整数倍でないとエラーになる.
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
intensity |
Duration |
250 µs |
強度が目標へ到達するまでの完了時間 |
phase |
Duration |
1000 µs |
位相が目標へ到達するまでの完了時間 |
strict_mode |
bool |
true |
完了時間が変調・STM のサンプリング周期に収まらない場合にエラーとするか |
FixedUpdateRate
Section titled “FixedUpdateRate”1 補間ステップあたり (25 μs毎) の更新量を固定する.
| フィールド | 型 | 説明 |
|---|---|---|
intensity |
NonZeroU16 |
強度の 1 ステップあたり更新量 |
phase |
NonZeroU16 |
位相の 1 ステップあたり更新量 |
Example
Section titled “Example”use autd3_rs::commands::{Clear, SetSilencer, Synchronize};use autd3_rs::geometry::{Autd3, Geometry};use autd3_rs::Client;use autd3_rs::udp::TransportOption;
let geometry = Geometry::new(vec![Autd3::default()]);let option = TransportOption::default();let mut client = Client::open(&geometry, &option).await?;client.send(Clear).await?;client.send(Synchronize).await?;
client.send(SetSilencer::default()).await?;import asyncio
from autd3 import Client, TransportOptionfrom autd3.commands import Clear, SetSilencer, Synchronizefrom autd3.geometry import Autd3, Geometry
async def main() -> None: geometry = Geometry([Autd3()]) with await Client.open(geometry, TransportOption()) as client: await client.send(Clear()) await client.send(Synchronize())
await client.send(SetSilencer())
asyncio.run(main())using System.Threading.Tasks;using AUTD3;
var geometry = new Geometry(new[] { new Autd3() });using var client = await Client.OpenAsync(geometry, new TransportOption());await client.SendAsync(new Clear());await client.SendAsync(new Synchronize());
await client.SendAsync(new SetSilencer());