La différence entre le spin et le taux.dormir dans ROS
Je suis nouveau sur le ROS et d'essayer de comprendre ce puissant outil. Je suis déconcerté par le spin et le taux.fonctions du sommeil. Quelqu'un pourrait-il m'aider avec la différence entre ces deux fonctions et à utiliser? Merci.
Vous devez vous connecter pour publier un commentaire.
ros::spin()
etros::spinOnce()
sont resposible pour gérer les événements de communication, par exemple, l'arrivée des messages. Si vous êtes abonnés des messages, des services ou des actions que vous devez appeler tour à traiter les événements.Ros::spinOnce() gère les événements et retourne immédiatement, ros::spin() bloque jusqu'à ce que ros invoque un arrêt. Afin de ros::spinOnce() vous donne plus de contrôle si nécessaire. Plus à ce sujet ici: Les rappels et la Filature.
taux.sleep() sur l'autre main est simplement un fil de sommeil avec la durée définie une fréquence. Voici un exemple
Cette boucle sera exécutée 24 fois par seconde ou moins, cela dépend de ce que vous faites à l'intérieur de la boucle. Un
ros::Rate
objet garde une trace de la façon dont beaucoup de temps depuis la dernièrerate.sleep()
a été exécuté et le sommeil de la bonne quantité de temps de frapper le 24 Hz marque. Voirros::Taux d'::sleep()
API.La méthode équivalente dans le domaine temporel est
ros::Temps::sleep()
Celui que vous utilisez est juste une question de commodité.