コード例 #1
0
        static void Scan(AUTD3Cnt autd, byte duty, PicoCnt pico, RobotController robo, Conditions cond, int devNumX, int devNumY, float z, bool compress = false)
        {
            var totalNum = devNumX * devNumY * 249;

            var dataFolder = Utils.CreateFolderTimeStamped("individual");

            Console.WriteLine($"Total Scan Points: {totalNum}");
            Console.WriteLine($"Saved to {dataFolder}");
            Console.WriteLine("Connect Ch. A to microphone. conditions are ...");
            cond.Check();
            cond.Save(dataFolder);

            Console.WriteLine("Start Scanning...");
            var transX = Enumerable.Range(0, 18);
            var transY = Enumerable.Range(0, 14);

            var devX = Enumerable.Range(0, devNumX).Select(x => x * 192f);
            var devY = Enumerable.Range(0, devNumY).Select(y => y * 151.4f);

            int devIdx = 0;
            int idx    = 0;

            foreach (var(dx, dy) in Utils.Product(devX, devY))
            {
                var df = Path.Join(dataFolder, $"dev{devIdx}");
                Directory.CreateDirectory(df);

                foreach (var(tx, ty) in Utils.Product(transX, transY))
                {
                    if (IsMissing(tx, ty))
                    {
                        continue;
                    }

                    autd.TransTest(idx, duty, 0);
                    Thread.Sleep(500);

                    var tf = Path.Join(df, $"tr{idx % 249}");
                    Directory.CreateDirectory(tf);

                    float x = dx + tx * 10.16f;
                    float y = dy + ty * 10.16f;

                    Console.Write("\r{0, 3:d0}/{1, 3:d0} ({2, 3:f0}%)", idx, totalNum, 100.0 * idx / totalNum);

                    robo.MoveTo(x, y, z);
                    Thread.Sleep(500);

                    pico.MeasureAndSave(true, Path.Join(tf, $"x{(tx * 10.16f):F3}y{(ty * 10.16f):F3}z{z:F3}"), compress);

                    autd.TransTest(idx, 0, 0);
                    idx++;
                }
                devIdx++;
            }

            Console.WriteLine();
        }
コード例 #2
0
        static void Scan(AUTD3Cnt autd, PicoCnt pico, Conditions cond, string prefix, bool trig, Action <AUTD3Cnt, int> func, bool compress = false)
        {
            var dataFolder = Utils.CreateFolderTimeStamped(prefix);

            cond.Save(dataFolder);

            for (int i = 0; i <= byte.MaxValue; i++)
            {
                Console.Write("{0}: {1, 3:d0}/{2, 3:d0} ({3, 3:f0}%)", prefix, i, byte.MaxValue, 100.0 * i / byte.MaxValue);
                Console.SetCursorPosition(0, Console.CursorTop);

                func(autd, i);
                Thread.Sleep(500);

                pico.MeasureAndSave(trig, Path.Join(dataFolder, $"{prefix}{i}"), compress);

                autd.TransTest(0, 0, 0);
                Thread.Sleep(60 * 1000);
            }
            Console.WriteLine();
            autd.Stop();
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: sssssssuzuki/autd3-paper
 static void Scan(AUTD3Cnt autd, PicoCnt pico, (float, float, float) focus, IEnumerable <int> dutyies, string dataFolder, bool compress = false)
コード例 #4
0
        static void Main(string[] args)
        {
            int NUM_AUTD_X = 3;
            int NUM_AUTD_Y = 3;

            float W = 192f;
            float H = 151.4f;

            float xc = W * NUM_AUTD_X / 2f;
            float yc = H * NUM_AUTD_Y / 2f;
            float Z  = 200;

            var compress = true;
            var cond     = new Conditions()
            {
                SampleRateHz = 10_000_000,
                SampleLen    = 10_000,
                Temp         = 22.8f,
                Humidity     = 13f,
                Amplifer     = 10,
                X            = 0,
                Y            = 0,
                Z            = Z
            };

            using var robo = new RobotController();
            if (!robo.Connect("172.16.99.57"))
            {
                Console.WriteLine("Failed to connect to robot.");
                return;
            }
            robo.MoveTo(0, 0, Z);

            using var pico = new PicoCnt();
            pico.SetChannel(0, 50, 1, null);
            pico.SetChannel(1, 5000, 10, 1000);
            pico.SetCondition(cond);

            using var autd = new AUTD3Cnt();

            for (int y = 0; y < NUM_AUTD_Y; y++)
            {
                for (int x = 0; x < NUM_AUTD_X; x++)
                {
                    autd.AddDevice(x * W, y * H, 0);
                }
            }
            var ifname = AUTD3Cnt.GetIfname();

            autd.Open(ifname);
            autd.Clear();
            autd.Calibrate();
            autd.StaticMod(0xFF);

            Scan(autd, 10, pico, robo, cond, NUM_AUTD_X, NUM_AUTD_Y, Z, compress);

            Console.WriteLine("Finish.");
            autd.Stop();
            robo.Finish();
        }
    }
コード例 #5
0
        static void Main(string[] args)
        {
            using var robo = new RobotController();
            if (!robo.Connect("172.16.99.57"))
            {
                Console.WriteLine("Failed to connect to robot.");
                return;
            }
            robo.MoveTo(0, 0, 200);

            using var pico = new PicoCnt();

            using var autd = new AUTD3Cnt();
            autd.AddDevice(0, 0, 0);

            var ifname = AUTD3Cnt.GetIfname();

            autd.Open(ifname);
            autd.Clear();
            autd.Calibrate();
            autd.StaticMod(0xFF);

            var compress = false;
            var cond     = new Conditions()
            {
                SampleRateHz = 2_000_000,
                SampleLen    = 2_000,
                Temp         = 23.0f,
                Humidity     = 19f,
                Amplifer     = 10,
                X            = 0,
                Y            = 0,
                Z            = 200
            };

            pico.SetChannel(0, 500, 1, null);
            pico.SetCondition(cond);
            Console.WriteLine("Connect Ch. A to microphone. conditions are ...");
            cond.Check();
            Scan(autd, pico, cond, "amp", false, (autd, i) => autd.TransTest(0, (byte)i, 0), compress);

            cond.SampleRateHz = 10_000_000;
            cond.SampleLen    = 20000;

            pico.SetChannel(0, 50000, 10, null);
            pico.SetCondition(cond);
            Console.WriteLine("Connect Ch. A to microphone. conditions are ...");
            cond.Check();
            Scan(autd, pico, cond, "input", false, (autd, i) => autd.TransTest(0, (byte)i, 0), compress);

            pico.SetChannel(0, 500, 1, null);
            pico.SetChannel(1, 5000, 10, 1000);
            pico.SetCondition(cond);
            Console.WriteLine("Connect Ch. A to microphone and Ch. B to 40kHz reference signal. conditions are ...");
            cond.Check();
            Scan(autd, pico, cond, "phase", true, (autd, i) => autd.TransTest(0, 0xFF, (byte)i), compress);

            Console.WriteLine("Finish.");

            robo.Finish();
        }
    }