Shop OBEX P1 Docs P2 Docs Learn Events
ArloBot motor drive calibration or control loop corrections — Parallax Forums

ArloBot motor drive calibration or control loop corrections

Hello everyone,

I'm new to the world of robotics in general and to the Arlo in particular.
The setup I have at hand is the following:
- Arlo base with + a pair of motor mount and wheel kit + a pair of caster wheels
- Arlo power distribution board
- 2x HB25 motor controllers each connected to individually drive a single motor
- several PINGs
- an Arduino Mega to command them all

What I wan to do with it? At the moment just making it drive around without bumping into things. For later I would like to add the needed things to use ROS for something similar to what ChrisL8 did here.

At the moment I am having trouble making the wheels turn at the same speed. Without any sort of corrections one of the wheels turns ~1.5 times faster than the other one when the corresponding drivers are prescribed with the same speed value. The slower wheel also draws more current (e.g. when the fast wheel draws ~1A the slow one draws ~1.5A). I'm not sure if this is an issue to be concerned about or not...

My question at this point is how can I find out what is the algorithm behind the calibration used for the Propeller board so that I can implement it for my Arduino? I took a look at the code but did not quite manage to figure out what is the main idea behind it. It seems to be prescribing speeds along the interval of valid values and measuring the number of encoder ticks/sec (not sure if these ticks are from both of the encoder sensors or just one of them) for each speed. But I do not understand how these values are used to compensate for the difference in wheel speeds.
I would appreciate if someone could tell me what this calibration algorithm actually does.

A second thing that I tried is to make adjustments "on the fly" by reading encoder ticks (transitions from low-to-high) over a period of 1 sec, but the number of ticks in one complete wheel turn seems to be too small for reliably using such an approach in real-time. Also without an actual relation between encoder tick count and the speed prescribed to the HB25 I did not manage to make this right either. Again I am a beginner in this and my implementation could be wrong. So it would be great if you could give me some pointers in this area to.

Thanks in advance for any hints!
Sign In or Register to comment.