I'm back with the Version 3 of my robot lawnmower. This version doesn't use the commpass but count the pulses on both wheels. It's able to work more than 3 hours and able to take care of about my 500 sq m. more details (in french) on http://hmnrobots.free.fr/wordpress/
I will now work on the automatic "going back to base"
At first I didn’t think that other than frenchies would be interested by my bot, but I’ve found so many valuable informations on foreign forums that I do apologize to have made an only french blog! But the schematics are universal !
The wheels encoders aren’t enough precise(not enough pulses per rotation) to know the precise position and it can slip over the lawn ; I use the wheels encoder to maintain the direction by comparing the number of pulses, when going backward and when turning.
I also thought that encoders alone would make it impossible to keep track of location. In particular outdoors. But still I’m very interested in knowing more about your application because I’m currently working on a cheap lowtech mapping robot also using encoders. I have the advantage of being indoors on a flat surface.
It’s not so much the schematics but rather the logic, math and code behind it I’d love to know more about. And what is the resolution of your encoders (=pulses per rotation)?
Ah and “pollito” is the diminuative form of “pollo” (=chicken), thus it means litle chicken or baby chicken
As I said the resolution of my wheel encoder is very poor : only 12 pulses a turn. But it’s enough to maintain a direction, measure backward distance and calibrate a turn. here’s the motion part of my code
void Steer (signed int8 err){ //Plage de suivi en marche avant if (err > DEGERR) err = DEGERR; if (err < -DEGERR) err = -DEGERR; /* steer left or right based on error / if (err == 0) { //Pas de Correction DdeM2 = AvSpeed; DdeM1 = AVSpeed; //fprintf(DEBUG,“Corr ok \n\r”); } if (err > 0) { //Correction à gauche DdeM2 = AvSpeed; DdeM1 = AVSpeed - err20; //fprintf(DEBUG,“Corr gauche err %d M1:%u M2:%u \n\r”,err,DdeM1,DdeM2); } if (err < 0) { //Correction à droite DdeM1 = AvSpeed; DdeM2 = AvSpeed + err*20; //fprintf(DEBUG,“Corr droite err %d M2:%u M1:%u \n\r”,err,DdeM2,DdeM1); } CdeMotrice(); }
I am still wondering what resemblance you see between chickens and this robot. Is it the free range, wandering around the lawn behavior? Does it eat batteries you sprinkle around your garden?
I would like to build a robot that could do that. And then use the energy inside.
La poulette just because La poulette just because when it’s cutting the grass and I’m inside, I use to go my window and say ‘Où est encore cette sacrée poulette ,’ that is “Where is that damned Ckicken ?” thinking in other word : is it once more trying to cut the flowers ? or stuck anywhere ? or trying to escape from my yard ? as it used to be less reliable than it is now ! Unfortunaly today it’s not working because I 've got some motor trouble,