Posté 05 septembre 2010 - 05:32
Je t'ai déjà répondu par e-mail. En gros, tu nous demandes de pondre ton code pour TON microcontroleur, dans TON langage de programmation. Je ne pense pas que tu trouves ce genre d'aide ici... ni autre part d'ailleurs.
Pour qu'un robot aille droit, il faut juste maitriser l'orientation. L'orientation se calcule assez simplement en faisant la différence (soustraction) de l'avancement des 2 roues. Il est tout à fait possible de n'asservir que cette orientation. Pour faire un asservissement PI sur l'orientation, tu prend l'erreur d'orientation (erreur_orientation = orientation_actuelle - orientation_souhaitée). Tu l'intègres mathématiquement pour avoir le terme intégrale de l'erreur. C'est simple: à chaque pas de calcul, tu fais
integrale_erreur=integrale_erreur + erreur (ici, appliquée à l'orientation)
Ensuite, tu en déduis les consignes pour les moteurs:
consigne_mot_gauche = avancement_longi + KI x integrale_erreur_orientation + KP x erreur_orientation
consigne_mot_droit = avancement_longi - KI x integrale_erreur_orientation - KP x erreur_orientation
Avec Avancement_longi la consigne globale d'avancement longitudinale (l'avancement étant non asservi ici) ; KI et KP les paramètres de ton asservissement, que tu devras régler.
Mais avant ça, il faut que tu réussisse à interpréter les données en provenance des roues codeuses (odomètres) pour calculer l'avancement de chaque roue.
Par contre, j'attire ton attention sur un aspect: un gazon, c'est rarement un sol plat. Il y a des mottes de terre, des racines, des touffes d'herbe. Dans ces conditions, le repérage par odométrie fonctionnera mal. Si tu n'envisages que ça comme moyen de repère, je ne pense pas que ça suffise. Si tu veux quand même te lancer, il faut privilégier d'avoir de grandes roues. Des roues 12 pouces de vélo d'enfant par exemple, mais pas moins. Pourquoi? Pour que les roues soient moins perturbées par les irrégularités du terrain.
Leon.