コード例 #1
0
ファイル: PingPanel.xaml.cs プロジェクト: kborowicz/PingPong2
        private void Start(object sender, RoutedEventArgs e)
        {
            try {
                if (!optiTrack.IsInitialized())
                {
                    optiTrack.Initialize();
                }

                if (!robot1.IsInitialized())
                {
                    robot1.Initialize();
                }

                if ((bool)copyMovementsCheck.IsChecked && !robot2.IsInitialized())
                {
                    robot2.Initialize();
                }

                startBtn.IsEnabled           = false;
                stopBtn.IsEnabled            = true;
                copyMovementsCheck.IsEnabled = false;
            } catch (Exception ex) {
                MainWindow.ShowErrorDialog("Cannot start application.", ex);
            }
        }
コード例 #2
0
 private void Connect(object sender, RoutedEventArgs e)
 {
     try {
         OptiTrack.Initialize();
     } catch (InvalidOperationException ex) {
         MainWindow.ShowErrorDialog("OptiTrack system initialization failed.", ex);
     }
 }
コード例 #3
0
        private void Initialize(object sender, RoutedEventArgs e)
        {
            try {
                if (Robot.IsInitialized())
                {
                    return;
                }

                Robot.Config = CreateConfigurationFromFields();
                Robot.Initialize();

                initializeBtn.IsEnabled = false;
                loadConfigBtn.IsEnabled = false;
                saveConfigBtn.IsEnabled = false;
                disconnectBtn.IsEnabled = true;
            } catch (Exception ex) {
                MainWindow.ShowErrorDialog("Robot initialization failed.", ex);
            }
        }
コード例 #4
0
        private void MoveTo(object sender, RoutedEventArgs e)
        {
            try {
                double x = double.Parse(moveToX.Text);
                double y = double.Parse(moveToY.Text);
                double z = double.Parse(moveToZ.Text);
                double a = double.Parse(moveToA.Text);
                double b = double.Parse(moveToB.Text);
                double c = double.Parse(moveToC.Text);

                double movementTime = Math.Max(double.Parse(moveToTime.Text), 2);
                moveToTime.Text = movementTime.ToString();

                RobotVector targetPosition = new RobotVector(x, y, z, a, b, c);
                robot.MoveTo(targetPosition, RobotVector.Zero, movementTime);
            } catch (Exception ex) {
                MainWindow.ShowErrorDialog("Unable to move robot to specified target position.", ex);
            }
        }
コード例 #5
0
        private void Shift(object sender, RoutedEventArgs e)
        {
            try {
                double x = double.Parse(shiftX.Text);
                double y = double.Parse(shiftY.Text);
                double z = double.Parse(shiftZ.Text);
                double a = double.Parse(shiftA.Text);
                double b = double.Parse(shiftB.Text);
                double c = double.Parse(shiftC.Text);

                double movementTime = Math.Max(double.Parse(shiftTime.Text), 0.5);
                shiftTime.Text = movementTime.ToString();

                RobotVector deltaPosition = new RobotVector(x, y, z, a, b, c);
                robot.Shift(deltaPosition, RobotVector.Zero, movementTime);

                ResetShiftFields(null, null);
            } catch (Exception ex) {
                MainWindow.ShowErrorDialog("Unable to shift robot by specified delta position.", ex);
            }
        }
コード例 #6
0
        private void LoadConfig(object sender, RoutedEventArgs e)
        {
            var openFileDialog = new Microsoft.Win32.OpenFileDialog {
                InitialDirectory = Path.Combine(Directory.GetCurrentDirectory(), App.ConfigDir),
                Title            = "Select configuration file",
                CheckFileExists  = true,
                CheckPathExists  = true,
                DefaultExt       = "json",
                Filter           = "JSON files |*.json",
                FilterIndex      = 2,
                ReadOnlyChecked  = true,
                ShowReadOnly     = true,
                Multiselect      = false
            };

            if (openFileDialog.ShowDialog() == true)
            {
                Stream       fileStream;
                StreamReader streamReader;

                try {
                    if ((fileStream = openFileDialog.OpenFile()) != null)
                    {
                        using (fileStream)
                            using (streamReader = new StreamReader(fileStream)) {
                                string      jsonString = streamReader.ReadToEnd();
                                RobotConfig config     = new RobotConfig(jsonString);
                                Robot.Config = config;

                                UpdateConfigControls(config);
                            }
                    }
                } catch (Exception ex) {
                    MainWindow.ShowErrorDialog("Could not load configuration file.", ex);
                }
            }
        }
コード例 #7
0
        public CalibrationWindow(Robot robot, OptiTrackSystem optiTrack)
        {
            InitializeComponent();

            Transformation currentTransformation = null;

            calibrationTool = new CalibrationTool(robot, optiTrack);

            calibrationTool.Start += () => {
                Dispatcher.Invoke(() => {
                    progressBar.Value        = 0;
                    progressBarLabel.Content = "0%";
                    startBtn.IsEnabled       = false;
                    cancelBtn.IsEnabled      = true;
                });
            };

            calibrationTool.ProgressChanged += (progress, transformation) => {
                currentTransformation = transformation;

                Dispatcher.Invoke(() => {
                    progressBar.Value        = progress;
                    progressBarLabel.Content = $"{progress}%";

                    t00.Text = transformation[0, 0].ToString("F3");
                    t01.Text = transformation[0, 1].ToString("F3");
                    t02.Text = transformation[0, 2].ToString("F3");
                    t03.Text = transformation[0, 3].ToString("F3");

                    t10.Text = transformation[1, 0].ToString("F3");
                    t11.Text = transformation[1, 1].ToString("F3");
                    t12.Text = transformation[1, 2].ToString("F3");
                    t13.Text = transformation[1, 3].ToString("F3");

                    t20.Text = transformation[2, 0].ToString("F3");
                    t21.Text = transformation[2, 1].ToString("F3");
                    t22.Text = transformation[2, 2].ToString("F3");
                    t23.Text = transformation[2, 3].ToString("F3");

                    t30.Text = transformation[3, 0].ToString("F3");
                    t31.Text = transformation[3, 1].ToString("F3");
                    t32.Text = transformation[3, 2].ToString("F3");
                    t33.Text = transformation[3, 3].ToString("F3");
                });
            };

            calibrationTool.Completed += () => {
                Completed?.Invoke(currentTransformation);
                Close();
            };

            startBtn.Click += (s, e) => {
                try {
                    calibrationTool.Calibrate(10, 200);
                } catch (Exception ex) {
                    MainWindow.ShowErrorDialog("Unable to start calibration.", ex);
                }
            };
            cancelBtn.Click += (s, e) => {
                calibrationTool.Cancel();
            };

            Closing += (s, e) => {
                calibrationTool.Cancel();
            };
            robotIpAdress.Content += robot.ToString();
        }