ROS fournit un message d'odométrie, qui me dit ce qui suit en référence à un plan xy.Comment déterminer si un robot ROS va vers l'avant ou vers l'arrière?
- La composante x de la vitesse du robot en (m/sec).
- La composante y de la vitesse du robot en (m/sec).
- orientation angulaire représentée par un quaternion (z et des composants w en radians)
ROS fournit l'supplémentaire suivante C++ bibliothèques
API quaternion de robot: http://docs.ros.org/jade/api/tf/html/c++/classtf_1_1Quaternion.html
Vector 3 API: http://docs.ros.org/jade/api/tf/html/c++/classtf_1_1Vector3.html
J'ai une instruction si-géante inélégante qui utilise le quadrant que le robot fait face avec la direction des composantes x et y. Je préférerais apprendre à tirer parti des quaternions.
Quand je publie un cmd_vel message demandant une vitesse linéaire ax de 0,2 m/s et une vitesse angulaire az de 0,2 radians/s le robot se déplace dans un cercle. Les trames d'odométrie ont un frame_id de odom et un child_frame_id de base_link. Lorsque le robot fait face à 0 degré, les vitesses x et y sont (2,0,0,0). A 45 deg (0,15, 0,15), à 90 deg (0,0, 2,0), 135 deg (-0,15, 0,15), à 180 (-0,20, 0,0). Si je reçois des vitesses x/y de (-2.0, 0) avec un angle de 180, il avance. Si l'angle est 0, il va en arrière. Les signes des vitesses x et y ne sont pas suffisants. J'ai besoin de savoir dans quelle direction il se trouve. –