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); } }
private void Connect(object sender, RoutedEventArgs e) { try { OptiTrack.Initialize(); } catch (InvalidOperationException ex) { MainWindow.ShowErrorDialog("OptiTrack system initialization failed.", ex); } }
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); } }
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); } }
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); } }
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); } } }
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(); }