2017-05-17 8 views
0

Ich betreibe einen Ros-Publisher/Subscriber-Knoten, der ein einzelnes Bild von einem/image_pub-Thema empfängt, einige Bearbeitungen vornimmt und die Ergebnisse zu/results veröffentlicht. Das image_pub-Thema wird mit 20 Hz veröffentlicht, aber mein Publisher/Subscriber-Knoten läuft mit 12 Hz (ich fand es mit rostopic hz/results). Gibt es eine Möglichkeit, die Geschwindigkeit zu verbessern oder meinem Programm zu sagen, dass es bei 20 Hz läuft? Zu Beginn lief es bei 20Hz. Dann habe ich mein Linux zum Mittagessen ausgeschaltet, kam zurück und startete mein Programm neu. Jetzt läuft es bei 12 Hz. Ich habe es immer wieder neu gestartet, läuft aber immer noch mit 12 Hz. Irgendeine Lösungsmöglichkeit..?ROS-Publisher-Geschwindigkeit

Antwort

0

Wenn Ihre Bildverarbeitung länger als 1/20 Sekunden dauert, gibt es keine Möglichkeit, die 20Hz zu erreichen. Ist dies nicht der Fall ist, dann wird die folgende Hauptschleife des Job

ros::Rate publish_rate(20); 
while(ros::ok()) 
{ 
    // do some processing 
    publisher.publish(image); 
    publish_rate.sleep(); 
} 

Die ros::Rate werden sicherstellen, dass die richtige Menge an Zeit schlafen die 20Hz zu erreichen. Stellen Sie auch sicher, in Release-Modus (catkin_make -DCMAKE_BUILD_TYPE=Release) zu kompilieren, da dies Ihren Code mit einer guten Marge beschleunigen wird.

+0

Ja, Sie haben Recht, das Problem war in meinem Teilnehmer Rückruf, ich verwende ORB-Funktionen, und manchmal erkennt es eine große Anzahl von Feature-Punkte, die Verarbeitung schwierig. So, jetzt habe ich die Anzahl der Funktionen eingeschränkt und es funktioniert besser. Danke für die Hilfe :) – usmanarif