How to Make it: SnakeRobot
This is a 16 degrees of freedom snake-like robot. It primarily uses servo motors for its actuation. Here are the list of parts
-
Servo motors (16 Kg-cm, metal gear, dual shaft)
-
Motor brackets
-
Arduino Uno
-
Adafruit 16 channel 12 bit I2C servo shield
Mechanically the design is very simple. The servo motors are connected back to back in series using the motor brackets.
![](https://static.wixstatic.com/media/f33e42_761682a8e0f841fb956616819edc213c~mv2_d_1832_1446_s_2.jpg/v1/fill/w_389,h_309,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/f33e42_761682a8e0f841fb956616819edc213c~mv2_d_1832_1446_s_2.jpg)
sr 1.1
![](https://static.wixstatic.com/media/f33e42_5532b6e570c44e5c8cc3c9c380aa207f~mv2.jpg/v1/fill/w_549,h_309,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/f33e42_5532b6e570c44e5c8cc3c9c380aa207f~mv2.jpg)
sr 1.2
In fig. sr 1.1 the mechanical parts (servo, horns, brackets) needed can be seen. In fig. sr 1.2 it can be seen how the motors are connected using the motor brackets. The robot has a total of 16 servo motors. Two motors each can be grouped into a single module thus making a total of 8 modules that form the robot. Fig. sr 1.2 shows one of those modules. As it can be seen the two motors are connected perpendicular to each other using the brackets i.e the output axis of the two motors are at 90 degrees offset to each other. This is particularly important as this enables the robot to move in 3D. Imagine if the axis of all the motors are parallel to each other then the robot can only move in 2D. Motions such as side rolling won't be possible in that case. Next fig. (sr 1.3) shows how each module is connected to another module. Here also they are at 90 degrees offset to each other.
![](https://static.wixstatic.com/media/f33e42_712f171d31414d6f8a82ac13fad68f26~mv2.jpg/v1/crop/x_0,y_45,w_1362,h_359/fill/w_979,h_258,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/f33e42_712f171d31414d6f8a82ac13fad68f26~mv2.jpg)
sr 1.3
Next to control the robot I used arduino UNO with a servo shield. Arduino communicates to shield via I2C protocol. It's actually the shield that's generating pulses to control the servos, arduino is just specifying which servo to rotate by how much angle. Arduino UNO without the shield can control 12 servos at maximum. The shield can control 16 motors. Instead of this one can also use arduino mega directly as it can control 48 servos. The servos I use consume a lot of power so I used a 7.4 v, 1550 mAh, 20c Li-po battery. I connected all the servos in parallel so the total current drawn from the battery can be quite high. So I used the 20c rated Li-po battery. It can provide upto 31 Amps (1550 mAh x 20c = 31000 mA).
Finally to hold the arduino & the shield I designed & 3D printed a case.
![](https://static.wixstatic.com/media/f33e42_0a0dcc808b4a447eb87cc922ef6a53e5~mv2.jpg/v1/fill/w_292,h_228,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/f33e42_0a0dcc808b4a447eb87cc922ef6a53e5~mv2.jpg)
![](https://static.wixstatic.com/media/f33e42_188dca28e3b54c29b8c5cfd2256384a2~mv2_d_1760_1241_s_2.jpg/v1/crop/x_0,y_72,w_1760,h_1108/fill/w_361,h_227,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/f33e42_188dca28e3b54c29b8c5cfd2256384a2~mv2_d_1760_1241_s_2.jpg)
![](https://static.wixstatic.com/media/f33e42_7334a4bdcb32439d8307ef7ffd4424e3~mv2.jpg/v1/fill/w_316,h_225,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/f33e42_7334a4bdcb32439d8307ef7ffd4424e3~mv2.jpg)