Driving a legobot with a simulated worm nervous-system

More news from the Openworm project, whose Kickstarter I posted in April: they've sequenced the connectome of all 302 neurons in a C. Elegans worm, simulated them in software, and put them to work driving a Lego robot.

The legobot's sensors and motors are connected to the software in a way that corresponds to the worm's sensory apparatus and motor neurons, and the researchers claim that the resulting robotic behaviors are strikingly similar to a C Elegans' own. The significant thing here is that these behaviors were not programmed: they emerged naturally from mere act of simulating the worm's neurons.

The model is accurate in its connections and makes use of UDP packets to fire neurons. If two neurons have three synaptic connections then when the first neuron fires a UDP packet is sent to the second neuron with the payload "3". The neurons are addressed by IP and port number. The system uses an integrate and fire algorithm. Each neuron sums the weights and fires if it exceeds a threshold. The accumulator is zeroed if no message arrives in a 200ms window or if the neuron fires. This is similar to what happens in the real neural network, but not exact.

The software works with sensors and effectors provided by a simple LEGO robot. The sensors are sampled every 100ms. For example, the sonar sensor on the robot is wired as the worm's nose. If anything comes within 20cm of the "nose" then UDP packets are sent to the sensory neurons in the network.

The same idea is applied to the 95 motor neurons but these are mapped from the two rows of muscles on the left and right to the left and right motors on the robot. The motor signals are accumulated and applied to control the speed of each motor. The motor neurons can be excitatory or inhibitory and positive and negative weights are used.

(via /.)