# Could you help me with the concept of odometry?

who can share a base code to guide me a little more I have the knowledge but I don’t know how to apply it for now I am using the PID denomination I would appreciate anyone who can help me

Make sure have read through Odometry - vex wiki
Here’s a basic outline

1. Calculate the position of the encoders
2. Find the change in position
3. Update the stored previous values
4. Convert the change in position from degrees to inches
5. Find the robot angle
6. Rotate the change in position to be global using the robot angle
7. Add to the previous known x and y values of the robots.
6 Likes

Hello, yes I understand what you are saying, I have a clear concept but I don’t know how I could articulate it to Vex code V5 pro

6 Likes

``````LEncoder = LB.position(degrees)
REncoder = RB.position(degrees)
``````

then find the change in position and convert to distance. This works by converting degrees to radians and multiplying by the radius to find the arc length

``````distL = ((lEncoder - prevLE) * M_PI / 180) * lRad
distR = ((rEncoder - prevRE) * M_PI / 180) * rRad
``````

then update the previous values

``````prevLE = LEncoder
prevRE = REncoder
``````

find the average heading in radian (this will help with the trig later

``````Heading = ((gyro1.rotation()*M_PI/180))
``````

then you rotate the change in local x and y using a rotation matrix

``````X += (deltaY * sin(averageHeading)) + (deltaX * cos(averageHeading))
``````

``````this_thread::sleep_for(10)
``````

repeat
this should be good enough to write it in vexcode pro v5
you would put this in a function with a while true loop and initialize it in a thread

8 Likes

Hello 2775Josh , thank you for your contribution, it is very effective, you help me a lot.

I have some questions, I would like to know if you could help me with this, I would appreciate it very much