Bonjour tout le monde,
Voila, je suis nouveau dans le monde de l'Arduino, de l'electronique et de la programmation, et apres avoir realise quelques petits projets tres basiques et avoir appris les rudiments du code, je me retrouve aujourd'hui un peu bloque et j'aurais donc besoin de votre aide, etant donne que je ne suis pas parvenu pour le moment a trouver des reponses a mon probleme sur le net ni a imaginer une solutionqui puisse fonctionner.
Mon projet est assez simple, je suis en train de faire un robot autonome a deplacement aleatoire.
Le robot est deja realise et fonctionne, simplement je souhaiterais ameliorer certains aspects, notamment son comportement en cas de blocage contre un obstacle non detectable.
Deja, un peu de description:
Le robot foncionne grace a une carte arduino uno, deux servos MG995, deux capteurs ultrasons en facade et deux interrupteurs de contact eux aussi en facade pour detecter les chocs. Le chassis est pour le moment en carton, et la batterie est une 7.2V 6 elements 1800mah qui alimente directement l'arduino ainsi que les servos.
Le robot fonctionne plutot bien, mais il lui arrive a certaines occasions de se retrouver coince dans des recoins de mon appartement, car il heurte parfois des obstacles situes au dessus de son champ de vision et hors d'atteinte des capteurs de contact et continue a avancer indefiniment dans le vide.
Sa logique de base fonctionne comme suit:
-s'il n'y a rien devant lui sur une distance superieure a 6cm, il va tout droit.
-si le capteur ultrasons gauche detecte un obstacle a moins de 6cm, le robot fait machine arriere et tourne a 90 degres vers la droite, puis repart sur le cycle marche avant
-meme principe pour un obsatcle du cote droit,
-meme principe egalement en ce qui concerne la detection des chocs
Je voudrais en fait faire en sorte que le robot ne puisse effectuer une marche avant que pendant un temps maximal defini a l'avance, puis qu'une fois ce temps passe il effectue une marche arriere puis change de trajectoire. Ca permettrait de lui eviter de mouliner betement pendant des heures lorsqu'il se retrouve bloque et de pouvoir repartir dans une autre direction, le tout sans avoir a ajouter de capteur supplementaire.
Or, le probleme c'est qu'il faut que le robot puisse continuer a detecter les obstacles lorsque celui ci se trouve en marche avant. Or avec les methodes que j'utilise, ca ne fonctionne pas. Je comprends tres bien pourquoi ca ne marche pas, mais n'ai aucune idee de la facon de contourner ce probleme.
Savez vous comment je peux m'y prendre pour faire en sorte que le robot avance pendant un certain temps, revienne en arriere puis tourne tout en continuant de prendre en compte les entrees des capteurs en permanence?
Merci beaucoup d'avance pour votre aide!