Currently the maze is running three microcontrollers and a region of interest detection with a closed loop camera system. This is certainly an overkill for the tasks we are running, and complicated as at the moment there is a mix of Micropython, C++, and Python running on the system:
One microncontroller to run four servos for food dispensing.
One microcontroller to run four servos for controlling gratings orientations.
One microcontroller to detect beam breaks in two infrared led and detector pairs at the maze entrance
Camera uses python and OpenCV to detect if an animal is within one of four regions of interest.
Much simpler solution would be one microcontroller to run:
running an add on board to control up to 16 servos
detectiting the beam breaks at maze entrance
detecting beam breaks at every decision point and/or at target areas (maybe even proximity sensors). This would avoid the need for a camera closed loop system
Let's break all that down into tasks so that we can step by step update the system:
[ ] get the details of what a task consists of and generate "protocode" to address all the requirements based on the idea that everything will run on a single microcontroller.
[ ] build and test pellet dispenser (include IR beams and test them too)
[ ] once above is done, make 3 more pellet dispensers.
[ ] test arduino/ESP32 code (already written and loaded on GH)
not needed right away:
[ ] add code that controls the probability of the animal getting a reward, even if it did a completely correct trial
[ ] add code that controls the system in case the session needs to consider wrong locations (that is, if the animal visits the wrong location first in a trial, it does not get rewarded)
[ ] code to measure amount of time spent in each area.
[ ] code to record session data (number of correct trials, number of trials, etc)
Currently the maze is running three microcontrollers and a region of interest detection with a closed loop camera system. This is certainly an overkill for the tasks we are running, and complicated as at the moment there is a mix of Micropython, C++, and Python running on the system:
Much simpler solution would be one microcontroller to run:
Let's break all that down into tasks so that we can step by step update the system: