Our robot is planning to add odom wheels to track the robot’s position.
Our robot has a regular drivetrain, with 2 traction wheels at the back and 2 omni wheels at the front. We are planning to add an omni wheel on each side of the robot (2 total) and connect them to the encoders to track the robot’s position.
I see people who use mecanum or X-drive add another horizontal odom wheel at the back of the robot. Is it necessary for us to have one?
All robots that use absolute position tracking have a set of perpendicular tracking wheels. You only need one tracking wheel along each axis to measure your robot’s displacement along that axis, but you do need to measure both axes, hence the set of perpendicular wheels. The third tracking wheel that is parallel to one of the other ones is used to measure angular displacement, though you can do this with the inertial sensor if you don’t have space for 3 tracking wheels.
Well, no. If you trust that your traction wheels will not slip, then there’s no need to have a horizontal tracking wheel.
Hopefully this means one omni wheel on each side of the robot; two is unnecessary.
Dare I say you don’t need tracking wheels in the direction parallel to the chassis wheels. Though I can’t recommend this route for a novice programmer because you have to thoroughly ensure that the wheels won’t slip or can’t slip. It’s requires more than code to get this set up to work –– you need to design your chassis to have the lowest center of mass possible and have roughly equal weight distribution on all 4 wheels and more pre-cautionary measures (maybe even anti-tips on both ends of the chassis).
There is also a way to measure slippage based on the change in motor load over time (assuming each wheel is independently powered). Alternatively, you could use a tri-axis accelerometer and double integrate the output values to measure displacement (though this is not recommended with the limitations of Vex sensors).
TL;DR I just wanted to show that odometry is not limited to what the Pilons have done in the past. The scope of general programming knowledge is very limited on the forums