Concurs : Line Follower

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 23 de voturi.

 

 

 

This is my second Line Follower Robot and as its name suggest, it is a robot whose purpose is following a line. This robot can be used in contests where a robot must follow a route delimited by a black line on a white background in the shortest time possible.
This robot is really simple to make and then you can use this platform for other purposes.

The MOTORS:

The motors I used for this robot are 2 servomotors modified for speed. You can also use other motor if it’ s good enough… I didn’t have any so I modded 2 servomotors.

HOW TO MOD THE SERVOMOTORS (look at the pictures)

1. Remove the four screws from the servo and take it all apart.
2. Remove the electronics keeping only the wires from the motor (I kept the other 3 wires from the potentiometer but you don’t have to).
3. Try to fit the gears except for one. I glued the big gear to the one beneath it so as to be high enogh to “get out” of the case. It isn’t exactly a rule for how to do this… various servos will have various gears so you will need to try until you will find the best “combination”.
4. Put everything toghether.

The BODY (look at the picture):
The base of the robot is made of PCB cutted to the properly size.
You will also need 5 screws:
– 2 for putting together the front and the base of the robot
– one for lifting the sensors off the ground (you can use something else here, if you have)
– 2 for lifting and fixing the microcontroller PCB

The SENSORS:

I made my sensors using 5 SMD IR emiting diodes, 5 SMD phototransistors and 5 1k SMD resistors. Between the phototransistor and the IR I put some black silicone so the IR light would not come directly to the phototransistor. The PCB design is in the archive “line follower.rar”. It is made in PROTEUS, but I have a word document including all the PCB designs which can be printed on glossy paper or Press and Peel, and then transfered to the PCB using the method of the iron.

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 23 de voturi.

Concurs : Brat Robotic

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 36 de voturi.

Acest brat robotic are posibilitatea de a muta diverse obiecte pe care le detecteaza in fata lui cu ajutorul senzorului.
Bratul robotic e miscat cu ajutorul a 3 servouri, rotatie, ridicare si prindere. Servourile sunt controlate de catre controlorul de servouri Pololu micro maestro iar acesta la randul sau e conectat prin serial la platforma Arduino UNO.

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 36 de voturi.

Concurs : Robot Linie

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 1092 de voturi.

Acest proiect este proiectul castigator al lunii aprilie.

 

Ma numesc Botez Şerban, elev in clasa a VII, pasionat de robotei, in special urmaritori de linie.
In urma cu 2 ani am realizat primul robotel urmăritor, analogic, format din tranzistor, leduri IR si fototranzistori, (2 senzori) precum si mecanica din motoare de dvd +uri. Am construit senzorii, partea electrica si mecanica. Robotelul funcţiona, dar mi-am dat seama de multe probleme ce apareau datorita luminii, calităţii fototranzistorului, fiind sensibil la diferite medii de iluminare si nu eram mulţumit de viteza, etc.
Au urmat circuite operaţionale si senzori cumpăraţi. dar care nu au inbunatatit cu mult performantele.
Aşa ca am trecut la mecanica mai performanta si microcontroler. Pentru aceasta a trebuit sa studiez mult, sa fac programe. Daca la început am reuşit sa programez pentru 2 senzori folosind banale IF uri, a urmat pentru 3, 4, dar pentru a creste stabilitatea si viteza a trebuit sa măresc numărul de senzori si procedeul clasic nu ar mai fi făcut fata. Aşa ca am studiat funcţia PID, folosita de obicei la robotii de linie performanţi.
Proporţionala, Integrala si Derivata (PID) împreuna cu constantele ce trebuie introduse coordonează mişcarea robotului in funcţie de nr de senzori, de traseu, de deviaţia acestuia. Dar are si un dezavantaj la curbele ff strânse sau 90 grade. Acestea le-am tratat in algorim separat.
Nu a fost suficient doar sa scriu algoritmul, ci si foarte multe teste pentru a face un raport corect intre viteza, dimensiunile robotului, traseu, aderenta etc. Am modificat dimensiunile intre roti, lungime, pentru a folosi constantele funcţiei cat mai mici. Am construit mai multe variante a robotului.
Deocamdată, in imaginile prezentate, am folosit un atmega 88, motor 50:1, roti si un driver lm293D, precum si o linie de 6 senzori. . Am construit diferite sasiuri.)cum se observa din imagini, mai mari, mai mici pentru o coordonare cat mai buna intre senzori si motoare Am optat deocamdata pentru o distanta foarte mica intre motoare, si puţin mai lung
Pe viitor doresc sa măresc nr. de senzori, mărimea robotului precum si raportul motoarelor, care cu siguranţa îmi vor da mai multe probleme de stabilitate dar sper sa măresc viteza.

