La Poulette V3

Hi all

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"


This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/la-poulette-v3

Cool un franƧaisā€¦ je me

Cool un franƧaisā€¦ je me sens moins seul :slight_smile:

Nice job btw!

sauf que je ne sais pas
sauf que je ne sais pas traduire poulette?

My career
Je voudrais suis ingenieur des robos plus tard.

depends

on whether you switch Google "Safe Search" on or off.

http://images.google.com/images?q=poulette

"chicky" should be a pretty
"chicky" should be a pretty good translationā€¦

Great, I appreciate your
Great, I appreciate your help and adopt Chicky as itā€™s new name!

Interesting

"This version doesnā€™t use the commpass but count the pulses on both wheels."

So youā€™re able to tell itā€™s location and direction using ONLY wheel encoders??? Or??

Man Iā€™d love to know more about how it works. Iā€™ll need another language than french though. English, Danish or Spanish will do :confused:

PS: ā€œLa Pouletteā€ is a MUCH better name than ā€œChickyā€. Reminds me of ā€œPollitoā€ in spanish. Cute :smiley:

Ā 

**La poulette, Chicky or Pollito ? what else ? **

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.

Whatā€™s the meaning of ā€œPollitoā€ ?

Ā 

Odometry and chickens :smiley:

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 :smiley:

Ā 

As I said the resolution of

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 - err
20;
//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();
}



void MoveBackward(){
DdeM1 = MaxArSpeed; DdeM2 = MaxArSpeed;
if (TempoRecule > 0 && !Obst_AR && !B_ARG && !B_ARD && !OvrIMot && (CptRoue1+CptRoue2 <= ReqCpt) )
CdeMotrice();
else{
StopMotrice();
Marche_AV = false; Marche_AR = false; Turning = true;
TempoVirage = dureeVirage;
ReqCpt = CPT_TURN;
StopMotrice();
}

}

void Turn (){
//procƩdure de virage tant que tempo et compteur
if (TempoVirage >0 && !Obst_AR && !OvrIMot && (CptRoue1+CptRoue2 <= ReqCpt)){
DdeM1 = DdeM2 = MaxTurnSpeed;
CdeMotrice();
}else{
//Fin du virage
StopMotrice();
Turning = TurnLeft = TurnRight = false;
Marche_AV=true;
}
}

void MoveForward(){
//gĆØre le dĆ©placement Avant
//inhibitions pour se dƩgager
if(B_AVG && Obst_AR) B_AVG = false;
if(B_AVD && Obst_AR) B_AVD = false;
if (!Obst_AV && !Obst_US_LH && !Obst_US_RH && !B_AVG && !B_AVD && !OvrIMot){
Steer(DiffRoues);
}else{
if (Obst_US_LH || B_AVG || Obst_AV){ //ecart Ć  droite
TurnRight=true;TurnLeft=false;
}else{ //Obst_US_RH ou B_AVD ecart gauche
TurnRight=false;TurnLeft=true;
}
Marche_AV = Turning =false;
Marche_AR = true;
TempoRecule = DureeRecule;
ReqCpt = CPT_BACKWARD;
StopMotrice();
}
}

Gallus gallus domesticus

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,

more on poulette

and according to wikipedia ā€œune poulette dĆ©signe une femme en argotā€

that is "a poulette stands for a woman in (cool) slang "