ArduSnake: Arduino Modular Snake Robots Library
Contenido
Introduction
Ardusnake is an Arduino Library for generating easily the locomotion of modular snake robots or other modular robots. It is based on sinusoidal oscillators which drive the servos.
Architecture
The ArduSnake library comprises the following layers:
- Oscillators: This layer is in charge of oscillating the servos sinusoidally. Just with these oscillations the locomotion of worm, snakes and other modular robots can be achieved.
- Worm: It offers an easy API for the locomotion of worm robots (locomotion in 1D) (alpha stage)
- Snake: Locomotion of snake modular robots (in 2D) (Future work, not yet implemented)
- User Application: The user can use the previous layers for the locomotion of the robot.
Tutorial
The first step is to install the ArduSnake library. Please follow these instructions .
Oscillators Layer
Example 1: Hello world
This example just makes a servo oscillate, using the default parameters
- Open the example oscillator_test1 from File/examples/ArduSnake.
- Attach the servo
- If using Arduino connect the servo to pin 8
- If using skymega, connect the servo number 2 (see figure 1)
- Upload the example to the board. The servo will oscillate, as shown in the video
300|250</youtube> |
The source code of the example is show below. An oscillator is declared, then it is assigned to an output (were the servo is connected). In the main loop the method refresh() is called. It just recalculates the servo position when necessary. The servo will oscillate with the default parameters.
#include <Servo.h> #include <Oscillator.h> #include "skymega.h"
//-- Declare an oscillator Oscillator osc;
void setup() { //-- Attach the oscillator to the servo //-- For arduino, you can use the pin number instead of SERVO2 (for example 8) osc.attach(SERVO2); }
void loop() { osc.refresh(); }
Example 2: Setting the oscillator parameters
300|250</youtube> |
#include <Servo.h> #include <Oscillator.h> #include "skymega.h"
//-- Declare an oscillator Oscillator osc;
void setup() { //-- Attach the oscillator to the servo //-- For arduino, you can use the pin number instead of SERVO2 (for example 8) osc.attach(SERVO2); //-------- Set the oscillator parameters //-- Set the offset. The servo will oscillate around this point //-- Units: Degrees. Default value: 0 osc.SetO(40); //-- Set the Amplitude. How far the servo moves from the position //-- given by the offset. Units: degrees. Default value: 45 osc.SetA(40);
//-- Set the oscillation period. After one period the servo will be //-- in the same state. Units: ms. Default value: 2000 osc.SetT(1000);
//-- Set the Initial phase. It determines in which part of the cycle //-- the servo starts. So, this parameter determines the staring point osc.SetPh(DEG2RAD(-90));
}
<a name="loop"></a>void loop() {
//-- Refresh the oscillator osc.refresh();
}
Example 3: Oscillation of two servos
Example 4: A mini-wave
Download
ArduSnake-001.zip | ArduSnake sources. Version 001 |
Installation
The current version is being developed under Arduino 22 IDE. It may work with newer version, but I have not tried it.
- Download the library: ArduSnake-001.zip
- Uncompress it in your working directory
- Copy the ArduSnake and skymega folders under the sketchbook/libraries arduino folder (In linux, it is in /home/username/sketchbook/libraries). It does not matters if you do not have a skymega board, copy the folder skymega anyway.
- Launch the Arduino 22 IDE
- The menu Ardusnake containing some example should be accesible now from the File/Examples menu
Changelog
Ardusnake 001:
- Initial version
- The oscillator layer is working
- Some examples on how to use the oscillator layer written
- The worm layer is still in alpha stage (Do not use it yet)
- The snake layer has no been started
Authors
License
This library is under the GPL v3.0 license |
Git repository
Publications
More information
- Skymega board:
- Skymega board, in thingiverse
- SkyMega, official page (in Spanish)
- Repy1 modules: 3D printable modules
- Repy1 v1.1 modules, in thingiverse
- Módulos REPY-1. Official page (in Spanish)
- Micro-osciladores (Spanish). Previous versions. Implementation for the PIC microcontrollers
News
- 15/Feb/2012: This page is created