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

単一デバイス

ここでは, 一つのデバイスを駆動する方法について説明する.

以下は, 1台のAUTD3デバイスでアレイの中心から150 mm直上に焦点を生成し, 200 Hzの正弦波AMかける例である.

まずは適当なプロジェクトを作成し, autd3-rsライブラリを依存関係に追加する. 焦点計算やAM変調のために, autd3-rs-patternとautd3-rs-modulationも依存関係に追加する. また, autd3-rs は tokio ランタイム上で動作するので tokio も追加する.

cargo new --bin autd3-sample && cd autd3-sample
cargo add autd3-rs
cargo add autd3-rs-pattern
cargo add autd3-rs-modulation
cargo add tokio --features full

次に, src/main.rsファイルを編集し, 以下のようにする.

use autd3_rs::commands::{Clear, Modulation, Pattern, SetSilencer, Synchronize};
use autd3_rs::geometry::{Autd3, Geometry, offset};
use autd3_rs::units::{Hz, m, mm, s};
use autd3_rs::value::{Intensity, SamplingConfig};
use autd3_rs::Client;
use autd3_rs::TransportOption;
#[tokio::main(flavor = "multi_thread")]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Define a geometry consisting of a single AUTD3 device.
let geometry = Geometry::new(vec![Autd3::default()]);
// Open the client.
let mut client = Client::open(&geometry, &TransportOption::default()).await?;
client.send(Clear).await?;
client.send(Synchronize).await?;
client.send(SetSilencer::default()).await?;
// Generate a focus 150 mm above the array center.
let target = geometry.center() + offset(0.0 * mm, 0.0 * mm, 150.0 * mm);
let wavelength = autd3_rs_pattern::wavelength(340.0 * m / s);
let mut phases = geometry.phase_buffer();
autd3_rs_pattern::focus(
&geometry,
target,
wavelength,
&mut phases,
);
client.send(Pattern::new(&phases, Intensity::MAX)).await?;
// Apply a 200 Hz sine-wave AM.
let sampling_config = SamplingConfig::FREQ_4K;
let mut modulation = autd3_rs_modulation::modulation_buffer();
autd3_rs_modulation::sine(
200 * Hz,
&autd3_rs_modulation::SineOption::default(),
sampling_config,
&mut modulation,
)?;
client.send(Modulation::new(sampling_config, &modulation)).await?;
tokio::signal::ctrl_c().await?;
client.send(Pattern::new(&geometry.phase_buffer(), Intensity::MIN)).await?;
Ok(())
}

そして, これを実行する.

cargo run --release

Ctrl+C を押すと終了する.