Imi doresc din tot sufletul sa castig acest concurs,pentru a termina proiectul inceput.

Acest articol este publicat in cadrul concursului Robofun 2012.Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 1092 de voturi.

Acest proiect este proiectul castigator al lunii aprilie.

Concurs : Robot Scorpion

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 69 de voturi.

 

 

 

 

Am inceput munca la el din luna august a anului 2010. Totul e facut de mine si de fratele meu, Adi, toata mecanica fiind facuta manual fara scule profesionale, ajutandu-ma doar de un pendulator vertical prins de un suport confectionat de mine cu panza in sus si de o bormasina verticala. Mi-am cumparat si o freza Dremel insa am fost destul de dezamagit de ea deoarece discurile pentru teierea metalului se mananca foarte repede, in sensul ca am reusit cu un singur disc sa tai cam 5cm de tabla, insa Dremelul ma ajutat foarte mult la taierea suruburilor, la slefuit si la taierea formei din interiorul bazei.Am aruncat o gramada de material(tabla 1.5 mm Al) deoarece forta pendulatorului indoaie urat.

Robotul l-am proiectat ca scorpion deoarece ne-am pus ambitia sa facem ceva ce nu s-a mai facut:D. Biped s-a facut, hexapod s-a facut, quadropod s-a facut, am vazut parca si un octopod dar scorpion nu.

Materiale:

* 24x Hs485-HB
* SSC-32 controllerul de servo;
* Arduino Duemilanove;
* PS2 Robot Controller+ PS2 Wireless Controller Receiver;
* acumulator LiPo 5300 mAh;
* tabla 1.5mm Al;
* piulite, suruburi( M3, M4), bara filetata etc.

Astept pareri si idei cu privire la miscari, utilitate, NUME… etc.

Acest “monstru” ruleaza pe ARDUINO.

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 69 de voturi.

Concurs : Robot Autonom

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 617 voturi.

Ma numesc Gidofalvi Norbert si anul trecut am terminat facultatea de mecatronica si robotica din cadrul universitatii Petru-Maior Tg Mures.
Sunt pasionat de electronica, mai ales proiectarea si dezvoltarea robotilor, asta inseamna proiectarea mecanica proiectarea electronica si dezvoltare software.
Cadrul robotului meu a fost proiectat in autocad inventor si taiat din Plexiglas cu o masina CNC.
Prinderea senzorilor de distanta am facut in asa fel incat cele doua senzori din lateral sa fie raglabil, si senzorul din fata este fix.
Robotul este echipat cu:
2 motoare cu reductor
3 senzori de linie
3 senzori de distanta sharp,
O camera whireless
Un servomacanism
O placa arduino uno
O placa driver cu integratul l298
Un system de captarea semnalului de la telecomanda
Un acumulator de 6V pentru alimentarea motoarelor si a senzorilor
O baterie de 9v pentru placa arduino

Pentru capturarea imaginilor si vizualizarea drumul robotului am folosit o camera wireless prins pe un servomecanism care permite o rotire de 180 grade pentru o vizibilitate mai buna.
Camera foloseste ca sursa de alimentare o baterie de 9v si poate sa trimite imagini pana la 150m de la receptor.

Senzor: CMOS Color

Robotul permite sa fie comandat manual cu ajutorul unei telecomanda fara fir, raza de actiune maxima 5m, este foarte usor de manevrat si se poate intra cu el in locuri greu accesibile pentru a face poze sau video.
In final am reausit sa asamblezi componentele si sa fac un robot autonom programabil.
Robotul este capabil sa urmareasaca linia si daca apare un obstacol pe linie ori intoarce ori iese de pe linie si dupa ocolire intoarce pe linie depinde de programare,

Componentele mecanice si electronice

O parte din programul folosit

//obsatacle avoid robot program with 3 Ir distance sensors//

// line thresholds
#define line_center_threshold 400
#define line_left_threshold 200
#define line_right_threshold 200
// obstacle thresholds
#define obstacle_center_threshold 300
#define obstacle_left_threshold 300
#define obstacle_right_threshold 300
// speeds
#define high_speed 150
#define medium_speed 70
#define low_speed 30

int mot1A = 11;
int mot1B = 10;
int mot2A = 6;
int mot2B = 5;
int s0 = 0;
int s1 = 1;
int s2 = 2;
int s3 = 3;
int s4 = 4;
int s5 = 5;
int followline = 1; // 1-follow the line, 0-surround the obstacle
int canswitch = 1; // 1-the followline can be switched, 0-cannot switch
int obstaclepos = 0; // 0-left, 1-right
int linepos = 0; // 0-left, 1-right

