FicTrac: A webcam-based method for tracking spherical motion and generating fictive animal paths.

FicTrac is an open-source software library for reconstructing the fictive path of an animal walking on a patterned sphere. The software is fast, flexible, easy to use, and simplifies the setup of closed-loop tracking experiments.
FicTrac was originally developed by researchers at the Queensland Brain Institute at the University of Queensland, Australia for tracking honeybees and fruit flies during closed-loop tethered walking experiments, but it has since proved useful for tracking a wide range of animals with different movement speeds, track ball diameters and patterns, and stimuli.
On this page you’ll find information for:
You might also be interested in the following links:
Happy tracking!
If you’re just setting up your lab, or wondering whether FicTrac is suitable for your setup, check the hardware requirements section below for the basic requirements.
If you already have an experimental enclosure with a camera, you can use FicTrac to either process recorded videos offline or to run live from the camera. Skip ahead to install, configure, and run FicTrac.
Very briefly, FicTrac imposes almost no special requirements on your experimental setup, other than that a pattern must be applied to the track ball. However, there are a number of tips that can help you get the best results from using FicTrac.
A typical FicTrac experimental setup might include at least the following equipment:
FicTrac imposes no requirements on the italicised items; how you design these is completely dependent on other factors.
The FicTrac source code can be built for both Windows and Linux (e.g. Ubuntu) operating systems, or you can build and run FicTrac from within the Windows Subsystem for Linux (WSL) or a virtual machine on any operating system.
fictrac (Git should already be installed - if not, you can install it via sudo apt-get install git or you can simply manually download and extract the repository)git clone https://github.com/rjdmoore/fictrac.git
fictrac folder and run the install script to install dependencies and build FicTrac.cd fictrac
./install_ubuntu.sh
fictrac (if you do not have Git installed, you can download and install for Windows 64-bit from here or you can simply manually download and extract the repository)git clone https://github.com/rjdmoore/fictrac.git
fictrac folder and run the install script to install dependencies and build FicTrac.cd fictrac
./install_windows.ps1
During installation, the script will prompt you for the MSYS2 installation path and then launch a MSYS2 terminal. The FicTrac dependencies should be installed here using the pacman utility. The install script will display a command which you can copy to the MSYS terminal to install the dependencies. Once the dependencies are installed, you must close the MSYS window to continue the FicTrac installation.
After installation, you may need to close and re-open your Powershell terminal in order to run FicTrac.
sudo apt-get install gcc g++ git cmake curl unzip tar yasm pkg-config libgtk2.0-dev libavformat-dev libavcodec-dev libavresample-dev libswscale-dev libopencv-dev
[Windows] .\vcpkg install opencv[ffmpeg]:x64-windows nlopt:x64-windows boost-asio:x64-windows ffmpeg[x264]:x64-windows
[Linux] ./vcpkg install nlopt:x64-linux boost-asio:x64-linux
git clone https://github.com/rjdmoore/fictrac.git
cd fictrac
mkdir build
cd build
[Windows] cmake -A x64 -D CMAKE_TOOLCHAIN_FILE=C:\path\to\vcpkg\scripts\buildsystems\vcpkg.cmake ..
[Linux] cmake -D CMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake ..
[Windows] cmake --build . --config Release -j 4
[Linux] cmake --build . --config Release -- -j 4
If everything went well, the executables for FicTrac and a configuration utility will be placed under the bin directory in the FicTrac project folder.
If you encounter issues during the build process, try simply re-executing the step that failed. If you still encounter the same problem, check the FicTrac forum to see if anyone else has encountered (and hopefully solved!) the same issue.
Remember to update (i.e. clone) and re-build FicTrac occasionally, as the program is still under development and fixes and improvements are being made continuously.
If you are using an industrial USB2/3 camera and are receiving error messages when FicTrac tries to connect to your camera, you may need to tell FicTrac to use the SDK provided with your camera, rather than the generic OpenCV interface. The instructions for switching to the camera’s SDK are different for each manufacturer. Currently there is support for PGR (FLIR) USB2/3 cameras via the Flycapture/Spinnaker SDK and Basler USB3 cameras via the Pylon SDK.
Click on the appropriate SDK below to view details.
-D PGR_USB2=ON and depending on where you installed the SDK, you may also need to provide the SDK directory path using the switch -D PGR_DIR=.... For example, for a Windows installation you would replace step 3 above with (replacing <vcpkg_root> with the path to your vcpkg root directory):cmake -A x64 -D CMAKE_TOOLCHAIN_FILE=<vcpkg root>/scripts/buildsystems/vcpkg.cmake -D PGR_USB2=ON -D PGR_DIR="C:\path\to\Flycapture" ..
Before running FicTrac, you may configure your camera (frame rate, resolution, etc) as desired using the SDK utilities.
-D PGR_USB3=ON and depending on where you installed the SDK, you may also need to provide the SDK directory path using the switch -D PGR_DIR=.... For example, for a Windows installation you would replace step 3 above with (replacing <vcpkg_root> with the path to your vcpkg root directory):cmake -A x64 -D CMAKE_TOOLCHAIN_FILE=<vcpkg root>/scripts/buildsystems/vcpkg.cmake -D PGR_USB3=ON -D PGR_DIR="C:\path\to\Spinnaker" ..
Before running FicTrac, you may configure your camera (frame rate, resolution, etc) as desired using the SDK utilities.
-D BASLER_USB3=ON and depending on where you installed the SDK, you may also need to provide the SDK directory path using the switch -D BASLER_DIR=.... For example, for a Windows installation you would replace step 3 above with (replacing <vcpkg_root> with the path to your vcpkg root directory):cmake -A x64 -D CMAKE_TOOLCHAIN_FILE=<vcpkg root>/scripts/buildsystems/vcpkg.cmake -D BASLER_USB3=ON -D BASLER_DIR="C:\path\to\Pylon" ..
Before running FicTrac, you may configure your camera (frame rate, resolution, etc) as desired using the SDK utilities.
There are two necessary steps to configure FicTrac prior to running the program:
src_fn and vfov, which define the image source (path to video file or camera index) and vertical field of view (in degrees) of your camera respectively. You will find an example config file (config.txt) in the sample directory.A more detailed guide on how to configure FicTrac for your setup and an explanation of all the configuration parameters can be found in the doc directory.
To configure FicTrac for the provided sample data, simply open a terminal in the FicTrac project folder and type:
cd sample
[Windows] ..\bin\Release\configGui.exe config.txt
[Linux] ../bin/configGui config.txt
The sample config file config.txt is already configured for the sample data, but you can step through the configuration process to check that everything looks ok.
Then, to run FicTrac, type:
[Windows] ..\bin\Release\fictrac.exe config.txt
[Linux] sudo ../bin/fictrac config.txt
FicTrac will usually generate two output files:
The output data file can be used for offline processing. To use FicTrac within a closed-loop setup (to provide real-time feedback for stimuli), you should configure FicTrac to output data via a socket (IP address/port) in real-time. To do this, just set sock_port to a valid port number in the config file. There is an example Python script for receiving data via sockets in the scripts directory.
Note: For Windows installations, if the fictrac command returns immediately without printing anything to the terminal, try closing and reopening the terminal.
Note: If you encounter issues trying to generate output videos (i.e. save_raw or save_debug), you might try changing the default video codec via vid_codec - see config params for details. If you receive an error about a missing H264 library, you can download the necessary library (i.e. OpenCV 3.4.3 requires openh264-1.7.0-win64.dll) from the above link and place it in the bin folder under the FicTrac directory.
If you use FicTrac as part of your research, please cite the original FicTrac publication:
RJD Moore, GJ Taylor, AC Paulk, T Pearson, B van Swinderen, MV Srinivasan (2014). “FicTrac: a visual method for tracking spherical motion and generating fictive animal paths”, Journal of Neuroscience Methods, Volume 225, 30th March 2014, Pages 106-119. [J. Neuroscience Methods link] [Preprint (pdf) link]
This publication contains technical details on how FicTrac works, performance analysis, results, and other discussion.
If you have modified the FicTrac source code to fix issues, add functionality, or to better suit your setup, please consider making those additions available to other users!
To do so, just follow the standard Github fork and pull request workflow.
See the LICENSE file for more info.