Motor+Discrepancy

I've been struggling lately with trying to explain to kids (4th and  5th graders) and to their parents about the sometimes "random"  behaviors of mobile robots (this is for an FLL program). For example,  if we seemingly start the robot and program in what appears to be the  exact same position two different times, the robot's ending location  always ends up at least an inch or two off. The kids want to know  "what changed" and I'm struggling to explain it to them in terms  they'd understand. I know that a ton of things can cause the  discrepancy, and I've often tried to explain to them that the robot  doesn't start from the exact same mark everytime, the "free" wheel  isn't in the same orientation, etc..., but I'm not convinced that is  the best answer.

 Not being as familiar with robotics as I like, I'm sure there is a  term for this behavior and I'd really like to know it. Does anyone  have a successful method or exercise that they've used to reinforce  this "randomness" concept?

<span style="font-family: 'Times New Roman',serif; font-size: 12pt;"> Thanks!

[]

Hello Everyone,

I think one aspect is called "gear slack" in the motors and is an indication of the looseness needed to allow the motors to run without binding... and also without lubrication.

According to James Trobaugh's book "Winning Design!" there is about 6 - 8 degrees of gear slack in a NXT servo (page 72) - but I have not measured it directly. Instead I try to introduce an understanding and some coping mechanisms.

One the things I do to illustrate the variation is use a piece of string and a protractor.

Since the motor servos are nominally accurate to within a degree, I have the students put the middle of the string at the origin of the protractor and then see how far apart the two sides are when they are separated by one degree. That helps show the amount of error the devices are designed to accept.

I also use the same technique to stress using degrees instead of fractional rotations for motor durations.

Some potential options I've read about to help overcome this. (I'd have to dig a bit to find sources if interested)

1. Lock the wheels before starting.

In this scenario, the program would have a //move// block with motors stopped, braking, followed by a //wait until// block for a sensor or a button push. That would theoretically start the robot from a set motor position each time.

2. Apply tension to the motors before starting

In this approach, the operator pulls back (just a little) on the robot before starting the program, taking up the gear slack manually.

3. Gear it down.

By changing the gear ratio (making the NXT motor turn more than the drive wheel) the effects of gear slack may be reduced as well, since each amount of error introduced by the motor is reduced a little

For a nice description of the NXT motor internals and other specs (torque curves and so forth) see this site: []

And for a very nice demonstration of error growth over time see this site: [|http://www.xn--schler-dya.net/blog/category/lego-nxt/]-- warning: Internet explorer complained about nonEnglish characters in the link, so you may have to search for [|Familien Schøler's blog] or try this link: [|www.schøler.net/blog/category/]**lego**-**nxt**/

Hope this helps.

All my best,

Craig

<span style="font-family: 'Times New Roman',serif; font-size: 12pt;">Take the students outside, tell them to close their eyes and walk ten steps. Have them do this with partners. Have the partner mark where the student stops. Tell them to do it ten times and see if they land in the same spot each time. Discuss the number of reasons why they might not have landed in the same spot even though they started in the same spot. Ask them how many of those reasons might be something applicable to their robot.

<span style="font-family: 'Times New Roman',serif; font-size: 12pt;"> We used to make up a sheet of things that can go wrong with the robots before FLL comps to hand out. It's on an earlier thread here, but some of the stuff we came up with: <span style="font-family: 'Times New Roman',serif; font-size: 12pt;"> dirt on your playing field <span style="font-family: 'Times New Roman',serif; font-size: 12pt;"> drained battery <span style="font-family: 'Times New Roman',serif; font-size: 12pt;"> tires not seated properly (check each time) <span style="font-family: 'Times New Roman',serif; font-size: 12pt;"> motors not in synch (use axle method to check) <span style="font-family: 'Times New Roman',serif; font-size: 12pt;"> bent axles <span style="font-family: 'Times New Roman',serif; font-size: 12pt;"> "loose robot" meaning a piece came loose and is not snapped properly <span style="font-family: 'Times New Roman',serif; font-size: 12pt;"> when you press start, you move the robot a tiny bit

code

code