A constraint-based programming approach for robotic assembly skills implementation