YuLiHN / kinect2_ros2

18 stars 6 forks source link

Unexplained Poor performance? #5

Open leahcornelius opened 1 year ago

leahcornelius commented 1 year ago

Using protonect i get processing rates of 100hz (60hz if cpu mode) and smooth output. Using this wrapper the reported depth processing rate is 0.3hz (but two lines above is the lines from libfreekinect "open gl depth packet processor ~44hz" so something odd there). I imagine the performance over network will be poor even if I add compression (I might try a LAN between laptop and PC using ethernet) but this makes me think the main latency is something to do with ROS?

Not sure if you have any pointers or experience as to what is causing this difference between protonect and this wrapper? I assumed performance would be at worst the same if not marginally better due to the lack of a GUI/viewer adding overhead?

YuLiHN commented 1 year ago

Hey,

The kinect2 only support 30hz while sending images. https://github.com/code-iai/iai_kinect2/issues/357

As for the gap between Protonect and ROS2 packages, I tested on my PC:

using Protonect image depth processing: ~180hz color processing: ~130hz

using kinect2_ros2: image depth processing: ~890hz (with cuda) color processing: ~130hz both publish rate is limited at 30hz.

so on my PC there is barely no performance loss in term of processing rate. I am not sure how you connect your machines, maybe try to use ethernet and make sure you use USB3.0. Lacking GUI/Viewer could also be a potential problem because ROS2 takes time to deserialize the message. https://discourse.ros.org/t/ros2-speed/20162/3