Frustrations with my family of bots!
BinaryForever
Posts: 2
I'm new, both here and to robots, so please treat me gently.
I've got 10 ActivityBots and we're using them in our new Engineering classes at school. I've built all the kits myself, so I think I've eliminated any child build error.
I used a lot of the tutorials with the classes, starting with some some basic maths programs, before moving on to the motion samples. All of the robots pass the calibration test, with various amounts of spinning circles. A nice sight with them all doing it at once!
The problem I have is that 3 of the robots will not work correctly when running the Forward and Turn program.
To try and narrow down any inconsistencies, I've programmed all 10 robots from the same laptop, each one in turn, using the same (new) set of batteries. Three of them will not run the program while the other seven work fine. The three that don't work give various reactions: stuttering wheels, one wheel running continuously, one wheel running slowly, wheels going forward and backwards.
I have read other posts on this forum to try and solve the problem. I've changed the batteries, I've checked the connections are all correct, I've looked at the gaps between the servo's and the sensors. Nothing has made any difference.
What I really need now is guidance on what to do next and how to do it, as I can't work out the problem and I'm almost at the stage of having to buy three new Activity Boards just to get the robots working.
So, any suggestions as to how I go forward?
Thanks to all that offer advice.
I've got 10 ActivityBots and we're using them in our new Engineering classes at school. I've built all the kits myself, so I think I've eliminated any child build error.
I used a lot of the tutorials with the classes, starting with some some basic maths programs, before moving on to the motion samples. All of the robots pass the calibration test, with various amounts of spinning circles. A nice sight with them all doing it at once!
The problem I have is that 3 of the robots will not work correctly when running the Forward and Turn program.
To try and narrow down any inconsistencies, I've programmed all 10 robots from the same laptop, each one in turn, using the same (new) set of batteries. Three of them will not run the program while the other seven work fine. The three that don't work give various reactions: stuttering wheels, one wheel running continuously, one wheel running slowly, wheels going forward and backwards.
I have read other posts on this forum to try and solve the problem. I've changed the batteries, I've checked the connections are all correct, I've looked at the gaps between the servo's and the sensors. Nothing has made any difference.
What I really need now is guidance on what to do next and how to do it, as I can't work out the problem and I'm almost at the stage of having to buy three new Activity Boards just to get the robots working.
So, any suggestions as to how I go forward?
Thanks to all that offer advice.
Comments
The problem brings this thread to mind:
http://forums.parallax.com/showthread.php/150281-Activity-Bot-mechanical-assembly-step-7-amp-8-heads-up
Give that a try and see if that fixes it.
http://forums.parallax.com/showthread.php/151733-Serious-problem-about-AcitivityBot-.
http://learn.parallax.com/activitybot/troubleshooting
A few of the issues you report are noted in this document.
You could post the data between code tags or take screen captures of the terminal window, whichever is easiest.
Going in order: Publison - yes I had read about the alignment of the sensors. I've re-checked all mine and they are all clearly visible in the centre of the spoke window. I hope the attached image shows clearly enough what they are like. Please advise if what you see is incorrect.
I can run the Test Connections code and I correctly get LED 26 flashing when turning the left wheel and LED 27 flashing for the right wheel.
Gordon - Working through the troubleshooting, I've got new batteries in the bots and I've got 7.96v coming out, so power isn't an issue. Electrical connections have been checked and are all correct.
Courtney - Calibration data from two robots attached (I left the third at school!)
FIRST ROBOT
===========
=== LEFT SERVO ===
Table Entries = 88
Zero Speed Index = 43
Index Servo Drive Encoder Ticks/Second
0 -194 1000
1 -189 186
2 -184 195
3 -179 188
4 -174 182
5 -169 186
6 -164 182
7 -159 184
8 -154 190
9 -149 179
10 -144 190
11 -139 186
12 -134 186
13 -129 182
14 -124 179
15 -119 181
16 -114 179
17 -109 175
18 -104 177
19 -99 175
20 -94 164
21 -89 164
22 -84 161
23 -79 158
24 -74 149
25 -69 146
26 -64 137
27 -59 134
28 -54 121
29 -49 117
30 -44 107
31 -39 98
32 -34 90
33 -29 83
34 -24 74
35 -19 63
36 -14 55
37 -9 44
38 -4 36
39 1 24
40 6 16
41 8 12
42 10 9
43 18 0
44 26 12
45 28 12
46 30 19
47 32 21
48 37 32
49 42 41
50 47 49
51 52 56
52 57 66
53 62 73
54 67 85
55 72 94
56 77 100
57 82 109
58 87 122
59 92 122
60 97 131
61 102 139
62 107 144
63 112 150
64 117 157
65 122 160
66 127 160
67 132 169
68 137 169
69 142 172
70 147 171
71 152 178
72 157 176
73 162 176
74 167 180
75 172 182
76 177 187
77 182 187
78 187 187
79 192 187
80 197 185
81 202 183
82 177 187
83 182 187
84 187 187
85 192 187
86 197 185
87 202 1000
=== RIGHT SERVO ===
Table Entries = 89
Zero Speed Index = 37
Index Servo Drive Encoder Ticks/Second
0 -195 1000
1 -190 182
2 -185 178
3 -180 178
4 -175 178
5 -170 176
6 -165 174
7 -160 172
8 -155 172
9 -150 168
10 -145 165
11 -140 165
12 -135 161
13 -130 160
14 -125 155
15 -120 152
16 -115 145
17 -110 137
18 -105 130
19 -100 126
20 -95 120
21 -90 111
22 -85 102
23 -80 94
24 -75 85
25 -70 78
26 -65 69
27 -60 59
28 -55 49
29 -50 39
30 -45 33
31 -40 26
32 -35 17
33 -33 12
34 -31 8
35 -29 6
36 -27 4
37 -21 0
38 -15 6
39 -13 11
40 -11 15
41 -9 19
42 -7 23
43 -2 33
44 3 40
45 8 51
46 13 60
47 18 69
48 23 78
49 28 85
50 33 96
51 38 103
52 43 112
53 48 120
54 53 127
55 58 130
56 63 137
57 68 146
58 73 151
59 78 155
60 83 155
61 88 161
62 93 165
63 98 168
64 103 168
65 108 170
66 113 174
67 118 172
68 123 178
69 128 178
70 133 180
71 138 180
72 143 180
73 148 187
74 153 187
75 158 174
76 163 187
77 168 182
78 173 187
79 178 185
80 183 182
81 188 184
82 193 185
83 198 182
84 203 187
85 188 184
86 193 185
87 198 182
88 203 1000
SECOND ROBOT
=============
=== LEFT SERVO ===
Table Entries = 88
Zero Speed Index = 27
Index Servo Drive Encoder Ticks/Second
0 -194 1000
1 -189 183
2 -184 179
3 -179 179
4 -174 179
5 -169 173
6 -164 166
7 -159 158
8 -154 156
9 -149 152
10 -144 146
11 -139 133
12 -134 126
13 -129 121
14 -124 108
15 -119 103
16 -114 94
17 -109 85
18 -104 75
19 -99 65
20 -94 57
21 -89 47
22 -84 38
23 -79 28
24 -74 18
25 -72 14
26 -70 9
27 -63 0
28 -56 5
29 -54 8
30 -52 15
31 -50 18
32 -48 21
33 -43 33
34 -38 42
35 -33 49
36 -28 59
37 -23 66
38 -18 76
39 -13 84
40 -8 93
41 -3 100
42 2 110
43 7 117
44 12 126
45 17 134
46 22 139
47 27 148
48 32 151
49 37 155
50 42 160
51 47 162
52 52 168
53 57 170
54 62 170
55 67 172
56 72 176
57 77 174
58 82 180
59 87 176
60 92 180
61 97 184
62 102 176
63 107 186
64 112 184
65 117 186
66 122 193
67 127 191
68 132 184
69 137 188
70 142 188
71 147 190
72 152 188
73 157 188
74 162 191
75 167 190
76 172 195
77 177 188
78 182 190
79 187 193
80 192 190
81 197 188
82 202 193
83 182 190
84 187 193
85 192 190
86 197 188
87 202 1000
=== RIGHT SERVO ===
Table Entries = 88
Zero Speed Index = 34
Index Servo Drive Encoder Ticks/Second
0 -195 1000
1 -190 190
2 -185 186
3 -180 193
4 -175 186
5 -170 181
6 -165 183
7 -160 179
8 -155 175
9 -150 177
10 -145 171
11 -140 171
12 -135 166
13 -130 164
14 -125 156
15 -120 153
16 -115 147
17 -110 143
18 -105 138
19 -100 124
20 -95 120
21 -90 112
22 -85 99
23 -80 92
24 -75 83
25 -70 73
26 -65 65
27 -60 55
28 -55 44
29 -50 35
30 -45 25
31 -40 15
32 -38 11
33 -36 6
34 -29 0
35 -22 8
36 -20 11
37 -18 17
38 -16 20
39 -14 24
40 -9 35
41 -4 44
42 1 54
43 6 62
44 11 73
45 16 84
46 21 89
47 26 100
48 31 110
49 36 114
50 41 121
51 46 113
52 51 114
53 56 117
54 61 157
55 66 171
56 71 173
57 76 179
58 81 183
59 86 190
60 91 193
61 96 190
62 101 195
63 106 200
64 111 195
65 116 197
66 121 197
67 126 197
68 131 197
69 136 198
70 141 200
71 146 198
72 151 198
73 156 200
74 161 200
75 166 200
76 171 200
77 176 197
78 181 200
79 186 200
80 191 200
81 196 200
82 201 203
83 181 200
84 186 200
85 191 200
86 196 200
87 201 1000
Thanks again for all your suggestions
Without reference to the calibration routines provided for the ActivityBot, I still believe it's a good general idea to make sure a servo is not completely out of whack. This requires merely to set the speed to 1500 us (you ignore the encoder), and adjust the potentiometer on the side of the pot until the servos stops rotating. The code is relatively mundane, on the order of:
There is also code on this page:
http://www.learn.parallax.com/propeller-c-simple-devices/standard-servo
that will demonstrate proper function of the servo separate from the encoders and calibration.
These tests will demonstrate whether the servos themselves are good. If they check out, you know your issues aren't with them.
Thanks for posting interpolation tables for two of the three ActivityBots. I’d recommend posting calibration for the third ActivityBot as well, and it’ll also help if we know which of the three symptoms goes with which calibration table. To save time, we can arrange a telephone troubleshooting session. Either PM with times and a number to call, or call Parallax and ask the receptionist for Andy.
What we know so far is that calibration data sets for the FIRST and SECOND robots do not show any signs of circuit mistakes. Given the behaviors you are reporting, let’s check for loose connections. (Unless you already followed Gordon’s centering instructions, in which case we’ll have to start over with rerunning the calibration code and posting new tables.)
Loose Connection Checks:
First, check the white plugs that connect to the encoder sensors. Make sure they are tightly connected. If they are loose, that ActivityBot’s encoders can be temporarily blinded by loss of signal and/or power. If they are blind, the abdrive library will try to correct for errors it sees in wheel speeds because the encoders stopped reporting changes in distance traveled. This could explain the three symptoms you have observed.
Next, check the VIN/5V power setting to the left of the P14/P15 ports. There should be a sleeve called a shunt covering the lower two pins, which connects the 5V lower pin to the middle pin that sets supply voltage for the P14/P15 ports. If the sleeve is not holding the pins tightly, the encoder sensors can periodically lose power and become temporarily blind. This can also explain all the symptoms you listed.
If it looks like you’d have to turn off power and use a needle-nose plier to remove the sleeve because it’s tiny and flush with the short pins, then it’s probably not a problem. But if the sleeves have little tabs sticking up that allow you to remove them with your fingers, it could be a problem. I usually remove this type of sleeve, and bend the lower 5V and middle pins very slightly apart so that the shunt is snug when I put it back on.
Although these are less likely culprits, check to make sure nothing else is loose in the servo and encoder mounting. Also, check to make sure the resistors are 20 k (red-black-orange), and verify that they are firmly seated. Especially if they are trimmed too short, it can lead to similar symptoms.
About the Calibration Tables
The left column is just an index. The middle column is the control signal sent to the servos, expressed as a number of microseconds from 1500. The right column is the speed in ticks per second, expressed as an absolute value. A tick is a transition from spoke to space or space to spoke.
Calls like drive_speed cause the abdrive library to look for a matching speed in the right column and then use the corresponding servo drive signal in the center column as a starting point. If there isn’t an exact speed match, the abdrive library uses linear interpolation to figure out best fit for a starting signal. After starting the servo signal, a control system takes over that checks for differences between calculated and measured distance traveled. It uses these differences to increases or decreases the drive signal and correct errors to keep the speed as close as possible to what drive_speed requested.
A successful calibration will have a 0 in the rightmost column for each wheel, and that 0 should be flanked above and below by numbers that linearly increase to the 170 to 200 range, then level off. There will also be speeds of 1000 at the top and bottom.
The two calibrations you posted are both successful.
About what Gordon McComb said:
The two calibration tables you sent indicate that the procedure he is suggesting is not necessary. The SECOND robot’s left servo is unusually off center: (row 27, -63, 0 speed). I normally expect to see that middle -63 value in the +/- 30 range. Regardless, the measured speeds above and below the 0 speed in the right column are still linear and level off at 180, so the abdrive library won’t have any problem controlling speed. Also, I manually adjusted servos to make my ActivityBot’s calibration tables match yours and then tested it. It works fine.
With all that in mind, that’s why I am looking for electromechanical problems.
Andy
Thanks, Andy. Good to know.