🔧 Physical Build Guide

Build Your
Odometry Pod

A step-by-step guide to building a swing-arm odometry pod using standard VEX parts and a laser-cut Delrin or milled polycarbonate bracket. No 3D printing required.

1
Overview
2
Parts
3
Bracket
4
Assembly
5
Mounting
6
Verify
// Section 01
What You're Building 🛞
Understand the design before you cut or drill anything.

A swing-arm odometry pod is the current standard design used by top VRC teams. It uses a small omni wheel that drags freely along the floor — not connected to any motor — and a rotation sensor that counts every degree the wheel turns. A pivot joint and rubber band keep the wheel pressed against the floor at all times, even when the robot chassis flexes.

ROBOT CHASSIS (BOTTOM) PIVOT SWING ARM (2-wide C-channel) ROT ROTATION SENSOR 2" OMNI WHEEL FLOOR RUBBER BAND → SMART PORT SCREW JOINT DELRIN/POLY BRACKET
■ Omni wheel  ·  ■ Rotation sensor  ·  ■ Pivot + screw joint  ·  ■ Rubber band spring  ·  ■ Custom bracket

Why This Design?

The swing-arm design solves the single biggest challenge with tracking wheels: keeping consistent floor contact. When your robot drives over a game element or the floor is slightly uneven, a rigid mount lifts the wheel off the ground and your position data goes bad instantly.

The swing arm pivots freely, and the rubber band always pulls the wheel downward — so it stays on the floor no matter what the chassis does above it.

Two Build Variants Covered Here

OPTION A
C-Channel Only
Uses standard 2-wide aluminum C-channel as the swing arm and mount. No custom plastic required. Slightly bulkier but 100% VEX stock parts. Best if your school doesn't have cutting equipment yet.
OPTION B ★ RECOMMENDED
Custom Plastic Bracket
Laser-cut Delrin or milled polycarbonate bracket that nests the rotation sensor precisely. Cleaner, lighter, lower profile. Uses one of your twelve 4"×8" plastic pieces per pod.
📋
Rule check (2025-26): Custom plastic pieces must each fit within a 4" × 8" area, up to 0.070" thick. You get 12 pieces total. One pod bracket per pod fits easily — an odometry bracket is typically about 1.5" × 3". Both Delrin (acetal monopolymer) and polycarbonate are explicitly listed as legal plastic types.
// Section 02
Parts List 📦
Everything you need for two odometry pods (one parallel, one perpendicular). Buy extra nylock nuts and screws — they vanish.

VEX Parts (per pod)

