Based on the awesome work of Nathan Griffith my son and me build a connectome controlled track vehicle. Thank you to Nathan for sharing.
The base is an Arexx RP5 chassis I bought a longer time ago at Conrad Elektronik for my early robot project Franz-Joseph. On top there is a generic housing mounted with nails and hot glue. The main controller is an Arduino Uno clone (Atmega 328) from Ebay with a simple breadboard extension shield. The motor driver is a L298N based motor control shield from SainSmart. The ultrasonic distance sensor is a cheap HC-SR04. The cost is blow 20 Eur without the RP5. You could also use this kit. I ordered one for testing.
The setup followed the file pin_config.h in the Github project, which points out how to connect the wires. As Nathan Griffith is using a wheel based robot which has a very small turning cycle and no gearboxes, the code needed some tuning to fit the tardy movment of the tracks. Fortunately Nathan answered some questions and so we were able to tune the code to achieve the result you can see in the video at the beginning of this post.
We tuned the following lines in the main file of the project.
int32_t leftTotal = (1300*leftNeckTotal) + normBodyTotal; int32_t rightTotal = (1300*rightNeckTotal) + normBodyTotal;
Increasing the value to 1300 scales the neck muscle contribution which means, that the movment to the left or right will be intensified. As the tracks are tardy (in case ot the gearboxes I think) the value needs to be rather large.
int32_t normBodyTotal = 255.0 * ((float) bodyTotal) / 500.0;
We lowered the normalization factor to 500.0 to speed up things a little bit. Before, there was not enought power for the tracks. So the vehicle was stammering around.
After the above changes we had good results in movement, but the vehicle touched the wall more often although the ultrasonic sensor already detected the obstacle. So we lowered the delay in the ActivateMuscles() function to
to increase the amount of muscle weigth to motor mappings. This clearly reduced the touch-rate. But there is still room for optimization.
Next we want to add a Lux sensor or thermopile and connect the chemotaxis part of the connectome to this sensor. So we hope to enable the wormbot to seek light or heat.