Introduction: How-to Build MACKRA a Serb Variant.

Project MACKRA was started after I saw the many problems with pre-built robotic platforms e.g. size, programability, mobility, need for batteries,PRICE, and most being dedicated to a single microcontroller.
the goals of the MACKRA project were to do the following:
1.create a cheap, and easy to manufacture chassis
2.draw all power from only a 5 volt source
3.no motor controllers would be required
4.only a small number of parts would have to actually be made
5.portable
6.easy to trouble shoot
7.all components would have to be able to be locally scourced e.g. radio shack, lowes, and local rc hobbie shops.
8.reliable
9.have the online community be able to readily accept it like the serb and arduino



the possible applications:
1. learning concepts of real time programming
2. learning about automation
3. used in a classroom setting as a alternative to LEGO robotics platform
4. learning about opencv and xna to provide stimuli to a system
5. learning about locomotion and coordination of simple movements to preform complex manuevers
6. demonstrate to students that this level of work can actually be accomplished without being a genius
7. developing navigation algorithms
8. demonstrating to students how many little systems can work together to achieve a task simply rather than one complex sluggish �system
9. open creative possibilitys to students, as the platform can be made for around 80 bucks, and has plenty of room to grow.

Step 1: Manufacturing: the Base Plate.

due to size differences in computers, the demands of the user, and materials available each MACKRA robot is different in size, but the same in functionality,

for mine i used a 1/8th thick peice of plexiglass cut to 150% scale to the perimeter of my netbook
then i took a servo and on each corner traced its outline and  used a square nut to mark were each bolt would have to have its hole drilled so the nut would rest securely against the side of the servo, effectively sandwiching each servo in place


then i drilled 4 holes, one on each corner to run the bolts that will hold the top plate on 

Step 2: Manufacturing: Top Plate.

this part is fairly simple, all you do is cut a peice of plexiglass to the same size as the base plate, and if you'de like you can cut a hole out in the center to make it easy to get to the electronics
also you should drill the four holes for the bolts to go through on each corner in the same place as you did on the base plate 
finnally drill a hole for where you would like the usb plug to come out

Step 3: Manufacturing: the Electronics

mount the arduino next to the breadboard on the base plate 

Step 4: Manufacturing: the Electronics Part 2

now you must modify all your servos for unlimited rotation, scince their are already guides out their to show how to do this, im not going to go over the process.
after you have done that , you must now iether buy some wheels off the internet or make them yourself by using a large hole saw to cut the wheel out of some of the scraps of the 1/8in plexiglass,and use some plastic tubing slit down one side as a tire for the wheel, then you must take a servo horn and super glue it into the dead center of the wheel, i highly recommend that you just buy the servo wheels off of the internet.

Step 5: Manufacturing: Final Assembly

final assembly is fairly easy, all you have to do now is set each servo into its correct mount point and wire them to the arduino, you can A. make a adapter that makes it easy to deal with or B. use the bread board . finally run your usb cable for the arduino through the hole in the top plate and plug it into your arduino. now run the four bolts through each corner and tighten them just enough to ensure enough pressure is placed on each servo so they will stay locked in.

Step 6: What It "should" Look Like

so their you have it a super cheep platform that is very manuverable and can carry a laptop on it as well

Step 7: The Software: Arduino

the software consists of two parts : the arduino side, and the computer side. the arduino side is fairly simple, the code for it is as follows:

#include ;
Servo lefttop;
Servo leftbottom;
Servo righttop;
Servo rightbottom;
int incomingByte;
void setup()
{
lefttop.attach(8);
leftbottom.attach(9);
righttop.attach(10);
rightbottom.attach(11);
lefttop.write(90);
leftbottom.write(90);
righttop.write(90);
rightbottom.write(90);
Serial.begin(9600);

}
void loop() // this is were the actual program is finally ran in an infinite loop;
{
if (Serial.available() > 0) { //check for connection
incomingByte = Serial.read(); // if their is data available read it to the incomingByte variable

if(incomingByte=='f')
{
lefttop.write(0);
leftbottom.write(0);
righttop.write(180);
rightbottom.write(180);
}
if(incomingByte=='r')
{
lefttop.write(180);
leftbottom.write(180);
righttop.write(0);
rightbottom.write(0);
}
if(incomingByte=='R')
{
lefttop.write(180);
leftbottom.write(180);
righttop.write(180);
rightbottom.write(180);

}
if(incomingByte=='o')
{
lefttop.write(180);
leftbottom.write(180);
righttop.write(180);
rightbottom.write(180);
delay(250);
lefttop.write(90);
leftbottom.write(90);
righttop.write(90);
rightbottom.write(90);
}
if(incomingByte=='L')
{
lefttop.write(0);
leftbottom.write(0);
righttop.write(0);
rightbottom.write(0);
}
if(incomingByte=='u')
{
lefttop.write(0);
leftbottom.write(0);
righttop.write(0);
rightbottom.write(0);
delay(250);
lefttop.write(90);
leftbottom.write(90);
righttop.write(90);
rightbottom.write(90);
}
if(incomingByte=='s')
{
lefttop.write(90);
leftbottom.write(90);
righttop.write(90);
rightbottom.write(90);
}

}}





 

Step 8: The Software: Computer

the computers software is written in C# visual studio 2008
additionally you will have to download the following:
Opencv
emgucv
XNA framework
.net 3.5 framework

i honestly have no clue if the code will work on other systems though because of the locations of refrences and if it will still load the Haar cascades from theroot directory...

