In order to align my team’s robot to the target, we need to move the robot a certain number of degrees.
We have 4 Motor Drive with encoders on a cimple gearbox. We have already written the code to figure out how many degrees to move, but we cannot figure out how that corresponds to wheel movement. I would assume that it is dependent on wheel size and robot size.
Wheels:
8" Diameter, 25.1327412" circumference
Robot:
I am unsure as to how wide the robot is, because I don’t have it in front of me right now, but an explanation of how to use the width (If necessary) would be helpful.
My question is, How do I figure out how much to move the wheels?
You’d need to know the behavior of the wheels while your robot turns, then use that model to determine the amount of turns, then use that to count the number of ticks while driving in a turning motion.
It’s a skid-steer vehicle, so it depends on the phase of the moon and yesterday’s lottery numbers.
But seriously, you could use a gyro (as the previous poster suggested), or you could do some simple experiments and measure how much vehicle rotation you get vs how much the wheels turned. Do that under various conditions (like turning speed) and either fit a model to the data or prepare a lookup table. Make sure you use the same carpet as competition when running these tests, and with the competition weight.
You can measure your linear distance (perimeter circle) with an encoder.
It’s a skid-steer vehicle, so the wheel is slipping when turning. It’s also not perpendicular to the direction of travel. Thus my semi-humorous remark in my earlier post.
Like many others have said, a gyro would be the best bet. You can use them for more than just positioning too. We use them to keep us driving in straight lines since doing that based on encoders alone is near impossible. You also may consider a range finder in addition to help your robot know where it is in relation to the field for greater accuracy. Just remember to have your gyro automatically recalibrate itself at the begging of autonomous for best results as they tend to wander over a course of time.
This link points to a document that explains how to do localization. The PDF pages 19 & 20 show the formula to convert wheel movement into position. For this to work your robot would need to pivot about the center wheels. If they are dropped some this often happens.
This isn’t the total solution you are looking for but I think it will get you moving in the right direction.
If you have a gyro there is some default code that does all of this for you. Look in the targeting example code.
Yeah, if it’s a dropped-center 6WD with sufficient drop and with most of the weight over the center wheels it might work. The OP didn’t mention 6WD though.
What do you mean by “continuous” process variables? This should get the current gyro heading every time the loop runs and compare that to the setpoint. (And this is just a 2-minute example anyhow…)
Ah, I see what you mean. I didn’t say this was a perfect example, I just wanted to quickly demonstrate how one could zero in on an angle using a gyro and PID.