Shop OBEX P1 Docs P2 Docs Learn Events
Frustrations with my family of bots! — Parallax Forums

Frustrations with my family of bots!

BinaryForeverBinaryForever Posts: 2
edited 2014-12-10 15:24 in Robotics
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.

Comments

  • PublisonPublison Posts: 12,366
    edited 2014-12-09 03:20
    Welcome to the forum!

    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.
  • PublisonPublison Posts: 12,366
    edited 2014-12-09 06:23
  • GordonMcCombGordonMcComb Posts: 3,366
    edited 2014-12-09 07:46
    In addition to the thread links here, also be sure to read through the ActivityBot troubleshooting section on the Learn site:

    http://learn.parallax.com/activitybot/troubleshooting

    A few of the issues you report are noted in this document.
  • Courtney JacobsCourtney Jacobs Posts: 903
    edited 2014-12-09 08:11
    Also, if you could provide us the calibration table data for the three misbehaving robots we could potentially help narrow down the issue.

    You could post the data between code tags or take screen captures of the terminal window, whichever is easiest.
  • BinaryForeverBinaryForever Posts: 2
    edited 2014-12-09 12:41
    Thank you, everyone, for your replies.

    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.
    IMG_1517x.JPG


    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
    640 x 480 - 194K
  • GordonMcCombGordonMcComb Posts: 3,366
    edited 2014-12-09 13:33
    I'm still not clear whether the calibration code can overcome a seriously out-of-center servo, or that all of the high speed servos are sure to come from the factory with their centering pots more or less in the middle.

    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:
    #include "simpletools.h"
    #include "servo.h" 
    
    int main()  {
        servo_angle(12, 900);                   // P12 servo to center
        pause(10000);                               // Go for 10 seconds
        servo_stop();
    }
    

    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.
  • edited 2014-12-10 14:51
    Hi BinaryForever,

    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:
    “I'm still not clear whether the calibration code can overcome a seriously out-of-center servo, or that all of the high speed servos are sure to come from the factory with their centering pots more or less in the middle.”

    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
  • GordonMcCombGordonMcComb Posts: 3,366
    edited 2014-12-10 15:24
    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.

    Thanks, Andy. Good to know.
Sign In or Register to comment.