Go Down

Topic: How to calibrate the wheel encoder's error by accumulation? (Read 938 times) previous topic - next topic

yangkai

Hi, I want my arduino two-wheel car to run a certain distance & turn 90 degrees accurately.

But it is inaccurate after few rotations ,it would rotates overhead.

I have two attachInterrupt:
attachInterrupt(0,rotation_count,CHANGE);
attachInterrupt(1,rotation_count2,CHANGE);

function rotation_count&2  is just a count++(count is a global variable which sets 0)


void moveForward(void)
{
  while(count<=48)
  advance();//no delay
 
  count=0;
  stopRL();
  delay(5);
 
}

I have a stupid solution : After few moveForward()'s , while(count<=x) for x<48 , maybe 45 to reduce
the error value.

 https://www.youtube.com/watch?v=hGNxXqQgHYY  their car are so fast and turn 90 so smooth without
any error.
https://www.youtube.com/watch?v=xqyLlLhU6lo  also turns great 90.

How did they do it so well?

Chagrin

If you watch the first video the announcer states that gyros are being used to help with making perfect 90 degree turns. In addition to that they all have proximity sensors so they can gauge their distance from the walls.

yangkai

But I thought a gyro sensor also has drifted or offset ,it makes the data become unstable,right?

Chagrin

The gyro is only used to make the 90 degree turn - less than a second's worth of time so drift is not important. Once the car starts travelling down the path they can make adjustments to get the alignment right based on the proximity sensors' readings for distance to the walls.

yangkai

Ok, that makes sense. And what do you think my solution,is it a common way or not?

Go Up