Пример #1
0
 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);
 }
Пример #2
0
 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);
 }
Пример #3
0
        /// <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, "作業終了");
        }
Пример #4
0
        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);
            }
        }