PartNotesQty
🔵V5 Rotation SensorSKU 276-6050 — Smart Port, high resolution. Do NOT substitute with potentiometer.×1
🟢2" Omni-Directional WheelSKU 276-7254 — Smaller than 2.75", gives better accuracy. Fits rotation sensor shaft directly.×1
2-Wide C-Channel, 5-hole (2×1×1×5)The swing arm that holds the sensor and wheel. Cut from longer stock if needed.×1
2-Wide C-Channel, 3-hole (2×1×1×3)The fixed mount that attaches to the chassis. Cut from stock.×1
🟡High Strength Shaft Insert (round)From the HS Shaft Insert Kit — adapts the 2" omni wheel to fit the rotation sensor's 0.375" hub.×1
🟡High Strength Spacers (0.375")Used to center the wheel on the screw joint and set correct spacing.×2
#8-32 × 1.5" Screw (Star Drive)This is the screw joint axle — the wheel and sensor rotate around it.×1
#8-32 × 0.5" Screws (Star Drive)For mounting rotation sensor to bracket and bracket to C-channel.×4
Nylock Nuts (#8-32)Used on all joints. Nylock prevents loosening from vibration. Never use keps nuts on the pivot.×6
Bearing FlatOne bearing on each side of the pivot hole in the fixed mount. Reduces friction and slop.×2
🔴Rubber Band #32Creates spring tension to press wheel against the floor. Cross over the arm and hook both ends.×1–2
🔵V5 Smart Cable (8")Connects rotation sensor to Brain. Route away from moving parts.×1

Custom Plastic (Option B)

PartNotesSize
🩷Rotation Sensor Bracket — Delrin preferredNests the rotation sensor body. Holds it rigidly against the swing arm C-channel. Laser-cut or milled. Template provided in next section.1.5" × 3"
Delrin vs. Polycarbonate for this application: Delrin (acetal) is stiffer and machines cleaner with less flex — better for the bracket. Polycarbonate is tougher against impacts. Either works. Use 0.062" (1/16") thickness — thick enough to hold screws, thin enough to fit in the C-channel profile.

Tools You'll Need

⚠️
Buy two of everything. You're building at least two pods — one parallel wheel on the left or right side, and optionally one perpendicular (sideways) wheel for lateral drift correction. Buy parts for both before you start so you're not stopping mid-build.
// Section 03
Bracket Design & Template 🩷
Laser or mill this bracket from Delrin or polycarbonate. All dimensions are in inches for the VEX hole pattern.
📐
All holes are #8-32 clearance (0.170" diameter) unless marked otherwise. VEX standard hole spacing is 0.500" center-to-center. The bracket mounts the rotation sensor flat against the inside face of a 2-wide C-channel swing arm.
0.5" 1.500" 3.000" MOUNT HOLES (×2) 0.500" spacing · 0.250" from edge ROTATION SENSOR CUTOUT (recessed 0.062") SENSOR SCREW HOLES SCREW JOINT 0.190" dia. centered · 0.625" from bottom R0.125" corners
Bracket template — cut from 0.062" Delrin or polycarbonate · Grid = 0.5" spacing · All holes #8-32 clearance (0.170") except screw joint (0.190")

Hole Reference

HoleDiameterPurpose
Top pair (×2)0.170" (#8-32 clearance)Bolts bracket to inside of swing arm C-channel. 0.5" spacing.
Sensor pair (×2)0.170" (#8-32 clearance)Matches rotation sensor mounting holes exactly. Use sensor as template to mark these.
Screw joint (×1)0.190" (slightly loose)The screw passes through here — needs to rotate freely, not thread into plastic.

Manufacturing Notes

💡
No laser cutter? Option A uses two pieces of 2-wide C-channel instead of the plastic bracket. The rotation sensor bolts directly to the inside face of the swing arm C-channel using its built-in mounting holes. It's slightly less precise but fully functional and uses zero custom plastic.
// Section 04
Step-by-Step Assembly 🔧
Build the pod in this exact order — some steps are impossible to do if you've already done the next one.
🛑
Read all steps before you start. Steps 3 and 4 must be done together — if you fully tighten the screw joint before threading the wheel on, you'll have to undo it.
1
Mount the rotation sensor to the bracket

Place the rotation sensor flat against the bracket with its shaft hole aligned to the screw joint hole in the bracket. The sensor's cable port should face upward (toward the robot chassis) when installed.

  • Insert two 0.5" screws through the sensor's mounting holes and through the bracket
  • Thread on nylock nuts and tighten firmly — these don't need to pivot, so fully tighten
  • The rotation sensor shaft hole should now be centered on the bracket's screw joint hole
If using Option A (no bracket), bolt the rotation sensor directly to the inside face of the 5-hole swing arm C-channel, positioned so the sensor shaft hole aligns with a C-channel hole.
2
Mount the bracket to the swing arm C-channel

The swing arm is a 5-hole 2-wide C-channel. The bracket bolts to the inside (web) face of the C-channel at the bottom end. The rotation sensor will hang below the C-channel, pointing down toward the floor.

  • Slide the bracket into the C-channel — it should nest inside the 2-wide profile
  • Align the top two bracket mounting holes with C-channel holes
  • Insert 0.5" screws through the C-channel holes and bracket, add nylock nuts
  • Tighten firmly — this joint must not flex at all
  • The screw joint hole should now be about 0.5" below the bottom edge of the C-channel
3
Build the screw joint (wheel axle)

The screw joint is the axle the 2" omni wheel spins on. The rotation sensor measures this rotation. Assembly order matters here — do it in this sequence:

  1. Take the 1.5" #8-32 screw — this is the joint axle
  2. Thread on a nylock nut and tighten against the screw head to act as a fixed stop
  3. Slide on a 0.375" high strength spacer
  4. Push the screw through the bracket's screw joint hole and through the rotation sensor's shaft hub
  5. Slide on the High Strength round shaft insert (this is what the wheel grips)
  6. Slide on the 2" omni wheel — it should seat on the HS shaft insert
  7. Slide on the second 0.375" spacer
  8. Thread on the final nylock nut — tighten until the wheel spins freely with minimal side play
⚠️
The wheel must spin freely. The nylock nut on the outer end should be tight enough to prevent side-to-side wobble but loose enough that you can spin the wheel with one finger with no resistance. If it's stiff, the sensor data will lag. Back off the nut a quarter turn at a time until smooth.
HEAD NUT SPCR BRKT SENSOR INSERT 2" OMNI SPCR NUT
Screw joint exploded view — left to right assembly order
4
Build the fixed mount and pivot joint

The fixed mount is a 3-hole 2-wide C-channel that bolts to your robot chassis. The swing arm pivots off this mount using a screw joint with bearing flats.

  1. Press a bearing flat into one hole at the end of the fixed mount C-channel
  2. Press a second bearing flat into the matching hole at the top end of the swing arm C-channel
  3. Align the two bearing holes and pass a 0.75" screw through both
  4. Add a nylock nut and tighten until the joint is snug but pivots freely — no wobble, no stiffness
💡
The pivot screw should be tight enough that the swing arm doesn't flop around loosely, but loose enough to swing under the force of the rubber band. Test by pushing the arm up — it should return smoothly when released.
5
Add rubber band spring tension

The rubber band presses the wheel against the floor. It hooks from a screw on the robot chassis to a screw on the swing arm, crossing over the pivot point.

  1. Insert a short screw into the fixed mount above the pivot — this is the anchor point on the chassis side
  2. Insert a short screw near the bottom of the swing arm — this is where the other end hooks
  3. Stretch a #32 rubber band between the two screws so it pulls the wheel end of the arm downward
  4. Test: lift the robot chassis up. The wheel should stay in contact with whatever surface it's resting on, even when the chassis tilts slightly
⚠️
Don't over-tension. Too much rubber band force lifts the drive wheels slightly or adds drag. One #32 rubber band is usually right. If the wheel bounces or chatters, add a second band.
6
Route and secure the smart cable

The rotation sensor's cable must flex with the swing arm without binding or being pulled tight.

  1. Connect the 8" smart cable to the rotation sensor before mounting the pod to the chassis
  2. Route the cable alongside the swing arm upward toward the chassis
  3. Leave a loop of slack at the pivot joint — enough cable that the arm can swing its full range without pulling on the connector
  4. Secure the cable to the fixed mount using a small zip tie or cable clip — anchor it above the pivot so only the looped slack moves with the arm
  5. Route the cable to the nearest available smart port on the V5 Brain
🛑
A cable that pulls tight during robot movement will either disconnect mid-match or eventually break the connector. Check the cable by manually moving the arm through its full range — it should never go taut.
// Section 05
Where and How to Mount the Pods 📐
Position matters as much as build quality. Getting this wrong causes the math to be off even if the pod itself is perfect.

Parallel Pod (Forward/Back Tracking)

This pod measures Y-axis movement — how far your robot has driven forward or backward.

ROBOT TOP VIEW (looking down) PARALLEL POD FORWARD MEASURE THIS (offset value)
Parallel pod mounted on the left side, centered vertically · Measure distance from pod center to robot center for offset value

Parallel Pod Placement Rules

Perpendicular Pod (Sideways Tracking — Optional)

This pod measures X-axis movement — lateral drift. The wheel faces sideways (90° rotated from the parallel pod).

💡
One pod is enough to start. Build and tune one parallel pod first. Once that's working reliably, add the perpendicular pod if you find sideways drift is affecting your autonomous. Adding complexity before the first pod is tuned just makes debugging harder.

Clearance and Protection

⚠️
Mark the mounting holes before you drill. Hold the fixed mount in position, mark the bolt holes, then drill. Don't guess by eye — a pod that's 0.1" off center is enough to cause measurable position drift over a full autonomous routine.
// Section 06
Verification Checklist ✅
Run through every item here before connecting the pod to code. Catching mechanical problems now saves hours of debugging later.
🔧
Do this with the robot on a flat surface — ideally the same VRC foam tile mat your robot will compete on. Concrete and carpet have different friction profiles that affect how the wheel rolls.

Mechanical Checks

Spin test — wheel rotates freely

With the robot on the floor, spin the omni wheel by hand. It should spin with almost zero resistance for at least 2–3 full rotations after you let go. If it stops immediately, the outer nylock nut is too tight — back it off 1/4 turn at a time.

Contact test — wheel stays on floor

Lift the robot 2–3 inches and set it back down. The tracking wheel should always be the first thing touching the floor. Push one corner of the robot down (simulating going over a game element) — the wheel should stay in contact on the other side. If it lifts, add a second rubber band.

Cable slack test — no tug across full swing range

Manually push the swing arm upward to its maximum compressed position (like the robot is driving over something). The smart cable should still have visible slack — it should never pull tight. If it does, reroute or use a longer cable.

Brain recognition — sensor shows on device list

Turn on the V5 Brain. Go to Devices → Rotation Sensor. It should show the sensor and its current position value. Push the robot forward by hand — the position value should change continuously. If it shows 0 and doesn't change, check the cable connection at both ends.

Direction test — sensor counts in the right direction

Push the robot forward. Watch the sensor position value on the Brain screen. It should increase when pushing forward. If it decreases when pushing forward, the sensor is mounted backwards — add true as the last parameter when declaring the sensor in code (don't flip the physical hardware).

Distance accuracy test — push 24 inches, check reading

Using the code from the odometry guide (printf position every 100ms), reset the sensor position to 0. Push the robot forward exactly one VRC tile (24 inches — measure with tape). The Y reading should be close to 24.0 inches. If it reads significantly more or less, your wheel diameter or gear ratio value in code is wrong. A 2" wheel should give very accurate readings with the default EZ Template settings.

Within ±0.3 inches over 24 inches is excellent. Within ±0.5 inches is competition-ready. More than ±1 inch means something is wrong — check that the wheel is actually 2" diameter (not 2.75") and that your EZ Template tracking wheel declaration has the correct diameter value.

What to Record in Your Engineering Notebook

📓
Record this in your engineering notebook — judges love seeing documented build decisions with measurements. Noting why you chose a swing arm over a rigid mount and how you verified accuracy shows excellent engineering process.
🏆
Pod is built and verified — you're ready for software! Head back to the Odometry guide and follow Sections 3–6 to configure EZ Template, plan your coordinate paths, and tune your PID constants.
⚙ STEM Highlight Engineering: Precision Manufacturing & Tolerance Stacking
The odometry pod is a precision mechanism — small assembly errors accumulate into large position tracking errors. Tolerance stacking is the phenomenon where multiple small manufacturing tolerances (each ±0.5mm) combine into a larger total error. For a 3-component assembly, worst-case error = sum of individual tolerances. Using a laser-cut bracket (±0.1mm) instead of hand-drilled holes (±0.5mm) reduces stacking significantly. The wheel must roll with zero slippage — the spring-loaded design applies consistent normal force, which controls the friction coefficient precisely.
🎤 Interview line: “Our odometry pod uses a laser-cut bracket to minimize manufacturing tolerance. We calculated that three ±0.5mm drill errors could stack to ±1.5mm misalignment of the tracking wheel, producing a proportional heading error. The laser-cut tolerance of ±0.1mm reduces this to ±0.3mm — a 5× improvement.”
🔬 Check for Understanding
Your tracking wheel occasionally loses contact with the ground during hard stops, causing odometry jumps. The engineering fix is:
Increase the spring tension to maintain contact during deceleration forces
Add more encoder resolution
Reduce autonomous speed
Move the pod to the center of the robot
Related Hardware Guides
📍 Odometry →🌍 V5 GPS Sensor →🔍 Robot Pre-Check →
Related Guides
📍 Odometry → 🌍 GPS Sensor → ⚡ Wiring & ESD →
← ALL GUIDES