Je ne peux pas télécharger de photos alors je vais essayer d'expliquer mon problème le mieux. Je veux simuler la détection d'un objet en mouvement par un robot de type monocycle. Le robot est modélisé avec la position (x, y) et la direction thêta comme les trois états. L'obstacle est représenté par un cercle de rayon r1. Je veux trouver les angles alpha_1 et alpha_2 du cadre de coordonnées local du robot au cercle, comme indiqué ici:Angle à une ligne tangente de cercle
Alors ce que je fais est d'essayer de trouver l'angle du robot à la ligne joignant le robot et le centre du cercle (cet angle est appelé aux_t dans mon code), puis trouve l'angle entre la tangente et la même ligne (appelée phi_c). Enfin je trouverais les angles que je veux en ajoutant et soustrayant phi_c de aux_t. Le schéma Je pense est montré:
Le problème est que je reçois des ennuis avec mon code lorsque je tente de trouver les angles alpha: Il commence à calculer correctement les angles (bien que des valeurs négatives, je ne sais pas si cela cause mon problème) mais lorsque la voiture et le vélo se rapprochent, phi_c devient plus grand que aux_t et l'un des alphas change subitement de signe. Par exemple, je reçois ceci:
aux_t ////// phi_c ////// alpha_1 ////// alpha_2
-0,81 ///// /+0.52//////-1.33////////.29
-0.74 ////// + 0.61 ////// - 1.35 ////// - 0.12
-0,69 + 0,67 ////// ////// - 1,37 ////// - 0,02
-0,64 ////// + 0. 74 ////// - 1.38 ////// + 0.1
Donc, fondamentalement, l'alpha_2 se trompe ici. Je sais que je fais quelque chose de mal mais je ne sais pas quoi, je ne sais pas comment limiter les angles de 0 à pi. Y a-t-il un meilleur moyen de trouver les angles alpha? Voici la partie de mon code:
peut-être parce que 'atan2' renvoie la valeur de' aux_t' entre -pi et pi, donc il change de signe dès qu'il traverse cette demi-ligne –