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; }