testopstelling

Project Tachikoma, Opstart en prototype I

Geïnspireerd door Japanse anime, geïnteresseerd om een eigen robot te maken en met mijn nieuw verworven kennis over de Arduino microcontoller heb ik besloten om op schaal een Tachikoma te bouwen. In dit bericht schrijf ik een stuk over de opstart en hoe het eerste prototype vordert.

Wat is een Tachikoma? Een Tachikoma is een spinachtige tank met 6 poten uit de Japanse anime serie Ghost in the Shell. Hierin is de Tachikoma uitgerust met een sterk geavanceerde AI. De robot heeft 4 primaire benen die worden gebruikt voor lopen en rijden. Aan het uiteinde van deze benen bevinden zich wielen die kunnen kantelen voor een stabiel loop vlak. Daarbij heeft de robot een compartiment aan de achterkant waar een mens in kan. Tachikoma’s hebben een afmeting van circa 2,5 meter breed,3 meter lang en 1,5 meter hoog.

Om te beginnen heb ik enige tijd op Google gespendeerd met het zoeken naar eventuele bestaande robot Tachikoma’s, vierbenige spin achtige robots (quadropod) en andere nuttige informatie. Zo bleek dat een robotlab in Japan al in 1994 een robot te hebben gemaakt die sterk in de buurt kwam. Met vier benen en aan het uiteinde hiervan een viertal omklapbare wielen zodat hij stabiel kon wandelen en kon rijden.

Toen er een duidelijk beeld was van hoe de Tachikoma zoal kan bewegen en wat mogelijkheden waren betreffende de vrijheidsgraden en diverse draaipunten (DOF’s) werd het kijken naar de juiste stapeling en de hoeveelheid hiervan. Gezien ik hier al flink wat ervaring mee had vanwege de robotarm die ik eerder heb ontworpen was dit leuk om weer eens te doen. Er is uiteindelijk gekozen voor twee draaipunten en een continuous rotation servo. Dit voornamelijk vanwege mijn beperkte budget.

Van scratch af een frame ontwerpen is overwogen. Echter in robot hobby land zijn er heel veel modulair bruikbare frames beschikbaar. Dit scheelt aanzienlijk in tijd en geld en zijn op diverse manieren aan elkaar te maken, zodat een eventuele andere stapeling van de DOF’s eenvoudig gerealiseerd kan worden. Bij Lynxmotion waren mooie onderdelen beschikbaar en cad modellen van al hun producten. Dit kon toen gelijk verwerkt worden in een Solidworks ontwerp.

Voor het op schaal maken van de Tachikoma had ik een meetbaar model nodig. Op het internet had iemand in Google Sketchup een Tachikoma getekend echter viel deze qua nauwkeurigheid tegen. Voor niet al te veel geld was via Hobbylink Japan een Japanse hobby winkel een schaalmodel te bestellen.

Door de combinatie van het schaalmodel en de onderdelen van Lynxmotion is uiteindelijk de schaal 1:18,5 geworden. Niet helemaal ISO verantwoord maar dit kwam wel het mooist uit. De diverse benodigde onderdelen zijn besteld. Een Roboduino starterskit, servo’s en de aluminium frame onderdelen. In een beschikbare werkplaats is met dank aan mijn vader, van hout een eenvoudige maar zeer bruikbare testopstelling in elkaar gezet waar het eerste robot been op gemonteerd kon worden.

Toen het geheel in elkaar zat en gemonteerd was kon de code geschreven worden. Met dank aan Xander die ik heb leren kennen op Prototype Dev Camp is dit prima gelukt.

In de toekomst zal voor het eerste prototype een drietal extra benen toegevoegd worden en zal er naar een mooi loop en rij patroon gestreefd worden.

Een video van de werking van het Tachikoma prototype I been

De Arduino code die is gebruikt voor het bijgevoegde filmpje:

// Voeg de Servo-library toe aan het project
#include 
// Maak definities aan voor de servo's
Servo shoulderServo; // pin 5
Servo jointServo;  // pin 7
Servo rotServo; // pin 9
Servo wheelServo; // pin 11
// Servo-positie variabelen
int shoulderPos=0;
int jointPos=0;
int rotPos=0;
int wheelPos=0;
int loopamount = 0;
void setup() {
shoulderServo.attach(5);
jointServo.attach(7);
rotServo.attach(9);
wheelServo.attach(11);
// Open een seriele verbinding, voor debugging
rotServo.write(91);
Serial.begin(9600);
}
void loop() {
while(loopamount < 1)
{
delay(1500);
shoulderServo.write(45);
delay(1500); 
jointServo.write(65); 
delay(1500); 
rotServo.write(130);  
delay(1500);
wheelServo.write(20);    
delay(2500);
wheelServo.write(91);    
loopamount ++;
}
}

Leave a Reply