LaserCat

As a company, North Knight Software has a keen interest in working with novel technology. Because of this, we were very excited when we were approached by Dr. Donald Mitchell of Dalhousie University's Psychology Department. Dr. Mitchell is currently researching how cats learn to track moving objects (laser light in this case), but he had no way to accurately and consistently position a laser. He also needed to determine the precise time required for the cats to find and follow the light.
After meeting with Dr. Mitchell and his researchers, we provided a written plan to use as a starting point. We then briefly discussed the plan to ensure that it met all of their requirements, and so that they could choose from our proposed options. In the end, we provided the following:
CECIL, the Cat Entertaining Computer Instructed Laser
Using an Arduino project board, we built a robotic, computer-controlled laser "turret". Being fans of all things silly, we named the turret "Cecil", which became backronymed into CECIL, or "Cat Entertaining Computer Instructed Laser" (Dr. Mitchell's lab helped with the acronym, to be fair).
This device uses two servo motors, driven by the Ardiuno and controlled with a desktop application, to position an on-board laser diode. The application used for controlling the diode works on all major desktops (Mac OS X, Windows, and X11) and provides a user interface for setting up experiment runs. It also corrects the pattern it displays for the angle and distance of the surface it is displaying on.
Consulting
Because both cats and lasers can be pretty speedy, we needed a way to accurately capture the time taken for cats to begin following the laser light, and also any lag in their gaze motion. For this we worked with Dr. Mitchell to help him decide on the best high-speed digital camera for the job.
Work with Dr. Mitchell's lab is ongoing, and we will have more cool stuff to show off in the future.
Technology used:
- Arduino — external electronics control
- Python programming language — user interface implementation
- Ruby programming language — Arduino-computer communications