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.