private void placeCard(int x, int y, UInt64 cmdIndex) { moveDobot(x, y, 50, cmdIndex); moveDobot(x, y, -70, cmdIndex); DobotDll.SetEndEffectorSuctionCup(true, false, true, ref cmdIndex); moveDobot(x, y, 50, cmdIndex); }
private void pickNewCard(UInt64 cmdIndex, WAITCmd wait) { moveDobot(220, 140, 50, cmdIndex); moveDobot(220, 140, -55, cmdIndex); DobotDll.SetEndEffectorSuctionCup(true, true, true, ref cmdIndex); moveDobot(220, 140, 50, cmdIndex); DobotDll.SetWAITCmd(ref wait, true, ref cmdIndex); }
/// <summary> /// 作業を開始します /// </summary> public void WorkStart(double target_x, double target_y, SettingsObj obj) { // 作業をクリア DobotDll.SetQueuedCmdClear(); // コマンド開始 DobotDll.SetQueuedCmdStartExec(); OnWorkEvent?.Invoke(this, "作業開始"); // 現在位置を取得 var pose = GetCurrentPose(); OnWorkEvent(this, $"現在位置を取得:"); OnWorkEvent?.Invoke(this, $"X:{pose.x}, Y:{pose.y}, Z:{pose.z}, R:{pose.rHead}"); // 対象の上部まで移動(Z座標は適当) var cmdIndex = ptp((byte)2, (float)target_x, (float)target_y, (float)0.0, pose.rHead); OnWorkEvent?.Invoke(this, "対象の上部まで移動:"); OnWorkEvent?.Invoke(this, $"X:{(float)target_x}, Y:{(float)target_y}, Z:{(float)0.0}, R:{pose.rHead}"); // 対象物のZ座標計算 var object_z = obj.PedestalZ + obj.ObjectHeight; OnWorkEvent?.Invoke(this, "対象物のZ座標:"); OnWorkEvent?.Invoke(this, $"Z:{object_z}"); // 対象の位置まで下がる cmdIndex = ptp((byte)2, (float)target_x, (float)target_y, (float)object_z, pose.rHead); OnWorkEvent?.Invoke(this, "対象物までアームを降ろす:"); OnWorkEvent?.Invoke(this, $"X:{(float)target_x}, Y:{(float)target_y}, Z:{(float)object_z}, R:{pose.rHead}"); // 下がったらサクションカップONしてつかむ DobotDll.SetEndEffectorSuctionCup(true, true, true, ref cmdIndex); OnWorkEvent?.Invoke(this, "サクションカップでつかむ"); // いったん上に持ち上げる cmdIndex = ptp((byte)2, (float)target_x, (float)target_y, (float)0.0, pose.rHead); OnWorkEvent?.Invoke(this, $"持ち上げる:"); OnWorkEvent?.Invoke(this, $"X:{(float)target_x}, Y:{(float)target_y}, Z:{(float)0.0}, R:{pose.rHead}"); // 持っていく場所に移動 cmdIndex = ptp((byte)2, (float)obj.PlacePoseXCoordinate, (float)obj.PlacePoseYCoordinate, (float)obj.PlacePoseZCoordinate, pose.rHead); OnWorkEvent?.Invoke(this, $"持っていく場所に移動:"); OnWorkEvent?.Invoke(this, $"X:{(float)obj.PlacePoseXCoordinate}, Y:{(float)obj.PlacePoseYCoordinate}, Z:{(float)obj.PlacePoseZCoordinate}, R:{pose.rHead}"); // 下がったらサクションカップOFFして放す DobotDll.SetEndEffectorSuctionCup(false, false, false, ref cmdIndex); OnWorkEvent?.Invoke(this, "サクションカップOFFして放す"); // 上がって終わり cmdIndex = ptp((byte)2, (float)obj.PlacePoseXCoordinate, (float)obj.PlacePoseYCoordinate, (float)0.0, pose.rHead); OnWorkEvent?.Invoke(this, "アームを上にあげる"); // コマンド終了 DobotDll.SetQueuedCmdStopExec(); OnWorkEvent?.Invoke(this, "作業終了"); }
private void CheckBox_Unchecked(object sender, RoutedEventArgs e) { if (!isConnectted) { return; } CheckBox obj = (CheckBox)sender; String con = obj.Content.ToString(); UInt64 cmdIndex = 0; if (con == "Grab") // cancel grab { DobotDll.SetEndEffectorGripper(true, false, false, ref cmdIndex); } else if (con == "Laser") // release laser { DobotDll.SetEndEffectorLaser(false, false, false, ref cmdIndex); } else if (con == "SuctionCup") { DobotDll.SetEndEffectorSuctionCup(false, false, false, ref cmdIndex); } }