void setup() {
pinMode(s0, INPUT);
pinMode(s1, INPUT);
pinMode(s2, INPUT);
pinMode(s3, INPUT);
pinMode(s4, INPUT);
pinMode(s5, INPUT);
pinMode(mot1A, OUTPUT);
pinMode(mot1B, OUTPUT);
pinMode(mot2A, OUTPUT);
pinMode(mot2B, OUTPUT);
}

void loop() {

// ANALOG SENSORS READ
int sens0 = analogRead(s0);
int sens1 = analogRead(s1);
int sens2 = analogRead(s2);
int sens3 = analogRead(s3);
int sens4 = analogRead(s4);
int sens5 = analogRead(s5);
//delay( 50 );

// PRIORITY
// line=0, obstacle=0
if ( ( ( sens2 > line_left_threshold ) && ( sens0 > line_center_threshold ) && ( sens1 > line_right_threshold ) ) &&
( ( sens3 < obstacle_left_threshold ) && ( sens4 < obstacle_center_threshold ) && ( sens5 < obstacle_right_threshold ) ) )
{
followline = 1;
canswitch = 1;
}
// line=1, obstacle=0
else if ( ( ( sens2 < line_left_threshold ) || ( sens0 < line_center_threshold ) || ( sens1 < line_right_threshold ) ) &&
( ( sens3 < obstacle_left_threshold ) && ( sens4 < obstacle_center_threshold ) && ( sens5 < obstacle_right_threshold ) ) )
{
followline = 1;
canswitch = 1;
}
// line=0, obstacle=1
else if ( ( ( sens2 > line_left_threshold ) && ( sens0 > line_center_threshold ) && ( sens1 > line_right_threshold ) ) &&
( ( sens3 > obstacle_left_threshold ) || ( sens4 > obstacle_center_threshold ) || ( sens5 > obstacle_right_threshold ) ) )
{
followline = 0;
canswitch = 1;
}
// line=1, obstacle=1
else if ( ( ( sens2 < line_left_threshold ) || ( sens0 < line_center_threshold ) || ( sens1 < line_right_threshold ) ) &&
( ( sens3 > obstacle_left_threshold ) || ( sens4 > obstacle_center_threshold ) || ( sens5 > obstacle_right_threshold ) ) )
{
if ( canswitch == 1 )
{
if ( followline == 1 )
followline = 0;
else
followline = 1;
canswitch = 0;
}
}

// LINE FOLLOWER
//followline = 1;
// all on line (intersection)
if ( (followline == 1) && ( sens2 < line_left_threshold ) && ( sens0 < line_center_threshold ) && ( sens1 < line_right_threshold ) )
{
// go strait
analogWrite(mot1A, 0);
analogWrite(mot1B, medium_speed);
analogWrite(mot2A, medium_speed);
analogWrite(mot2B, 0);
}
// line to the center-left
else if ( (followline == 1) && ( sens2 < line_left_threshold ) && ( sens0 < line_center_threshold ) && ( sens1 > line_right_threshold ) )
{
// turn left
analogWrite(mot1A, 0);
analogWrite(mot1B, low_speed);
analogWrite(mot2A, high_speed);
analogWrite(mot2B, 0);
linepos = 0;
}
// line not in center, but both sideways
else if ( (followline == 1) && ( sens2 < line_left_threshold ) && ( sens0 > line_center_threshold ) && ( sens1 < line_right_threshold ) )
{
// go strait
analogWrite(mot1A, 0);
analogWrite(mot1B, medium_speed);
analogWrite(mot2A, medium_speed);
analogWrite(mot2B, 0);
}
// line only to the left
else if ( (followline == 1) && ( sens2 < line_left_threshold ) && ( sens0 > line_center_threshold ) && ( sens1 > line_right_threshold ) )
{
// turn left
analogWrite(mot1A, low_speed);
analogWrite(mot1B, 0);
analogWrite(mot2A, high_speed);
analogWrite(mot2B, 0);
linepos = 0;
}
// line to the center-right
else if ( (followline == 1) && ( sens2 > line_left_threshold ) && ( sens0 < line_center_threshold ) && ( sens1 < line_right_threshold ) )
{
// turn right
analogWrite(mot1A, 0);
analogWrite(mot1B, high_speed);
analogWrite(mot2A, low_speed);
analogWrite(mot2B, 0);
linepos = 1;
}
// line only in center
else if ( (followline == 1) && ( sens2 > line_left_threshold ) && ( sens0 < line_center_threshold ) && ( sens1 > line_right_threshold ) )
{
// go strait full speed
analogWrite(mot1A, 0);
analogWrite(mot1B, high_speed);
analogWrite(mot2A, high_speed);
analogWrite(mot2B, 0);

Acest articol este publicat in cadrul concursului Robofun 2012. Perioada de votare pentru acest proiect s-a incheiat. Acest proiect a acumulat un numar de 617 voturi.