Ol' Blue Mod 2

Additional experimentation demonstrated that Ol' Blue Mod 1 was capable of performing basic wandering and collision avoidance/recovery. Still, the robot had no idea of where it was or where it was going. There was no feedback for its movement other than the crude distance measurment provided by the IR Ranger. To address this problem Ol' Blue Mod 2 has been developed. In order to provide position knowledge through dead reckoning, two optical encoders will be attached to each end of the robot. Each optical encoder consists of a optical mouse sensor fitted with a new lens. The optical encoders provide translation and rotation infomation as the robot moves. Absolute azmuth is obtained from a magnetic compass. My choices were either a Dinsmore 1490 compass sensor or a digital compass of my own design. I decided to develop a digital compass as a learning experience. The circuits for these sensors are illustrated in the Optical Encoder and Compass schematic. These sensors are accessed through address 0x1A (both read and write) on the G-bus

Optical Mouse Encoders

In order to perform dead reckoning on a robot, some sort of sensor must be installed to relate motion of the robot to a measurable signal. I was originally looking at using mechanical encoders taken from a old IBM PS/2 mouse and attaching them to the axels of the drive motors. As the axels rotated. The robot could gain an indication of its rate of movement, hence the distance traveled. Some of the robotics articles that I read pointed out that the use of mechanical encoders for distance measurement were succeptible to error due to slippage of the wheel or track agains the surface they were running on.

I happened upon the application note Interface to Optical Mouse Sensor on the Kronos Robotics website. It discusses the use of a sensor from an optical mouse for use in position sensing coprocessor on a robot. The idea is that the optical mouse sensor would be pointed at the surface that the robot was running on (A new lens system would be created to allow the sensor to be focused on the surface.). As the sensor is moved, the distance changes would appear as mouse counts in the "x" and "y" directions. With proper calibration, these counts would equate to measures of distance moved by the robot.

I have taken a BTC M850 3D Optical Mouse and performed the same experiment as outlined in the Kronros application note. The M850 uses the same sensor as the GE mouse, an Agilent/Avago ADNS-2610. Details of the BTC M850 Mouse Hack are found here. The animated GIF image to the right shows a sequence of three images taken with the mouse sensor sitting on top of the "Group 3" lines of a USAF Lens Test Chart. Please forgive the quality of the test chart, as it was created with a laser printer. It is not a high-quality photographic film or a metal stencil. While this demonstrates the feasibility of using the mouse sensor, it does not resolve the issue of creating a new lens system to properly focus the sensor.

I found another very useful source of infomation, especially related to lens system development, in the article "Insect-Inspired Optical-Flow Navigation Sensors" published in the October, 2005 issue of NASA Tech Briefs. The article discusses the feasibility of using a mouse sensor to measure the movement of a Mars probe as it flys a few meters above the surface. A lot of information is provided to develop a new lens system based on the specifications of the standard mouse lens system. Using my experience with the BTC M850 Mouse Hack and using the NASA document for additional inspiration, I developed a new printed circuit board assembly for the ADNS-2610 and an optical assembly to hold it. The steps for constructing Cody's Robot Optical Motion Sensor #1 (CROMS-1) are described here.

Sixteen-Point Digital Compass

While the Dinsmore 1490 digital compass was a reasonable solution for providing absolute azimuth data for the robot, I felt that it did not make optimal used of the data bits it used on the I/O port. The Dinsmore 1490 only provides eight compass directions (N, NE, E, SE, S, SW, W, and NW), but requires four bits of I/O if the sensor is accessed directly. Four bits should be able represent sixteen different states. Encoding logic could be used to translate the output of the Dinsmore 1490 into a three-bit representation. This would leave one additional I/O data bit free for other uses. Unfortunately, I didn't have any other uses for the I/O port. I decided upon an alternate solution: construct my own sixteen-point digital compass!

Due to the placement of the rear optical encoder, the location of the calibration sail had to be moved. It now rests on the top of the robot's main body, next to the power switch. There was just enough room for it there. It is only about half an inch closer to the turret than before, which is probably inconsequential. The compass is fastened to the top of the mast of the calibration sail, so its magnet is well removed from the electric motors of the robot. A ribbon cable brings the compass signals to the interface port on the RTXEB controller card. The compass signals are buffered on each end, so motor noise should not be an issue. Preliminary testing shows that the compass works well enough for this robot. Further testing will bear this out.

Additional Photos

A left-side shot of Ol' Blue Mod 2 showing the cabling for the optical encoders and the digital compass.

An angled overview of Ol' Blue Mod 2.

© 2005, 2006 Mac A. Cody

Last updated Friday, July 28, 2006