Ich bin neu bei ROS und versuche, dieses mächtige Werkzeug zu verstehen. Ich bin verwirrt von den Funktionen spin und rate.sleep. Könnte mir jemand mit dem Unterschied zwischen diesen beiden Funktionen helfen und wann wann welche verwenden? Vielen Dank.Unterschied zwischen spin und rate.sleep in ROS
Antwort
ros::spin()
und ros::spinOnce()
sind verantwortlich für Kommunikationsereignisse, z.B. ankommende Nachrichten. Wenn Sie Nachrichten, Dienste oder Aktionen abonnieren, müssen Sie eine Drehung aufrufen, um die Ereignisse zu verarbeiten.
Während ros :: spinOnce() die Ereignisse behandelt und sofort zurückgibt, blockiert roos :: spin(), bis ros ein Shutdown auslöst. So gibt ros :: spinOnce() mehr Kontrolle wenn nötig. Mehr dazu hier: Callbacks and Spinning.
rate.sleep() auf der anderen Seite ist nur ein Thread Schlaf mit Dauer definiert als eine Frequenz. Hier ist ein Beispiel:
Diese Schleife wird 24 mal pro Sekunde oder weniger ausgeführt, hängt davon ab, was Sie innerhalb der Schleife tun. Ein Objekt ros::Rate
verfolgt, wie viel Zeit seit der letzten rate.sleep()
ausgeführt wurde und für die richtige Zeit, um die 24-Hz-Marke zu treffen schlafen. Siehe ros::Rate::sleep()
API.
Die äquivalente Art und Weise in der Zeitdomäne ist ros::Duration::sleep()
ros::Duration duration(1./24.);
while(ros::ok())
{
duration.sleep();
}
, welche Sie nur eine Frage der Bequemlichkeit verwenden ist.
- 1. Kommunikation zwischen Knoten ROS (Python)
- 2. Bildformat Kompatibilität zwischen ROS QImage
- 3. Unterschied zwischen `% in%` und `==`
- 4. Unterschied zwischen $ @ und $! in Perl
- 5. Unterschied zwischen '.' und "." in Java
- 6. Unterschied zwischen $ {} und $() in Bash
- 7. Unterschied zwischen und „-“ in r
- 8. Unterschied zwischen .. und ... in Ruby
- 9. Unterschied zwischen "" und "" in Python
- 10. Unterschied zwischen // und /// in C#
- 11. Unterschied zwischen. und #
- 12. MySQL: Unterschied zwischen ', `,' und '
- 13. C++ Unterschied zwischen '//' und '///'
- 14. Unterschied zwischen String.Empty und ""
- 15. Unterschied zwischen = und: =
- 16. Unterschied zwischen Vorzeichen & und *?
- 17. VBA: Unterschied zwischen & und +
- 18. Unterschied zwischen "**/* /" und "** /"?
- 19. Unterschied zwischen $ # und $ {# @}
- 20. Unterschied zwischen '#', '%' und '$'
- 21. Unterschied zwischen numpy.logical_and und &
- 22. Unterschied zwischen // und http: //
- 23. Was ist der Unterschied zwischen spin_lock und raw_spin_lock()?
- 24. Unterschied zwischen pthread_spinlock und boost :: smart_ptr :: spinlock?
- 25. Unterschied zwischen -Wconversion zwischen gcc und g ++
- 26. Was ist der Unterschied zwischen BSTR und _bstr_t?
- 27. Unterschied zwischen org.apache.spark.ml.classification und org.apache.spark.mllib.classification
- 28. Unterschied zwischen layoutinflater.inflate und layoutinflater.from
- 29. Unterschied zwischen PyMODINIT_FUNC und PyModule_Create
- 30. Unterschied zwischen RASPHONE.exe und RASDIAL.exe