Beispiel #1
0
        public JointMotionProfile(JointMotionProfileInputSet inputSet)
        {
            InputSet = inputSet;

            OriginalConstraints = new ConstraintsCollection(inputSet.Constraints.Select(c => c.Copy()));

            EffectiveConstraints = inputSet.Constraints.GetEffectiveConstraints();

#if DEBUG
            EffectiveConstraintsHistory = new List <ConstraintsCollection>
            {
                new ConstraintsCollection(EffectiveConstraints.Select(ec => ec.Copy()))
            };

            CloseHighTightGapsIteratively();

            while (true)
            {
                EffectiveConstraintsHistory.Add(new ConstraintsCollection(EffectiveConstraints.Select(ec => ec.Copy())));

                if (CalculateProfile())
                {
                    break;
                }
                else
                {
                    // possibility to set brakepoint here
                    NumRecalculations++;

                    if (EffectiveConstraints.Any(ec => ec.MaximumVelocity == 0))
                    {
                        throw new JointMotionCalculationException($"Invalid Effective Constraint", inputSet);
                    }
                }
            }
#else
            while (!CalculateProfile())
            {
            }
#endif

            Timestamps = CalculateTimestampsAtConstraintOriginalDistances().ToList();
        }
 public JointMotionCalculationException(string message, JointMotionProfileInputSet inputSet)
     : base(message)
 {
     InputSet = inputSet;
 }