In this project we build a spiking neural network that drives a nxt-lego robot for the purpose of applying spiking neurons to sensor-motor control in a close loop fashion. The robot was equipped with 2 ultrasonic sensors as well as with 3 step motors used for locomotion of the robot.
The spiking neural-network was build in nengo ( http://nengo.ca) and it was implementing a state machine with 3 states. The state machine was implemented by using a Winner Take All network and the switch in between states was driven by the sensory input (ultrasonic sensor). In the following image you see a complete schematic of the network. The network was counting a total of 1000 neurons (approximatively 200 neurons per population). The NXT network represent the sensory input from the 2 ultrasonic sensors. This population of neurons was projecting its activity to the population 'eyes' (0:200) that was integrating the input signal with a slower time constant in order to reduce the variability of the signal coming from the ultrasonic sensors. The connections in between NXT and eyes were done in a geometrical fashion such that in eyes it was still present the discrimination in between the location of the sensory input: input from sensor one was fed to neurons 0:100 -of eyes pop.- and input from sensor 2 was fed to neurons 101:200 -of eyes pop.- . Population 'eyes' was then projecting to population 'states' that was implementing a Winner Take All network with 3 stables states. Whenever one of the first 2 states was the 'winner of the competition' and its activity was persistent it would trigger gating population which was projecting to one of the two states 'explore' or 'integrate'. In the state 'explore' the robot was going forward while in the 'integrate' states the robot was spinning around.
The spiking neural network by the end of the workshop was running on one spiNNaker board. This was done in collaboration with Francesco Galluppi).