Algorithm for the static balancing of serial and parallel mechanisms combining counterweights and springs: Generation, assessment and ranking of effective design variants