Étape 6: Code aperçu
Pour l’évitement d’obstacles, l’eyeRobot utilise une méthode où les objets près du robot exercent une force virtuelle sur le robot il s’éloignant de l’objet. En d’autres termes, les objets pousser le robot hors d’eux-mêmes. Dans mon implémentation, la virtual force exercée par un objet est inversement proportionnelle à la distance au carré, donc la force de la Poussée augmente à mesure que l’objet se rapproche et crée une courbe de réponse non linéaire :
PushForce = ResponseMagnitudeConstant/Distance2
Le pousse provenant de chaque capteur est additionné ; capteurs sur le côté gauche poussez à droite et vice versa, pour obtenir un vecteur pour les déplacements du robot. Vitesse des roues est ensuite modifiés afin que le robot se tourne vers ce vecteur. Pour s’assurer que les objets morts devant le robot ne présentent pas une « aucune réponse » (parce que les forces sur les deux côtés équilibre), s’oppose à l’isolant pousser le robot pour le côté plus ouvert. Lorsque le robot est passé de l’objet, il utilise ensuite encodeurs de Roomba à corriger pour le changement et revenir sur le vecteur initial.