Beispiel #1
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150;

            autd.SilentMode = false;

            var mod = Modulation.Static();

            autd.Send(mod);

            var       center   = new Vector3d(x, y, z);
            var       seq      = PointSequence.Create();
            const int pointNum = 200;

            for (var i = 0; i < pointNum; i++)
            {
                const double radius = 30.0;
                var          theta  = 2.0 * Math.PI * i / pointNum;
                var          p      = radius * new Vector3d(Math.Cos(theta), Math.Sin(theta), 0);
                seq.AddPoint(center + p);
            }
            seq.Frequency = 1;
            Console.WriteLine($"Actual frequency is {seq.Frequency}");
            autd.Send(seq, mod);
        }
Beispiel #2
0
        public static void Test(AUTD autd)
        {
            autd.SilentMode = false;

            var delays = new byte[autd.NumDevices, AUTD.NumTransInDevice];

            delays[0, 0] = 4;
            autd.SetDelayOffset(delays, null);

            var uniform = new ushort[autd.NumDevices, AUTD.NumTransInDevice];

            for (var i = 0; i < autd.NumDevices; i++)
            {
                for (var j = 0; j < AUTD.NumTransInDevice; j++)
                {
                    uniform[i, j] = 0xFFFF;
                }
            }

            var burst = new byte[4000];

            burst[0] = 0xFF;

            var g = Gain.Custom(uniform);
            var m = Modulation.Custom(burst);

            autd.Send(g, m);
        }
Beispiel #3
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150;

            var center = new Vector3d(x, y, z);

            var g1 = Gain.FocalPoint(center);

            var focuses = new[] {
                center + 30.0 * Vector3d.UnitX,
                center - 30.0 * Vector3d.UnitX
            };
            var amps = new[] {
                1.0,
                1.0
            };
            var backend = Gain.Eigen3Backend();
            var g2      = Gain.HoloGSPAT(focuses, amps, backend);

            var gainMap = new Dictionary <int, Gain>
            {
                [0] = g1,
                [1] = g2
            };
            var gain = Gain.Grouped(autd, gainMap);
            var mod  = Modulation.Sine(150); // AM sin 150 Hz

            autd.Send(gain, mod);

            Gain.DeleteBackend(backend);
        }
Beispiel #4
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.TransSpacing * (AUTD.NumTransInX - 1) / 2.0;
            const double y = AUTD.TransSpacing * (AUTD.NumTransInY - 1) / 2.0;
            const double z = 150.0;

            var mod = Modulation.Sine(150);

            var center  = new Vector3d(x, y, z);
            var focuses = new[] {
                center + 20.0 * Vector3d.UnitX,
                center - 20.0 * Vector3d.UnitX
            };
            var amps = new[] {
                1.0,
                1.0
            };

            var backend = Gain.Eigen3Backend();
            var gain    = Gain.HoloSDP(focuses, amps, backend);

            autd.Send(gain, mod);

            Gain.DeleteBackend(backend);
        }
Beispiel #5
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150.0;

            autd.SilentMode = false;

            var mod = Modulation.Static();

            autd.Send(mod);

            const double radius = 30.0;
            const int    size   = 100;
            var          center = new Vector3d(x, y, z);
            var          stm    = autd.STM();

            for (var i = 0; i < size; i++)
            {
                var theta = 2 * AUTD.Pi * i / size;
                var r     = new Vector3d(Math.Cos(theta), Math.Sin(theta), 0);
                var f     = Gain.FocalPoint(center + radius * r);
                stm.AddSTMGain(f);
            }
            stm.StartSTM(0.5);

            Console.WriteLine("press any key to stop...");
            Console.ReadKey(true);

            stm.StopSTM();
            stm.FinishSTM();
        }
Beispiel #6
0
 void Update()
 {
     if (Target != null)
     {
         _autd.Send(Gain.FocalPoint(Target.transform.position));
     }
 }
        public bool SendGain()
        {
            var instance = AUTDSettings.Instance;
            var gain     = instance.GainSelect switch
            {
                GainSelect.FocalPoint => instance.Focus.ToGain(),
                GainSelect.BesselBeam => instance.Bessel.ToGain(),
                GainSelect.Holo => instance.Holo.ToGain(),
                GainSelect.PlaneWave => instance.PlaneWave.ToGain(),
                GainSelect.TransducerTest => instance.TransducerTest.ToGain(),
                _ => throw new ArgumentOutOfRangeException()
            };
            var res = _autd.Send(gain);

            IsRunning.Value = res;
            return(res);
        }
Beispiel #8
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150;

            var mod  = Modulation.Sine(150);
            var gain = Focus(autd, new Vector3d(x, y, z));

            autd.Send(gain, mod);
        }
Beispiel #9
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150;

            var mod  = Modulation.Sine(150);                   // AM sin 150 Hz
            var gain = Gain.FocalPoint(new Vector3d(x, y, z)); // Focal point @ (x, y, z) [mm]

            autd.Send(gain, mod);
        }
Beispiel #10
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;

            var mod = Modulation.Sine(150); // AM sin 150 Hz

            var start = new Vector3d(x, y, 0);
            var dir   = Vector3d.UnitZ;
            var gain  = Gain.BesselBeam(start, dir, 13.0f / 180f * AUTD.Pi); // BesselBeam from (x, y, 0), theta = 13 deg

            autd.Send(gain, mod);
        }
Beispiel #11
0
    void Awake()
    {
        _autd = new AUTD();

        _autd.AddDevice(gameObject.transform.position, gameObject.transform.rotation);

        string ifname = @"write your interface name here";

        _link = Link.SOEM(ifname, _autd.NumDevices);
        _autd.Open(_link);

        _autd.Clear();

        _autd.Send(Modulation.Sine(150)); // 150 Hz
    }