My two previous NavBots both had fundamental issues with regard to dead reckoning. The Zumo’s tracks introduced too much error due to their large surface area and Wallie Bot’s wheel encoders just didn’t have enough resolution for the job.
I decided to build a new bot that addresses those problems. It uses the same chassis and geared motors that Wallie has but also uses the high resolution optical encoders and smaller thinner wheels.
- 1 x Arduino Uno Rev 3
- 2 x Pololu 5″ Robot Chassis RRC04A Transparent Gray
- 2 x 75:1 Micro Metal Gearmotor HP with Extended Motor Shaft
- 2 x Optical Encoder for Micro Metal Gearmotors 5V
- 1 x Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit
- 6 x Aluminum Standoff: 1-1/4″ Length, 2-56 Thread
- 6 x Aluminum Standoff: 1/2″ Length, 2-56 Thread
- 6 x Machine Hex Nut: #2-56
- 4 x Machine Screw: M3
- 1 x Pololu Ball Caster with 3/8″ Metal Ball
- 2 x Pololu Wheel 32x7mm- Black
- 2 x Pololu Micro Metal Gearmotor Bracket Extended
- 2 x Pololu Micro Metal Gearmotor Bracket – Black
- 1 x 4-AA Battery Holder, Back-to-Back
- 1 x MakerShield
- 1 x Bluetooth Module
For this build I decided to run the motor/encoder wires down through the chassis so that I could encase the optical encoders using the extended brackets and some black electrical tape. Keep in mind that this design was driven by the parts I happened to have at hand rather than any grand plan.
[UPDATE: Pololu now have magnetic shaft encoders that much easier to setup and use: Magnetic Encoder Pair Kit for Micro Metal Gearmotors]
First step was to solder on the encoders. Here is an image from a previous build:
Next was to mount the motors on to the chassis and marked where to drill to make a hole for the motor wires to come through.
Once that was done it was a simple case of soldering on the wires and mounting the motors once again while routing the wiring through the holes.
After mounting and testing that the encoders where working I filled in the under holes with hot glue to both provide support for the connections and to stop dust and debris from getting into the encoders.
A little bit of electrical tape is used to cover up the center hole of the chassis.
Using the extended brackets as enclosures for the encoders I initially only used a piece of electrical tape over each end in order to isolate the encoders from one another but it was also necessary to line the enclosure to minimize internal reflections due to the white plastic.
Here you can see the two extended brackets bolted into place using custom drilled holes.
After retesting that the encoders where still working and aligning the wheels as best I could, I used hot glue around the base of the brackets to ensure no dust or debris can get in.
Then it was a simple matter of wiring everything up.
Not the prettiest looking bot but perfect for my needs.
So how does the new bot perform? That is for a future post or two. I will say that it is a vast improvement over the Zumo bot. I am still trying to figure out calibration issues and some strange systematic error behavior.
But to give some idea of performance here is a picture of one of the tests I perform:
Here I taped a sheet of graph paper to the floor and used a black spot as the stating point for the bot. It then traversed a 60cm sided square clockwise and then counter clockwise to end back at the stating point. I then marked on the paper the actually end position. Each grid on the page is about 6mm or 1/4″.
One of the curious aspects was that the clockwise run was always very close to the starting point as you can see from this video of the first run:
Obviously the bot is well calibrated for clockwise travel but not so well for counter clockwise… but that is for another post.