Exemple #1
0
        public async static Task MovePoseLinearSupervised(
            [InputPin(PropertyMode = PropertyMode.Default, Editor = "Pose")] PoseProperty target,
            [InputPin(PropertyMode = PropertyMode.Default)] string endEffectorName  = null,
            [InputPin(PropertyMode = PropertyMode.Default)] bool collisionChecking  = false,
            [InputPin(PropertyMode = PropertyMode.Default)] double velocityScaling  = 1,
            [InputPin(PropertyMode = PropertyMode.Default)] double sampleResolution = 0.05,
            [InputPin(PropertyMode = PropertyMode.Default)] double ikJumpThreshold  = 1.6,
            [InputPin(PropertyMode = PropertyMode.Default)] bool cacheResult        = true,
            CancellationToken cancel = default(CancellationToken)
            )
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target), "Required property 'target' of MovePoseLinear module was not specified.");
            }
            var targetPose = await ResolveProperty(target);

            var endEffector = MotionService.QueryAvailableEndEffectors().FirstOrDefault(x => x.Name == endEffectorName);

            if (endEffector == null)
            {
                throw new Exception($"EndEffector '{endEffectorName}' not available.");
            }

            using (var group = MotionService.CreateMoveGroup(endEffector.MoveGroupName, endEffector.Name))
            {
                group.SampleResolution = sampleResolution;
                group.IkJumpThreshold  = ikJumpThreshold;
                using (var client = group.GetEndEffector(endEffector.Name).MovePoseLinearSupervisedAsync(targetPose, velocityScaling, collisionChecking, null, cancel))
                {
                    await HandleStepwiseMotions(client, group);
                }
            }
        }
Exemple #2
0
        public async static Task MovePoseWaypointsSupervised(
            [InputPin(PropertyMode = PropertyMode.Never)] IEnumerable <Pose> waypoints = null,
            [InputPin(PropertyMode = PropertyMode.Default)] string endEffectorName     = null,
            [InputPin(PropertyMode = PropertyMode.Default)] bool collisionChecking     = false,
            [InputPin(PropertyMode = PropertyMode.Default)] double velocityScaling     = 1,
            [InputPin(PropertyMode = PropertyMode.Default)] double sampleResolution    = 0.05,
            [InputPin(PropertyMode = PropertyMode.Default, Editor = "JointValues")] JointValuesProperty seed = null,
            [InputPin(PropertyMode = PropertyMode.Default)] bool cacheResult = true,
            CancellationToken cancel = default(CancellationToken)
            )
        {
            if (waypoints == null)
            {
                throw new ArgumentNullException("Required property 'waypoints' for MovePoseLinearWaypointsSupervised module was not specified.", nameof(waypoints));
            }

            if (waypoints.ToList().Count == 0)
            {
                throw new ArgumentException("Required property 'waypoints' is empty.", nameof(waypoints));
            }

            var seedValues = await ResolveProperty(seed);

            var endEffector = MotionService.QueryAvailableEndEffectors().FirstOrDefault(x => x.Name == endEffectorName);

            if (endEffector == null)
            {
                throw new Exception($"EndEffector '{endEffectorName}' not available.");
            }

            CartesianPath path = new CartesianPath(waypoints);

            using (var group = MotionService.CreateMoveGroup(endEffector.MoveGroupName, endEffector.Name))
            {
                if (seed == null)
                {
                    seedValues = group.CurrentJointPositions;
                }

                group.SampleResolution = sampleResolution;
                group.CollisionCheck   = collisionChecking;
                group.VelocityScaling  = velocityScaling;
                using (var client = group.GetEndEffector(endEffectorName).MoveCartesianPathSupervisedAsync(path, seedValues, cancel))
                {
                    await HandleStepwiseMotions(client, group);
                }
            }
        }
        public async static Task MoveLWaypoints(
            [InputPin(PropertyMode = PropertyMode.Never)] IEnumerable <Pose> waypoints = null,
            [InputPin(PropertyMode = PropertyMode.Default)] string endEffectorName     = null,
            [InputPin(PropertyMode = PropertyMode.Default)] bool collisionChecking     = false,
            [InputPin(PropertyMode = PropertyMode.Default)] double velocityScaling     = 1,
            [InputPin(PropertyMode = PropertyMode.Default)] double sampleResolution    = 0.05,
            [InputPin(PropertyMode = PropertyMode.Default)] double ikJumpThreshold     = 1.6,
            [InputPin(PropertyMode = PropertyMode.Default)] double maxDeviation        = 0.0,
            [InputPin(PropertyMode = PropertyMode.Default)] bool cacheResult           = true,
            CancellationToken cancel = default(CancellationToken)
            )
        {
            if (waypoints == null)
            {
                throw new ArgumentNullException("Required property 'waypoints' for MoveLWayPoints module was not specified.", nameof(waypoints));
            }

            if (waypoints.ToList().Count == 0)
            {
                throw new ArgumentException("Required property 'waypoints' is empty.", nameof(waypoints));
            }

            var endEffector = MotionService.QueryAvailableEndEffectors().FirstOrDefault(x => x.Name == endEffectorName);

            if (endEffector == null)
            {
                throw new Exception($"EndEffector '{endEffectorName}' not available.");
            }

            CartesianPath path = new CartesianPath(waypoints);

            using (var group = MotionService.CreateMoveGroup(endEffector.MoveGroupName, endEffector.Name))
            {
                group.SampleResolution = sampleResolution;
                group.IkJumpThreshold  = ikJumpThreshold;
                var planParameters = group.BuildTaskSpacePlanParameters(velocityScaling, collisionChecking, maxDeviation, null, endEffector.Name);
                var(trajectory, parameters) = group.GetEndEffector(endEffector.Name).PlanMovePoseLinearWaypoints(path, planParameters);

                await MotionService.ExecuteJointTrajectory(trajectory, parameters.CollisionCheck, cancel);
            }
        }
Exemple #4
0
        public async static Task MovePoseCollisionFreeSupervised(
            [InputPin(PropertyMode = PropertyMode.Default, Editor = "Pose")] PoseProperty target,
            [InputPin(PropertyMode = PropertyMode.Default)] string endEffectorName  = null,
            [InputPin(PropertyMode = PropertyMode.Default)] double velocityScaling  = 1,
            [InputPin(PropertyMode = PropertyMode.Default)] double sampleResolution = 0.05,
            [InputPin(PropertyMode = PropertyMode.Default, Editor = "JointValues")] JointValuesProperty seed = null,
            [InputPin(PropertyMode = PropertyMode.Default)] bool cacheResult = true,
            CancellationToken cancel = default(CancellationToken)
            )
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target), "Required property 'target' for MovePoseCollisionFreeSupervised module was not specified.");
            }

            var endEffector = MotionService.QueryAvailableEndEffectors().FirstOrDefault(x => x.Name == endEffectorName);

            if (endEffector == null)
            {
                throw new Exception($"EndEffector '{endEffectorName}' not available.");
            }

            var targetPose = await ResolveProperty(target);

            var seedValues = await ResolveProperty(seed);

            using (var group = MotionService.CreateMoveGroup(endEffector.MoveGroupName, endEffector.Name))
            {
                if (seed == null)
                {
                    seedValues = group.CurrentJointPositions;
                }

                group.SampleResolution = sampleResolution;
                using (var client = group.GetEndEffector(endEffector.Name).MovePoseCollisionFreeSupervisedAsync(targetPose, seedValues, cancel))
                {
                    await HandleStepwiseMotions(client, group);
                }
            }
        }