GPS vs Odometry

We just switch from IQ to VRC, have a question whether GPS is better in easy use and accuracy than Odometry during auto? I know GPS is much more expensive. If GPS works better, we will not buy odometry. Thank you.

Here are some of the attributes and differences between odometry and GPS


  • single sensor
  • uses an internal camera to read gps strips
  • little to no code
  • requires gps strips
  • blindspot around the field perimeter
  • does not drift
  • expensive
  • may be unreliable (sister team has had a bad experience with them)


  • uses multiple sensors (usually encoders and may use an IMU)
  • usually uses unpowered tracking wheels to track position
  • requires code and a bit of trig to make work
  • does not require gps strips (usable on any field)
  • no blindspot
  • much more reliable but can drift

Someone can correct me if im wrong, but I don’t think GPS strips are mandatory for all fields, only the ones that are doing auton skills. So you can have a better auton using GPS, but it may obly be available for skills, or have a less consistent odometry auton that you can use all the time. Also you can’t buy odometry lol.

1 Like

GPS is automatic and much easier to use, however it is not yet required on match fields, only practice ones as far as I’m aware. Therefore, odometry would be a much safer option because it can be used on any field.

1 Like

You can still use inertial sensor to plot distance and speed from a specific point, it will be somewhat like how you did it in VIQC.

GPS strips are only required in Skills rooms for now, not required in Competition, but most EP’s have been making the switch over to the portable fields (especially in Hawaii)

Odmetry is way better. Gps strips are not required on match feilds meaning that you cant even use GPS for your 15second autonomouse. Odometry is also alot more accurate especially if you use proper tracking pods. odometry can also be effectivley used on competition feilds not only skills feilds and with odometry on competition feilds you cna write all kinds of functions. for example last year alot of teams used odometry to track the robots position and orienttion so that they could have the fly wheel always be at the right speed for shooting based on the distance away from the goal and could track the robots position relative to the goal so that you could have an auto aim function so that with just a click of a button the robot could turn to the proper heading for shooting disc making tha task of scoring high disc alot easier for some. Odometry is definitley alot more reliable when properly tuned and executed and is definitley alot more versitile and not to meniton cheaper.


Odometry this year will probably be a lot trickier as compared to last because of the barrier, trying to get the pods to track consistently when going over the barrier is going to be an additional challenge.

1 Like

Thank you so much for very detailed clarification!
What do you mean “proper tracking pods”?

When we were in VIQC, we heard about some chinese team can control the flywheel speed by click a button which has the same concept as what you mentioned. We can’t imagine that because it is so advanced skill. As far as we know, when we use the controller, it has buttons to control everything already. So how can we modify them to let them listen to us when we click a button, the speed will change? Basically, where can we modify it?

You can modify he code by uploading your own code through one of the many vex coding languages such as vexcode blocks, vexcode pro v5, and PROS.
Here’s an extremely helpful link that I highly recommend you read:

Thanks. But that is for auton which we use your way to download to the brain. What is confusing me is how to modify the “natural or original” code in the remote control for manually driving?

Here are some great videos on odometry:

Also by proper tracking pods im talking about wheels that will maintinan contact with the ground at all times so that even if the drive train wheels skip the odom wheels will still be able to tell if there was robot motion or not.
As for the chinese teams having the variable speed flywheel i am guessing that they just write their own driver control and have buttons with designated presets. For example for Spin up last year i had my flywheel speeds set for close far and intermediate range and i had a button that would allow me to cycle through these speeds as well as through my deflector position. I also had 2 buttons on my controller that could be used to increase or decrease the speed of the flywheel by increments of 10rpm.

This guy has alot of videos on programming different aspects of the robot
Another thing that you can do is taht once you have installed vex code bocks there are alot of tutorials on programming different aspects.


I’m assuming you mean the default control code that is on the controller and brain. There is no way to modify that code and you will need to create your own custom code for driving the robot and using buttons.

1 Like

You are so smart! Yes, we were told that they wrote their own driver control and have specific buttons with individual speed presets. We couldn’t imagine how they can modify the driver controller because we thought it is factory presets. Would you please tell us how we proceed with that change? One more question is how you can do that because the controller has limited amount of buttons? Thanks.

Yes, you are correct. We created our custom code for auto program but we never know the driving and buttons can be custom coded and where can we modify them? For example, during driver control, when we click the button for flywheel, we just click it in factory preset. So if we found the speed is too fast, we have to drive our robot backward by guess or experience. However, some teams can click button A for fast speed and button B for slow speed. That is the question bothering us in the whole season.

I’m not sure how everyone else did it but I used the left and right bumpers that would increment the variable controlling speed. I can also help explain how auto speed worked. What I did was figured out the speed needed to shoot from several set distance then I used linear regression to find an equation that would model that data. Then I simply put the equation into the code. You have 12 buttons + the joysticks so buttons are rarely an issue.

1 Like

In VRC you get alot more buttons but you could also have a button that acts a “shift” key so that when you click that button the other buttons control a different function. 38141B did taht during TIP for their toggling mogo clamps

Would you please show us an clear example how to mount the odometry for us to learn or copy
Screenshot 2023-05-30 120555
because V5 website shows connecting it directly on a gear but a lot of videos have a separated odometry like below.

So you can do either way. The odometry pods offer the advantage of tracking position even if the DT slips or if you get pushed sideways ect becasue they never loose contact with the ground. IF you put them directly on the dt gears then you can cut some weight and makes robot more compact. We just used the drive train and didnt use a latteral wheel last year because we wanted to be able to climb the barrier and the odom wheels would get caught on the barrier. this set up means that for the 15 sec autons and the auton skills it works fine but for regular match play you cant have the more complex functions that are tracking dependeant like auto aim.

here is a old vex forum thread with multiple different odometry pod set ups

1 Like

Thanks for answer my question again. By using GPS, it is very easy for me to understand that where the robot position (value of X and Y) is at even after a lot of push. However, if using odometry, it is very hard for me to figure out how the odometry knows the value of X and Y after tons of push.

Odometry works by having access to three different pieces of information:

  1. the robot’s current heading
  2. a distance moved in the forward/backwards direction
  3. a distance moved in the left/right direction

I’m not going to go into the math here (there are a lot of good docs and other vexforum posts that can explain it much better than me), but with that information you can calculate the robot’s position.

Information pieces 2 and 3 are why people use tracker wheels/odom pods/ whatever you want to call them. The more accurate that data is, the more accurate your robot’s position will be. If you attach encoders directly to your drivetrain and your wheels start to slip, your odom position will have changed even though your robot did not move.

For some details about the first piece of information, this can be obtained in two ways:

  1. use the imu sensor
  2. use 2 parallel wheels and do some more math to calculate how much you have turned.

The imu can encounter drift over time, so people generally find 2 parallel wheels to be slightly more accurate.