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(intensity: intensityRate, phase: 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::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?;import asyncio
from autd3 import Client, ClientConfigfrom autd3.commands import SetSilencerfrom autd3.geometry import Autd3, Geometryfrom autd3_link_nop import Nop
async def main() -> None: geometry = Geometry([Autd3([0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0])]) client = await Client.open(geometry, Nop(), ClientConfig())
builder = client.datagram_builder() builder.push(SetSilencer()) frames = builder.build() for frame in frames: await client.send_checked(frame)
await client.close()
asyncio.run(main())using System.Numerics;using System.Threading.Tasks;using AUTD3;using AUTD3.Link;using Nop = AUTD3.Link.Nop;
var geometry = new Geometry(new[] { new Autd3(Vector3.Zero) });var client = await Client.OpenAsync(geometry, new Nop(), new ClientConfig());
var builder = client.DatagramBuilder();builder.Push(new SetSilencer());var frames = builder.Build();foreach (var frame in frames){ await client.SendCheckedAsync(frame);}
await client.CloseAsync();