Group Move with Different Speeds for Each Channel

Hello,

I’m trying to move two servos at different speeds, but it appears they’re moving to the lowest speed setting in the command string.

Assume that both servos’ starting position is 1000, and both of them will do the same amount of rotation to position 1600. These are some sample strings I sent out:

#0 P1600 S200 #1 P1600 S2000 \r” – the two servos will move at 200uS/second.
#0 P1600 S2000 #1 P1600 S100 \r” – the two servos will move at 100uS/second.
#0 P1600 #1 P1600 S2000 \r” – the two servos will move at 2000uS/second (this is expected)

Any ideas why they always move at the same speed in the first and second example? According to the manual, they should be moving at different speeds. I’d like to be able to control them at different speeds.

Thank you in advance!

Regards
MS

p.s. the “\r” is the “carriage return” in Python string
p.p.s. I’ve found several other posts regarding SSC-32 speed control, but they’re not really addressing the behavior I’m seeing.

Note: I almost never use the speed control and instead I use the time control as if I am doing some form of move that I want done with multiple servos, I typically want them all to complete the move at some specific time.

However in your cases, have you tried simply breaking up the commands? like:
#0 P1600 S200 \r#1 P1600 S2000 \r"

Note: in all of these cases, the first move of a servo will always jerk to the position as the system has no way of knowing where the servos are when it first starts up.

Hello Kurte,

Thanks for the suggestion to break up the commands. It seems to do what I needed on two servos. I’ll have to see how that solution works with more servos.
However, it’ll be good to know why the speed control doesn’t work on a single command (e.g. firmware, bug, I’m forgetting something, …)

Cheers,
Mathias

Hi Mathias,

The group move is designed to make all the servos in the group start and stop at the same time, so it is working properly since they’re starting and ending at the same points.

See the 3 rules of group move commands in the SSC-32 manual:

As Kurt pointed out, when doing a group move, it’s usually simpler to use the time (T) parameter than the speed (S) parameter. The speed parameter can be useful in a group move if you want to specify a max speed for a servo and don’t want to calculate (or recalculate) your move time.

If your case however, it seems like you don’t necessarily want both servos to start and stop at the same time, in which case you want to just send two separate move commands like you’ve done.