As servos don't necessarily give feedback, we may need some less common smoothing techniques. The use of smoothing can reduce the power draw and extra torques on the system.
Ramping
Calculate total 'distance' to travel. Start moving at 0%/sec
Ramp up at a set rate until half the distance has been traveled
Limit to some max speed
Ramp down at the same rate
Sinusoidal
Statically create an array like so: [..., (sin(n°)+1)/2, ...] where n is angles in -90 to 90, maybe in 10° increments.
Each time step move to initialPosition + sinArray[i++]*totalTravel with i incrementing every time.
Additionally, smoothing the movement can reduce the likelyhood of startling people and make it easier to determine if the system is operating (servos driven by a signal) or dead (servos picking up on noise)
As servos don't necessarily give feedback, we may need some less common smoothing techniques. The use of smoothing can reduce the power draw and extra torques on the system.
[..., (sin(n°)+1)/2, ...]
wheren
is angles in -90 to 90, maybe in 10° increments.initialPosition + sinArray[i++]*totalTravel
withi
incrementing every time.Additionally, smoothing the movement can reduce the likelyhood of startling people and make it easier to determine if the system is operating (servos driven by a signal) or dead (servos picking up on noise)