Autopilot is a Python framework to perform behavioral experiments with one or many Raspberry Pis.

Its distributed structure allows arbitrary numbers and combinations of hardware components to be used in an experiment, allowing users to perform complex, hardware-intensive experiments at scale.

Autopilot integrates every part of your experiment, including hardware operation, task logic, stimulus delivery, data management, and visualization of task progress – making experiments in behavioral neuroscience replicable from a single file.

Instead of rigid programming requirements, Autopilot attempts to be a flexible framework with many different modalities of use in order to adapt to the way you do and think about your science rather than the other way around. Use only the parts of the framework that are useful to you, build on top of it with its plugin system as you would normally, while also maintaining the provenance and system integration that more rigid systems offer.

For developers of other tools, Autopilot provides a skeleton with minimal assumptions to integrate their work with its broader collection of tools, for example our integration of DeepLabCut-live as the DLC transform ([KLS+20]).

Our long-range vision is to build a tool that lowers barriers to tool use and contribution, from code to contextual technical knowledge, so our broad and scattered work can be cumulatively combined without needing a centralized consortium or adoption of a singular standard.

For a detailed overview of Autopilot’s motivation, design, and structure, see our whitepaper.

What’s New v0.4.0 - Become Multifarious (21-08-03)

  • The Autopilot Wiki is live!!!! The wiki will be the means of gathering and sharing knowledge about using Autopilot, but it will also serve as an additional tool for building interfaces and decentralizing control over its development. Head to the changelog or the Plugins & The Wiki page to learn more

  • Autopilot plugins are now live!!! Anything in your plugin directory is a plugin, extend most types of autopilot classes to implement your own custom hardware and tasks and anything else without modifying autopilot itself, then submit it to the wiki to make it immediately available to everyone who uses the system! Link it to all the rest of your work, the parts it uses, let’s make a knowledge graph!!!

  • Tests and Continuous Integration are finally here!!! if there has been anything I have learned over the past few projects is that tests are god. Ours are hosted on travis and we are currently on the board with a stunning 27% coverage at

  • Lots of new hardware and transform classes! Take a look! cameras.PiCamera, timeseries.Kalman, geometry.IMU_Orientation, timeseries.Filter_IIR, timeseries.Integrate, geometry.Rotate, geometry.Spheroid

  • Major improvements like stereo sound (Thanks Chris Rodgers !), multihop messages, direct messaging, programmatic setup… see more in the changelog <changelog_v040

  • Continued work on deconvoluting and remodularating all the code structure!

  • Removed limits on python version, now testing on 3.7, 3.8, and 3.9

This documentation is very young and is very much a work in progress! Please submit an issue with any incompletenesses, confusion, or errors!

Indices and tables