Project tutorial

Nematoduino Mk2 C. Elegans Robot © GPL3+

Easy to build instructions for making the new Nematoduino mk2, an Arduino Uno-compatible robotic simulation of the C. elegans nematode.

  • 15 respects

Components and supplies

A000066 iso both
Arduino UNO & Genuino UNO
14500 Lithium Ion Batteries (2)

Necessary tools and machines

Phillips-head Screwdriver

About this project


Nematoduino is an Arduino Uno-compatible robotic simulation of the C. elegans nematode.

Short video showing the nematoduino robot's movements in comparison to a biological C. elegans.

The core of this simulation is the nanotode framework, which implements a simple leaky integrate-and-fire model of the biological worm's spiking neural network. This implementation is based on prior work [1], but with the following improvements:

  • A compressed representation of the connectome network (8 kilobytes)
  • Ability to run on the ubiquitous and low-cost Arduino Uno platform
  • A biologically motivated conntectome-motor interface

The nematoduino software consumes a significant portion of the Arduino Uno's onboard program and dynamic memory (probably about half of each), but that still leaves plenty of room for tweaking and experimentation. It's my hope that nematoduino will end up in the hands of a lot of students and neurorobotics hobbyists!

Web-based C. elegans simulator/game:

If you'd like to play with C. elegans simulations that are nearly identical to a nematoduino robot, check out the related project:


To build a nematoduino robot you'll need the following:

  • An AlphaBot2-Ar robot platform kit
  • Arduino Uno board
  • Two 14500 lithium ion batteries
  • A Phillips-head screwdriver

AphaBot2-Ar kits (minus Arduino Uno) can currently be had on eBay for about $60, and I've had success with this $15 charger/battery set on Amazon for the 14500s.


NOTE: Making a nematoduino is very straightforward, but these instructions do assume that you've had some experience with an Arduino Uno before, and are comfortable uploading software to a board.

1 ) Build the robot

The AlphaBot2-Ar is very easy to assemble, and if you've had any basic electronics experience before you probably won't need instructions. However, if you get stuck or need some hints, check out the first three minutes of this video by the manufacturer.

2) Download the nematoduino software

Head to the project's GitHub page, and download the nematoduino source by selecting the green 'Clone or download' button near the top of the page. Click the 'Download ZIP' button, and unzip the file that downloads.

3) Upload the software to the robot

Open the nemaoduino/nemtoduino.ino file in the Arduino IDE, and add the nematoduino library by going to Sketch -> Include Library -> Add.ZIP Library... and selecting the Nematoduino_Library folder.

After this step the nematoduino software is ready to upload to the Arduino Uno, so go ahead and do so now.

4) Turn on your nematoduino

Turn the robot on using the sliding switch on the bottom. Now place it on the ground and watch it roll around doing worm-y things :)

Tweaking your robot

The nematoduino.ino file has some #define statements at the top that can be used to tweak some of the basic behavior of your robot:

  • MUSCLE_FACTOR: Controls how fast your robot moves
  • MOTOR_RUN_TIME: How long (in milliseconds) the robot should run its motors after each update of the neural simulation
  • SENSOR_DIST: Distance (in centimeters) at which the ultrasonic sensor triggers, informing the worm's nervous system that its nose is being touched (NOTE: This robot also employs IR sensors for the same function, and these will always trigger when the robot is in close contact with an obstacle)

Technical details

As in Ref. 1, either the chemotaxis ("smell finding") or nose touch neurons are stimulated depending on whether an obstacle detecting sensor has been triggered. A flow chart representing how sensor state feeds through the connectome simulation and out through the motors is given in Figure 1. Particular weight is given to the neck muscles of the worm, as they provide the direction of locomotion (see Ref. 3).

Forward and backward movement in the biological worm are governed by A and B-type motor neurons, with a nose touch resulting in a reversal of the worm's locomotion. Since backward motion is driven by B-type cells (see Fig.1 of Ref. 2), the average activation of these motor neurons in the connectome is used as a trigger for reverse locomotion in the robot.

Indeed, the normalized activity of A-type motor neurons shows a stronger response to nose touch input than B-type, so this approach seems reasonably well motivated.

Further work (to do)

  • You might notice that your nematoduino robot has a slight "limp" and lists to one side. This is because the motor response on each side is typically not symmetric in cheap robots. There might be some kind of "calibration routine" I could devise that could ameliorate this.
  • It would be nice to use a light sensor to see if the qualitative chemotaxis behavior investigated in Ref. 3 can be reproduced using this connectome model.


[1] Busbice, T. Extending the C. Elegans Connectome to Robotics. URL:

[2] Zhen M., Samuel, A. C. elegans locomotion: small circuits, complex functions. URL:

[3] Morse, T. M., Ferrée, T. C., Lockery S. R. Robust spatial navigation in a robot inspired by chemotaxis in C. elegans. URL:


Similar projects you might like

MeArm Robot Arm - Your Robot - V1.0

Project tutorial by Benjamin Gray

  • 39 respects

Super Easy to Build 1Sheeld 2 Wheel Drive Robot

Project tutorial by Garry Gerwer and Ahmed Hamdy

  • 34 respects

MK2 Plus Robot Arm Controller

Project tutorial by Samira Peiris

  • 14 respects

Otto DIY+ Arduino Bluetooth Robot Easy to 3D Print

Project tutorial by Team Otto builders

  • 177 respects


Project showcase by Nathan Griffith

  • 85 respects

Make your first Arduino robot - The best beginners guide!

Project tutorial by Muhammed Azhar

  • 114 respects
Add projectSign up / Login