this is what happens when you try to teach yourself to program in c# without any formal schooling or training, or even a book. so im making the best effort i can to ensure that others will be able to use the code. so i copyed the entire directory i "THINK" it is all under so hope it works for others...

Step 9: See It in Action!

well , here it is in all its omnipitent and awsome glory.

oh, one REALLY important thing i forgot to mention, if you plug in an xbox 360 controller while the program is running on the computer, you can control its movement with the left joystick

Step 10: Update! a Preview of the New Software!

Comments

author
pompom728 (author)2010-10-04

I feel like a noob but when i copy the arduino file, paste it in arduino enviroment and click upload is gives me an error saying, " 'servo' does not name a type" and i get a whole bunch of this at the bottom

sketch_oct04a.cpp:1:10: error: #include expects "FILENAME" or
sketch_oct04a:1: error: 'Servo' does not name a type
sketch_oct04a:2: error: 'Servo' does not name a type
sketch_oct04a:3: error: 'Servo' does not name a type
sketch_oct04a:4: error: 'Servo' does not name a type
sketch_oct04a.cpp: In function 'void setup()':
sketch_oct04a:8: error: 'lefttop' was not declared in this scope
sketch_oct04a:9: error: 'leftbottom' was not declared in this scope
sketch_oct04a:10: error: 'righttop' was not declared in this scope
sketch_oct04a:11: error: 'rightbottom' was not declared in this scope
sketch_oct04a.cpp: In function 'void loop()':
sketch_oct04a:24: error: 'lefttop' was not declared in this scope
sketch_oct04a:25: error: 'leftbottom' was not declared in this scope
sketch_oct04a:26: error: 'righttop' was not declared in this scope
sketch_oct04a:27: error: 'rightbottom' was not declared in this scope
sketch_oct04a:31: error: 'lefttop' was not declared in this scope
sketch_oct04a:32: error: 'leftbottom' was not declared in this scope
sketch_oct04a:33: error: 'righttop' was not declared in this scope
sketch_oct04a:34: error: 'rightbottom' was not declared in this scope
sketch_oct04a:38: error: 'lefttop' was not declared in this scope
sketch_oct04a:39: error: 'leftbottom' was not declared in this scope
sketch_oct04a:40: error: 'righttop' was not declared in this scope
sketch_oct04a:41: error: 'rightbottom' was not declared in this scope
sketch_oct04a:45: error: 'lefttop' was not declared in this scope
sketch_oct04a:46: error: 'leftbottom' was not declared in this scope
sketch_oct04a:47: error: 'righttop' was not declared in this scope
sketch_oct04a:48: error: 'rightbottom' was not declared in this scope
sketch_oct04a:57: error: 'lefttop' was not declared in this scope
sketch_oct04a:58: error: 'leftbottom' was not declared in this scope
sketch_oct04a:59: error: 'righttop' was not declared in this scope
sketch_oct04a:60: error: 'rightbottom' was not declared in this scope
sketch_oct04a:64: error: 'lefttop' was not declared in this scope
sketch_oct04a:65: error: 'leftbottom' was not declared in this scope
sketch_oct04a:66: error: 'righttop' was not declared in this scope
sketch_oct04a:67: error: 'rightbottom' was not declared in this scope
sketch_oct04a:76: error: 'lefttop' was not declared in this scope
sketch_oct04a:77: error: 'leftbottom' was not declared in this scope
sketch_oct04a:78: error: 'righttop' was not declared in this scope
sketch_oct04a:79: error: 'rightbottom' was not declared in this scope

author
pompom728 (author)pompom7282010-10-04

Wow im retarted... there is no "" after "#include". the program should read...

#include ;
Servo lefttop;
Servo leftbottom;
Servo righttop;
Servo rightbottom;
int incomingByte;
blah blah blah...and so on and so forth.

was that a mistake or was that intentional?

author

dont worry about it, when i published the instructable the website screwed with all the formatting, wait a couple of days and ill be releasing a update that will include a full executable for the pc software and the whole sketch as well, this was unintentional but their just the growing pains of MACKRA btw the update will include a couple of optional upgrades to the hardware as well so the user can drive it through IR as well, but i feel that i need to make some documentation first before the release

author
kyle brinkerhoff (author)2010-09-14

CRUD! i spelled project wrong !

author
sunshiine (author)2010-09-13

Pretty impressive work of art! Great job.

author

thanks :] just wait till i post the update. its purdy!

author

Purdy huh? I can't wait, I like purdy stuff!

author

allthough asthetics actually did come into play when i engineered the whole thing cause what nerd wants a huge bunch of wires and sharp edges !

author
acksheep13 (author)2010-09-11

I plan to make this project and optimize it for a range sensor so it will be automomous without a computer that way i can make a mobile waiter for distributing food/drink

author

yea i actually got two ultrasonic range finder sensors for free today and im wiring/coding a mode to just wander around aimlessly

author
kyle brinkerhoff (author)2010-09-10

cool! only day 3 and 1000 veiws already :] falafle dun good... but seriosly guys could you leave some comments, im really looking for some good ideas to publish with the instructable that will go over the high end version of this robot.

author
alex12349 (author)2010-09-09

it's awesome for me

author
kyle brinkerhoff (author)2010-09-08

hey please leave some comments and rate this instructable!

About This Instructable

10,403views

23favorites

License:

Bio: hi i enjoy making ludicrisly over the top and complex devices.... Being an ameture engineer, I refuse pick the easy option, but rather the one ... More »
More by kyle brinkerhoff:I built a BS detector samsung charge dock the one seam wallet
Add instructable to: