Hello,
I’m using the Pololu Maestro 12 and triggering scripts over UART via a Teensy using the Pololu Arduino lib.
I have 5 Servos connected (0-4) with various manufacturers.
It generally works well but one of the sequences about 60% of the times causes one of the servos to act strange. Specifically, around 25% into the sequence one of the servos just starts driving round and round continuously. It has also happened on two different channels (servo 1 and servo 3).
Once the servo in this state, the servo doesn’t stop driving at full speed until the power is cut. During this error state, the status windows shows the servo target sitting at 2000, breifly flicking away but moving straight back to 2000 (as the sequence I assume is trying to move it). The sequence is not trying to target 2000 during this time.
I can also reproduce this consistantly from the sequence window by using ‘play sequence’. (speech4SingerSeq). Watching the sequence flow dosnt seem to indicate a regular specific place in the sequence that triggers the behaviour.
Once the power resumes the servo seeks to its default position and appears to behave normaly, i.e driving normally via status window and behaving normally when used within other sequences.
I’ve swapped out the servo twice (with different manufacturers) and still see the same behaviour.
I have many sequences (not included here) and can run any number of them in any order but this specific sequence (‘speech4SingerSeq’) seems to roll a dice on this werid behaviour.
Has anyone seen this behavior before?
- Not all sequences are copied here but I copied the relevant sequences and functions, and all generated frames to ensure I covered all relevant frames for the problem sequence.
- Servo has a min range enabled
- Servo is 0 speed and acceleration
- I trigger script ‘skit1_sub4’ from the ardunio that then calls speech4SingerSeq
- Note: I added a ‘playsound’ line into the middle of the sequence post generation (to time a command to the ardunio to play a sound). I do this with many other sequences and dont see this issue appearing in any other sequence. Also becuase I can reproduce this inside the sequence windows I dont belive the serial UART functions are cause.
- I’m driving a few of the servos pretty fast during this sequence. (and many other sequences) e.g 75ms duration.
- My sequence is a bit messy
begin
900 100
led_on delay
led_off delay
repeat
sub playSound
5 hardwareSerial
return
sub hardwareSerial #222 For sending commands to UART microcontroller.222 Start byte,command int,var int,255 end byte
222 serial_send_byte serial_send_byte serial_send_byte
255 serial_send_byte
10 delay
return
sub skit1_sub4
4 2 hardwareSerial
speech4SingerSeq
QUIT
sub speech4SingerSeq
350 7418 8000 7542 5846 5076 0
0 0 0 0 0 frame_0..10 # Frame 0
350 7353 frame_2 # Frame 1
350 8000 frame_0 # Frame 2
400 7343 7021 frame_0_1 # Frame 3
400 7910 frame_0 # Frame 4
400 6821 7058 7696 frame_0..2 # Frame 5
4 playSound #<PLAYING SOUND HERE
200 8000 8000 7169 3968 3968 frame_0..4 # OH
250 7753 7617 7602 5122 5103 frame_0..4 # WAIT
75 8000 8000 7105 5100 frame_0..2_4 # Frame 8
75 7721 frame_2 # Frame 9
75 7105 frame_2 # Frame 8
75 7721 5788 5637 frame_2..4 # Frame 9
75 6042 3968 frame_3_4 # Frame 8
75 3968 frame_3 # Frame 9
250 7105 frame_2 # CHANCE
250 7721 4261 6720 frame_2..4 # WAIT
350 3968 5250 frame_3_4 # WAIT
75 7105 5846 3968 frame_2..4 # I
75 7721 3968 frame_2_3 # Frame 9
100 7105 frame_2 # Frame 8
100 7194 7194 7721 frame_0..2 # Frame 9
75 7105 frame_2 # Frame 8
75 7721 frame_2 # Frame 9
100 6464 6464 7105 6238 5571 frame_0..4 # Frame 8
100 7721 6236 frame_2_3 # Frame 9
100 7105 frame_2 # Frame 8
100 delay # Frame 9
100 7105 3968 3968 frame_0_3_4 # Frame 8
100 7104 7721 frame_0_2 # Frame 9
75 7459 7105 frame_1_2 # Frame 8
250 7459 7721 6121 5878 frame_0_2..4 # Frame 9
250 8000 8000 6120 frame_0_1_3 # WAIT
250 7130 3968 3968 frame_2..4 # BA
250 7781 frame_2 # P
250 7130 frame_2 # BA
250 7781 frame_2 # P
150 7130 frame_2 # BLA
75 7781 frame_2 # CK
150 7151 7151 7130 6179 5263 frame_0..4 # SHE
400 8000 8000 7781 6580 frame_0..3 # P
400 6180 4128 frame_3_4 # P
75 7130 5250 frame_2_4 # HA
75 7781 frame_2 # VE
75 7130 5064 frame_2_3 # HA
75 7781 frame_2 # VE
75 7130 6023 frame_2_3 # HA
75 7781 6020 frame_2_3 # VE
75 7130 frame_2 # HA
250 7781 3968 3968 frame_2..4 # VE
250 6720 frame_4 # WAIT
250 7130 5170 frame_2_4 # YES
100 7726 frame_2 # P
250 6881 6881 7130 frame_0..2 # YES
100 7726 5709 frame_2_3 # P
250 7130 5572 frame_2_3 # YES
100 8000 8000 7726 6434 5490 frame_0..4 # P
100 7130 5494 5170 frame_2..4 # YES
250 7726 3968 3968 frame_2..4 # P
150 delay # WAIT
100 7130 frame_2 # YES
100 7726 frame_2 # P
100 7130 frame_2 # YES
100 7726 frame_2 # P
100 7130 frame_2 # YES
100 7726 frame_2 # P
100 7497 5156 frame_2_4 # end
return
#Not all sequences are copied here but copied all frames to ensure I covered all relevant frames
sub frame_0..10
10 servo
9 servo
8 servo
7 servo
6 servo
5 servo
4 servo
3 servo
2 servo
1 servo
0 servo
delay
return
sub frame_4
4 servo
delay
return
sub frame_2_4
4 servo
2 servo
delay
return
sub frame_2
2 servo
delay
return
sub frame_1
1 servo
delay
return
sub frame_2_3
3 servo
2 servo
delay
return
sub frame_0..2
2 servo
1 servo
0 servo
delay
return
sub frame_0_4
4 servo
0 servo
delay
return
sub frame_0_1
1 servo
0 servo
delay
return
sub frame_0_1_3_4
4 servo
3 servo
1 servo
0 servo
delay
return
sub frame_3_4
4 servo
3 servo
delay
return
sub frame_2..4
4 servo
3 servo
2 servo
delay
return
sub frame_0..4
4 servo
3 servo
2 servo
1 servo
0 servo
delay
return
sub frame_0_2..4
4 servo
3 servo
2 servo
0 servo
delay
return
sub frame_3
3 servo
delay
return
sub frame_0_1_4
4 servo
1 servo
0 servo
delay
return
sub frame_0
0 servo
delay
return
sub frame_0..2_4
4 servo
2 servo
1 servo
0 servo
delay
return
sub frame_0_3_4
4 servo
3 servo
0 servo
delay
return
sub frame_0_2
2 servo
0 servo
delay
return
sub frame_1_2
2 servo
1 servo
delay
return
sub frame_0_1_3
3 servo
1 servo
0 servo
delay
return
sub frame_0..3
3 servo
2 servo
1 servo
0 servo
delay
return