Page tree
Skip to end of metadata
Go to start of metadata

The spherical treadmill system was presented in:

Two-photon calcium imaging from head-fixed Drosophila during optomotor walking behavior.

Johannes D Seelig*, M Eugenia Chiappe*, Gus K Lott*, Anirban Dutta, Jason E Osborne, Michael B Reiser & Vivek Jayaraman. Nature Methods (6 June 2010) | doi:10.1038/nmeth.1468

Between the published paper and the information presented on this web site, we want to provide everything you need to build a complete fly spherical treadmill system. We apologize for any missing information, but will be happy to fix that if you let us know (see contact info on the Home page).



There is a long history of putting a tethered insect on a ball to measure its movements in response to controlled sensory stimuli. As mentioned in the publication, Karl Götz and Erich Buchner had fly-on-a-ball systems working almost four decades ago. Our system uses modern image processing technology to acquire, with high temporal resolution, velocity about all axes of rotation of the ball. The first system to use optical mouse sensors came from Berthold Hedwig's lab, which used them to monitor crickets walking on a ball. 

Hardware assembly

Zipped Autodesk Inventor CAD files for the tracker system are available here. TreadmillSystemFinal.iam is the top-level assembly.

Note (July 10th, 2010): If you downloaded the CAD files before July 10th 2010, we had accidentally included an old CAD file for the ball holder ("6mm Treadmill.ipt"). Please use the newer "6mm Treadmill Gen 2.ipt". If you have already machined a holder based on the old CAD diagram, please cut the top of the holder so that the hemispherical hole supporting the ball is only 1.25 mm deep. This is important both for the ball to be seen clearly by the cameras and for stable airflow under the ball.


Treadmill tracking cameras

This is what our standard setup has (but you should be fine with alternatives too - just make sure your lens doesn't have an IR coating):

1) 25mm computar c-mount lens:
2) 2x extender:
3) And another extension to focus the image on the chip: C-Mount Extension Tube (10mm Length) NT54-629 (on Edmund Optics)

The mouse chip used in the treadmill tracking cameras is no longer available. Please notify us, if you found a possible replacement and would like us to share your solution here.

IR illumination of treadmill ball

For the illumination we used high-power IR LEDs from Illumination control: SLFA-850-12-2-SA-110. These are no longer available.

Focused IR LEDs with custom wiring are low-cost alternative. The necessary parts are:

The LEDs were wired in series so that they both received the same amount of current. They were mounted to rail carriages with stiff wire so that they were in line with the cameras, and adjusted so that they sat below the camera line of sight and pointing up, illuminating the ball centre.

Ball material

We use polyurethane foam from general plastics' LAST-A-FOAM FR 7100 series:

This product series includes foams of different densities. The density of the foam affects the ball weight and inertia and as a consequence the fly's walking behaviour. In the lab we have primarily used  FR-7120 (20 lbs/ft3) and  FR-7110 (10 lbs/ft3). We typically use the higher density material for the smaller balls (6 mm) and the lower density material for larger balls (8-9 mm).


Making a tether

For the tether itself:

For a holder on which the tether can be mounted:


Tethering a fly

For gluing the tether to the thorax, we use KOA 300 (KEMXERT, York, PA, USA). In the second step, when we glue the head to the holder (which also fixes the head to the throax), we use a different UV curable glue: Fotoplast Gel from Dreve (Dreve Dentamid GmbH, Unna, Germany).


Software, Gerber files, and documentation to assemble the camera/optic chip system part of the ball tracker/Fly treadmill

are available in this zipped file.


MATLAB code to calibrate the treadmill using Camera3 (see paper) is available here.


Note: Computer-to-chip communication issue with Windows 7 & the latest FTDI driver (TreadmillDemo throws a "Bad Read")

The fix is just to change the BAUDRATE in line 69 of TreadmillDemo.cpp from 1250000 to 1152000.

Thanks go to Armin Bahl (MPI, Martinsried) for bringing this to our attention.

The Team

Standing (l-r): Michael Reiser, Gus Lott, Vivek Jayaraman. Sitting (l-r): Johannes Seelig and Eugenia Chiappe. Other contributors (not pictured here) include: Nir Dutta, Jason Osborne. Photo credit: Reed George.

  • No labels