I just now started to try out the hand tracking module and have a few questions:
1) I remember I saw somewhere a table listing what raw streams are used by the different algorithms. I remember that for the hand tracking algorithm only used the depth stream. Since this stream can achieve quite high frame rate (I tested it and got 125, using 640x240 resolution), why is the hand tracking frame rate I get 55. Looking at the task manager, CPU doesn't seem to be the bottleneck. Can I configure the algorithm to use the higher rate streams?
2) Looking around the internet, there seem to be quite a large number of academic work related to hand tracking (including articles from Intel). Can we know what work is the current implementation based on? Are there any other implementation available (Intel or 3rd party)?
1) It will definitely depend on your machine specs. One thing is capturing the frames, another thing is processing them.
To get the best performance, first of all you would need to use multiple threads, one thread to acquire frames, and another to process the frames. They have to be running in parallel. The processing part needs to finish processing a frame in less than say, 10ms, if you are acquiring frames at 100Hz. That's a very short time, specially for doing object detection or tracking, etc. It can be done but it is not trivial at all.
Now, since the RealSense SDK is closed source I have no idea how the hand tracker module is implemented. Maybe it runs in a single thread?, who knows.
2) Again, because it is closed source, no, we don't know. There are many implementations out there, and you could even implement your own. I can't suggest you one in particular because they all are context dependent, so some will work better than others depending on your actual requirements. Again, even if there's an implementation out there, it is not trivial to just use it in many cases.